CPLD与Verilog简介(6)

2019-08-29 00:32

module counter_display(clock, slin, seg, sl); //定义模块结构 input clock; //定义输入时钟引脚

input [3:0] slin; /*设定开关,slin[0]复位slin[3:1],slin[1]为时钟门控,slin[2]选择显示

方式,slin[3]选择是否显示小数点*/

output [7:0] seg; //定义数码管段输出引脚,段码 output [3:0] sl; //定义数码管选择输出引脚,位码 //parameter first=4'b1110;

reg [7:0] seg_reg; //定义数码管段输出寄存器 reg [3:0] sl_reg; //定义数码管选择输出寄存器 reg [3:0] disp_dat; //定义显示数据寄存器 reg [27:0] count; //定义计数器寄存器 reg [3:0]sw; //slin决定其状态

always@(negedge slin[1] or negedge slin[0]) //复位后,slin[1]作为时钟的门控信号。 begin

if(slin[0]==0) sw[0]=0; else sw[0]=1; end

always@(negedge slin[2] or negedge slin[0]) //slin[2]选择1、2、3、4位显示 begin

if(slin[0]==0) sw[2:1]=0;

else sw[2:1]=sw[2:1]+1; end

assign clk=sw[0]&clock; //开关1作为时钟的门控 always@(posedge clk) //定义clock信号上升沿触发 begin

count=count+1; //计数器值加1 end

always@(sw[2] or sw[1] or count[23] or count[22]) //修改该参数可以改变显示的扫描速度 begin

case({sw[2:1],count[23:22]}) //开关2作为显示方式(1、2、3、4位显示)的选择 0:sl_reg=4'b0111; 1:sl_reg=4'b1110; 2:sl_reg=4'b1101; 3:sl_reg=4'b1011; 4:sl_reg=4'b0011; 5:sl_reg=4'b0110;

26

6:sl_reg=4'b1100; 7:sl_reg=4'b1001; 8:sl_reg=4'b1000; 9:sl_reg=4'b0001; 10:sl_reg=4'b0010; 11:sl_reg=4'b0100; 12:sl_reg=4'b0000; 13:sl_reg=4'b0000; 14:sl_reg=4'b0000; 15:sl_reg=4'b0000; endcase end

always@(count[20]) begin

disp_dat=count[25:22]; end

always@(disp_dat) begin

case(disp_dat) 4'h0:seg_reg = 8'hc0; 4'h1:seg_reg = 8'hf9; 4'h2:seg_reg = 8'ha4; 4'h3:seg_reg = 8'hb0; 4'h4:seg_reg = 8'h99; 4'h5:seg_reg = 8'h92; 4'h6:seg_reg = 8'h82; 4'h7:seg_reg = 8'hf8; 4'h8:seg_reg = 8'h80; 4'h9:seg_reg = 8'h90; 4'ha:seg_reg = 8'h88; 4'hb:seg_reg = 8'h83; 4'hc:seg_reg = 8'hc6; 4'hd:seg_reg = 8'ha1; 4'he:seg_reg = 8'h86; 4'hf:seg_reg = 8'h8e; endcase end

always@(negedge slin[0] or negedge slin[3]) begin if(slin[0]==0)

//定义显示数据触发事件 //若显示的数据 //显示数码输出 //选择输出数据 //显示0 //显示1 //显示2 //显示3 //显示4 //显示5 //显示6 //显示7 //显示8 //显示9 //显示a //显示b //显示c //显示d //显示e //显示f 27

sw[3]=1; else sw[3]=!sw[3]; end

assign sl=sl_reg; //输出数码管解码结果 assign seg[6:0]=seg_reg[6:0]; //输出数码管选择 assign seg[7]=seg_reg[7]&sw[3];

endmodule

28


CPLD与Verilog简介(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:收付清算岗位资格准入考试复习要点(修改)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: