VerilogHDL第五讲Verilog实例ppt课件

上传人:日度 文档编号:150919346 上传时间:2020-11-10 格式:PPT 页数:39 大小:334KB
返回 下载 相关 举报
VerilogHDL第五讲Verilog实例ppt课件_第1页
第1页 / 共39页
VerilogHDL第五讲Verilog实例ppt课件_第2页
第2页 / 共39页
VerilogHDL第五讲Verilog实例ppt课件_第3页
第3页 / 共39页
VerilogHDL第五讲Verilog实例ppt课件_第4页
第4页 / 共39页
VerilogHDL第五讲Verilog实例ppt课件_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《VerilogHDL第五讲Verilog实例ppt课件》由会员分享,可在线阅读,更多相关《VerilogHDL第五讲Verilog实例ppt课件(39页珍藏版)》请在金锄头文库上搜索。

1、1,第五讲 门电路的描述和设计实例,2,5.1基本门电路的描述,一个逻辑电路是由许多逻辑门和开关所组成,因此用逻辑门的模型来描述逻辑电路结构是最直观的。VerilogHDL提供了一些描述门类型的关键字,可以用于门级结构建模。 VerilogHDL内含的基本元件模型共有26种,其中14种为基本门级元件,12种为开关级元件,,3,5.1.1门电路列表,4,门与开关的说明语法可以用标准的声明语句格式和一个简单的实例引用加以说明 基本格式如下: , 门的类型是门声明语句所必须的,它可以是VerilogHDL语法规定的26门类型中的任意一种。驱动能力和延时是可选的,可根据不同的情况选不同的值或不选。门实

2、例1是在本模块中引用的第一个这种类型的门的名称及端口定义,而门实例n是引用的第n个这种类型的门的名称及端口定义。 例:nand #10nd1(a,data,clock,clear); 这个例子说明在模块中使用了一个名为nd1的与非门,输入为clock,data,clear 输出为a,输出与输入得延时为10个单位时间,5,5.1.2基本门的逻辑真值表,Nand和nor真值表,6,Xor和xnor真值表,7,5.1.3门级延时的说明,门级延时反映的是信号的变化从门级元件的任意输入端口流动到任一输出端口所经历的传输延迟 主要可以分为: 上升延时 下降延时 截至延时 到不定态的延时,8,5.1.4门级

3、延时量的基本表示方式,当门级延时量只包含一个延时值时,也就是说当门级延时说明部分是#d形式时,延时值d将同时代表元件实例的上升延时值,下降延时值,截至延时值,到不定态的延时值, 当门级延时量包含两个延时值是,也就是当门级延时说明部分是#(d1,d2)形式时,元件实例的上升延时值,下降延时值将指定, 同理,当有3个延时值,前三个将指定,9,5.2组合逻辑电路设计实例(1)加法器,module adder_8(cout,sum,a,b,cin); output cout; output 7:0 sum; input cin; input7:0 a,b; assign cout,sum=a+b+ci

4、n; endmodule,10,module compare(equal,a,b); parameter size=1; output equal; input size-1:0 a, b; assign equal =(a=b)? 1 : 0; endmodule,(2)比较器,11,(3)3-8译码器,module decoder(out,in); output 7:0 out; input 2:0 in; assign out = 1b1in; /* 把最低位的1左移 in(根据从in口输入的值)位, 并赋予out */ endmodule,12,(4)BCD/七段译码器,module

5、bin7seg (data_in ,EN ,data_out ); input 3:0 data_in ; input EN ; output 6:0 data_out ; reg 6:0 data_out ; always (data_in or EN ) begin data_out = 7b1111111; if (EN = 1) case (data_in ) 4b0000: data_out = 7b1000000; / 0 4b0001: data_out = 7b1111001; / 1 4b0010: data_out = 7b0100100; / 2 4b0011: data

6、_out = 7b0110000; / 3 4b0100: data_out = 7b0011001; / 4 4b0101: data_out = 7b0010010; / 5,13,(续)BCD/七段译码器,4b0110: data_out = 7b0000011; / 6 4b0111: data_out = 7b1111000; / 7 4b1000: data_out = 7b0000000; / 8 4b1001: data_out = 7b0011000; / 9 4b1010: data_out = 7b0001000; / A 4b1011: data_out = 7b000

7、0011; / b 4b1100: data_out = 7b0100111; / c 4b1101: data_out = 7b0100001; / d 4b1110: data_out = 7b0000110; / E 4b1111: data_out = 7b0001110; / F default: data_out = 7b1111111; endcase end endmodule,14,(5)多路器,module mux2( out, a, b, sel); output out; input a, b, sel; reg out; /用电平触发的always块来设计多路器的组合

8、逻辑 always ( a or b or sel ) begin /*检查输入信号sel的值,如为1,输出out为a,如为0, 输出out为b.*/ case( sel ) 1b1: out = a; 1b0: out = b; default: out = bx; endcase end endmodule,15,(6)用门级结构描述D触发器,16,moduleflop(data,clock,clear,q,qb); inputdata,clock,clear; outputq,qb; nand#10nd1(a,data,clock,clear), nd2(b,ndata,clock),

9、nd4(d,c,b,clear), nd5(e,c,nclock), nd6(f,d,nclock), nd8(qb,q,f,clear); nand#9nd3(c,a,d), nd7(q,e,qb); not#10iv1(ndata,data), iv2(nclock,clock); endmodule,17,设计示例二,include “ flop.v ” modulehardreg(d,clk,clrb,q); inputclk,clrb; input3:0 d; output3:0q; flopf1(d0,clk,clrb,q0,), f2(d1,clk,clrb,q1,), f3(d

10、2,clk,clrb,q2,), f4(d3,clk,clrb,q3,); endmodule,18,5.3时序电路设计实例(1)触发器,module dff( q, data, clk); output q; input data, clk; reg q; always ( posedge clk ) begin q = data; end endmodule,19,(2)带置位和复位端的电平敏感型锁存器,module latch2( q, data, clk, set, reset); output q; input data, clk, set, reset; assign q= res

11、et? 0 : ( set? 1:(clk? data : q ) ); endmodule,20,(3)移位寄存器,module shifter( din, clk, clr, dout); input din, clk, clr; output 7:0 dout; reg 7:0 dout; always (posedge clk) begin if(clr)/清零 dout = 8b0; else begin dout = dout1;/左移一位 dout0 = din;/把输入信号放入寄存器的最低位 end end endmodule,21,(4)计数器,module counter1

12、( out, cout, data, load, cin, clk); output 7:0 out; output cout; input 7:0 data; input load, cin, clk; reg 7:0 out; always (posedge clk) begin if( load ) out = data; else out = out + cin; end assign cout= /只有当out7:0的所有各位都为1 /并且进位cin也为1时才能产生进位cout endmodule,22,5.4有限状态机实例,有限状态机是时序电路的通用模型,任何时序电路都可以表示成为

13、状态机。状态机有两类: (1)Moore型。下一状态只与当前状态有关。 (2)Mealy型。下一状态与当前状态和输入有关。 有限状态机本质上是由寄存器和组合逻辑电路构成的时序电路。 有限状态机设计步骤: (1)逻辑抽象,设置状态并优化。 (2)根据状态转移关系画出状态转移图。 (3)确定状态输出方程。 (4)按照状态转移图和状态输出方程,进行设计描述。一般描述状态机主要使用Case语句。,23,有限状态机的设计实例,例:简单的交通灯 state0 :汽车通行状态,汽车绿灯亮 state1 :接受行人请求后延时10秒 state2 :汽车黄灯亮 state3 :汽车红灯亮,行人绿灯亮 state

14、4 :行人黄灯亮 state5 :行人红灯亮,汽车绿灯亮,但是不响应行人请求,24,/行人过街交通灯控制器 module traffic3(rst,clk,press,lights,count); inputrst;/异步复位信号输入,高电平复位 inputclk;/状态机时钟输入 inputpress;/过街按键信号输入,高电平有效 output5:0lights;/交通灯控制输出 output5:0count; /内部信号 reg5:0count;/秒计数,最大60秒 reg2:0states;/状态值 reg5:0lights;/交通灯控制输出 parameterstate0=3d0,s

15、tate1=3d1,state2=3d2,state3=3d3,state4=3d4,state5=3d5; parameterlights1=6b001_100, lights2=6b010_100, lights3=6b100_001, lights4=6b100_010;,例:简单的交通灯,25,always(posedge rst or posedge clk) begin if(rst) begin count=6d0; states=state0; end else begin case(states) state0:/汽车通行状态,等待按键 begin if(press) beg

16、in states=state1;/如果请求键按下,转到状态1 count=6d10;/同时将count初值给定为10,灯光控制不变 end end,(续1)简单的交通灯,26,state1:/汽车通行状态,但是请求键已经按下,延时10秒后起作用 begin if(count6d0) begin count6d0) begin count=count-1; end else/计数结束,转移到下一个状态,同时为计数器赋初值 begin states=state3; count=6d30; end end,(续2)简单的交通灯,27,state3:/汽车等待,行人通行,时间30秒 begin if(count6d0) begin c

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

当前位置:首页 > 行业资料 > 教育/培训

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