我想做一个驱动CT1628的驱动,就三个脚串行输出 几段代码。
但是目前的程序编译不过,不知道怎么回事
程序要求:
COMMEND 的数据能按 顺序一位一位输出, STB脚为低(不输出时为高), 在CLK上升沿的时候输出DATA。
module CT1628_DISP(key1,key2,clk,sclk,sdata,stb);
input key1,key2,clk; //定义按键输入端口
reg cclk,cdata,cstb;
output sclk,sdata,stb; //定义SERIOL OUTPUT.
assign sclk = cclk;
assign sdata = cdata;
assign stb = cstb;
//assign en=0; //使能端口为0,数码管就可以被驱动了。
parameter dispmode ='b 00000011;
parameter writeram ='b 01000000;
parameter ramsddr ='b 11000000;
parameter dispcontrl ='b 10001111;
always@(clk)
if(key1==1)
begin
// command(cclk,cdata,cstb,dispmode);
// command(cclk,cdata,cstb,writeram);
// command(cclk,cdata,cstb,ramsddr);
// command(cclk,cdata,cstb,dispcontrl);
command(dispmode);
command(writeram);
command(ramsddr);
command(dispcontrl);
end
/*
case(c_tmp) //case语句通过的值来显示结果。
4'b0000:
c=8'b11000000; //共阳数码管显示0的段码
4'b0001:
c=8'b11111001; //共阳数码管显示1的段码
endcase
*/
task command;
//定义输出串口脚位
input [7:0] datamnd;
reg [7:0] datareg;
reg[2:0] i;
//assign datareg=datamnd;
begin
@(posedge clk)
for(i=0;i<=7;i=i+1)
begin
cclk =1'b0;
cdata=(datamnd&&i);
cclk =1'b1;
end
// datareg>>1;
end
endtask
endmodule
请高手指点
此帖出自
小平头技术问答
一周热门 更多>