【2017年整理】一些VERILOG例题

上传人:豆浆 文档编号:1001107 上传时间:2017-05-25 格式:DOC 页数:23 大小:4.81MB
返回 下载 相关 举报
【2017年整理】一些VERILOG例题_第1页
第1页 / 共23页
【2017年整理】一些VERILOG例题_第2页
第2页 / 共23页
【2017年整理】一些VERILOG例题_第3页
第3页 / 共23页
【2017年整理】一些VERILOG例题_第4页
第4页 / 共23页
【2017年整理】一些VERILOG例题_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《【2017年整理】一些VERILOG例题》由会员分享,可在线阅读,更多相关《【2017年整理】一些VERILOG例题(23页珍藏版)》请在金锄头文库上搜索。

1、1Verilog HDL 描述例子1. 组合电路的例子例 1 4 选 1 数据选择器(if 叙述) 。module mux (a, b, c, d, s, o); input a,b,c,d; input 1:0 s; output o; reg o; always (a or b or c or d or s) begin if (s = 2b00) o = a; else if (s = 2b01) o = b; else if (s = 2b10) o = c; else o = d; end endmodule 例 2 具有三态缓冲 4 选 1 数据选择器。module mux (a,

2、 b, c, d, s, o); input a,b,c,d; input 3:0 s; output o; assign o = s3 ? a :1bz; assign o = s2 ? b :1bz; assign o = s1 ? c :1bz; assign o = s0 ? d :1bz; endmodule 例 3 采用 case 语句描述的 3-8 译码器,输出高电平有效。module mux (sel, res); input 2:0 sel; output 7:0 res; reg 7:0 res; always (sel or res) begin case (sel) 3

3、b000 : res = 8b00000001; 3b001 : res = 8b00000010; 3b010 : res = 8b00000100; 3b011 : res = 8b00001000; 3b100 : res = 8b00010000; 3b101 : res = 8b00100000; 3b110 : res = 8b01000000; 2default : res = 8b10000000; endcase end endmodule 例 4 进位输入与输出的 8 位加法器module adder(A, B, CI, SUM, CO); input CI; input

4、7:0 A; input 7:0 B; output 7:0 SUM; output CO; wire 8:0 tmp; assign tmp = A + B + CI; assign SUM = tmp 7:0; assign CO = tmp 8; endmodule 例 5 8 位比较器module compar(A, B, CMP); input 7:0 A; input 7:0 B; output CMP; assign CMP = A = B ? 1b1 : 1b0; endmodule 2 时序电路的例子例 1 上升沿触发的具有异步置位与时钟使能端的 4 位寄存器module l

5、i5 (C, D, CE, PRE, Q); input C, CE, PRE; input 3:0 D; output 3:0 Q; reg 3:0 Q; always (posedge C or posedge PRE) begin if (PRE) Q = 4b1111; else if (CE) Q = D; end endmodule例 2 具有清除端的 4 位加法计数器。module li7 (C, CLR, Q); input C, CLR; output 3:0 Q; reg 3:0 tmp; 3always (posedge C or posedge CLR) begin i

6、f (CLR) tmp = 4b0000; else tmp = tmp + 1b1; end assign Q = tmp; endmodule 例 3 具有同步置位的 4 位减法计数器。module li8 (C, S, Q); input C, S; output 3:0 Q; reg 3:0 tmp; always (posedge C) begin if (S) tmp = 4b1111; else tmp = tmp - 1b1; end assign Q = tmp; endmodule例 4 具有异步置位的 4 位加法计数器。module li9 (C, ALOAD, D, Q

7、); input C, ALOAD; input 3:0 D; output 3:0 Q; reg 3:0 tmp; always (posedge C or posedge ALOAD) begin if (ALOAD) tmp = D; else tmp = tmp + 1b1; end assign Q = tmp; endmodule例 5 同步置入一个常数的 4 位加法计数器。module lia10 (C, SLOAD, Q); input C, SLOAD; output 3:0 Q; reg 3:0 tmp; always (posedge C) begin if (SLOAD

8、) tmp = 4b1010; else tmp = tmp + 1b1; end assign Q = tmp; 4endmodule例 6 具有异步清除端的 4 位加减计数器。module lia11 (C, CLR, UP_DOWN, Q); input C, CLR, UP_DOWN; output 3:0 Q; reg 3:0 tmp; always (posedge C or posedge CLR) begin if (CLR) tmp = 4b0000; else if (UP_DOWN) tmp = tmp + 1b1; else tmp = tmp - 1b1; end a

9、ssign Q = tmp; endmodule例 7 控制信号 t 控制置数与减法计数的 100 进制计数器。module count(clk,t,td,qq1,qq2); /t 控制置数与计数,td 减计数到 0 时,td=1input t,clk;output td;output 3:0 qq1,qq2; /qq2 是高 4 位,qq1 是低 4 位wire 3:0 qq1,qq2;reg td; reg 7:0 qq;assignqq2,qq1=qq;always (posedge clk or negedge t) beginif (t=0) begin qq=1) begin qq

10、 =1) begin qq =1) begin qq chucun,则 td=1endendmodule9图 12-19 例 20 的仿真图该计数器的仿真结果如图 12-19 所示,在 t=0 时,计数器设置终值为 22,然后计数器从 0 开始加计数,当计数值为 22 时,停止计数,并使 td=1。例 21 可设置初值的加法十六进制输出计数器。该计数器从初值 data 开始,加计数到 255 后停止计数,并使输出 td=1。该计数器Verilog HDL 描述如下。module jiafa2(clk,t,td,qq1,qq2,data); /clk 时钟,t 控制置数与计数,减计数到 0 时,

11、td=1 input t,clk,data; /data 为计数初值output td; /计数器输出信号output 3:0 qq1,qq2; /qq2 是高 4 位,qq1 是低 4 位wire 3:0 qq1,qq2; wire7:0 data;reg td; reg 7:0 qq;assignqq2,qq1=qq; always (posedge clk or negedge t) /t 是异步控制置数或是计数beginif (t=0) begin qq=data; td=0; end /如果 t=0,则计数器设置初值 qq=dataelse if (t=1) & (qq 255) b

12、egin qq =qq+1; td=0; end /如果 t=1,计数器数值小于 255,则加计数else td =1; /否则, td=1endendmodule该例的仿真结果如图 12-20,可以看出, t=0 时,计数器设置初值为 F1,t=1 时,计数器开始加计数,当计数值为 FF 时,停止计数,并使 td=1。图 12-20 例 21 的仿真图例 17 摩尔微分电路有些情况下需要按键按下时,需要在按键按下时只转移一个状态,这时需要一个如图12-21 所示的微分电路。10a=1 a=0y=1s0y=0s1y=1a=1s2a=0.a yCLKR1VCCkey图 12-21 微分电路的框图

13、与状态图微分电路的 Verilog HDL 描述:module weifen (clk,a,y);input a,clk;output y;reg y;reg 1:0 state,next_state; parameter s0= 2b00,s1 = 2b01, s2 = 2b10;always (posedge clk) /状态寄存器begin state =next_state; endalways (state) /输出与次态逻辑begincase (state)s0: begin y=1;if (!a) begin next_state =s1; endelse begin next_

14、state =s0; end ends1: begin y=0;next_state =s2; ends2: begin y=1;if (a) begin next_state =s0; endelse begin next_state =s2; endenddefault: next_state =s0;endcaseendendmodule微分电路 Verilog HDL 描述的仿真结果如图 12-22 所示。图 12-22 微分电路 Verilog HDL 描述的仿真结果例 18梅里微分电路:11梅里微分电路的状态图如图 12-23 所示。图 12-23 梅里微分电路的状态图梅里微分电路

15、的 Verilog HDL 描述如下:module weifen2 (clk,a,y);input a,clk;output y;reg y;reg state,next_state; parameter s0= 2b0, s1 = 2b1;always (posedge clk) /状态寄存器begin state =next_state; endalways (state) /输出与次态逻辑begincase (state)s0: begin y=1;if (!a) begin next_state =s1; y=0; endelse begin next_state =s0; end ends1: begin y

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号