资源预览内容
第1页 / 共38页
第2页 / 共38页
第3页 / 共38页
第4页 / 共38页
第5页 / 共38页
第6页 / 共38页
第7页 / 共38页
第8页 / 共38页
第9页 / 共38页
第10页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第五讲 门电路的描述和 设计实例5.1基本门电路的描述一个逻辑电路是由许多逻辑门和开关所组 成,因此用逻辑门的模型来描述逻辑电 路结构是最直观的。VerilogHDL提供了 一些描述门类型的关键字,可以用于门 级结构建模。 VerilogHDL内含的基本元件模型共有26种 ,其中14种为基本门级元件,12种为开 关级元件,5.1.1门电路列表多输入门and(与门) nand(与非门) or (或门)nor (或非门)xor(异或门) xnor (异或非门) 多输出门buf (缓冲器)not(非门)三态门bufif0 (高电平使能缓冲期) bufif1 (低 电平使能缓冲期)notif0 (高电平使能 非门) notif1(低电平使能非门) 上拉,下 拉电阻pullup(上拉电阻) pulldown(下拉电阻 )门与开关的说明语法可以用标准的声明语句格式和一个简 单的实例引用加以说明 基本格式如下:, 门的类型是门声明语句所必须的,它可以是VerilogHDL语 法规定的26门类型中的任意一种。驱动能力和延时是可 选的,可根据不同的情况选不同的值或不选。门实例1 是在本模块中引用的第一个这种类型的门的名称及端口 定义,而门实例n是引用的第n个这种类型的门的名称及 端口定义。 例:nand #10nd1(a,data,clock,clear); 这个例子说明在模块中使用了一个名为nd1的与非门,输 入为clock,data,clear 输出为a,输出与输入得延时为10个 单位时间5.1.2基本门的逻辑真值表nand01xznor01xz01111010xx 110xx10000 x1xxxxx0xx z1xxxzx0xxNand和nor真值表xor 01xzxnor01xz001xx010xx110xx101xxxxxxxxxxxxzxxxxzxxxxXor和xnor真值表5.1.3门级延时的说明门级延时反映的是信号的变化从门级元件 的任意输入端口流动到任一输出端口所 经历的传输延迟 主要可以分为: 上升延时 下降延时 截至延时 到不定态的 延时5.1.4门级延时量的基本表示方式w当门级延时量只包含一个延时值时,也就是说 当门级延时说明部分是#d形式时,延时值d将 同时代表元件实例的上升延时值,下降延时值 ,截至延时值,到不定态的延时值, w当门级延时量包含两个延时值是,也就是当门 级延时说明部分是#(d1,d2)形式时,元件 实例的上升延时值,下降延时值将指定, w同理,当有3个延时值,前三个将指定 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+cin; endmodulemodule compare(equal,a,b);parameter size=1;output equal;input size-1:0 a, b;assign equal =(a=b)? 1 : 0;endmodule(2)比较器(3)3-8译码器module decoder(out,in); output 7:0 out; input 2:0 in;assign out = 1b16d0)begincount6d0)begincount6d0)begincount6d0)begincount6d0)begincount=count-1;end elsebeginstates=state0;/等待结束,回到状态0count=6d0;end enddefault: begin count=hx; states=hx; endendcaseend end(续4)简单的交通灯/根据当前状态输出灯光控制 always(negedge clk) begin case(states) state0: lights=lights1; state1: lights=lights1; state2: lights=lights2; state3: lights=lights3; state4: lights=lights4; state5: lights=lights1; default: lights=hx; endcase end endmodule(续5)简单的交通灯设计示例(续)设计示例(续)module fsm (Clock, Reset, A, F, G); input Clock, Reset, A; output F,G; reg F,G; reg 1:0 state ;parameter Idle = 2b00, Start = 2b01, Stop = 2b10, Clear = 2b11;always (posedge Clock)if (!Reset)begin state = Idle; F=0; G=0; endelse设计示例(续)case (state)idle: begin if (A) state = Start;G=0;endstart: if (!A) state = Stop;Stop: begin if (A) state = Clear;F = 1;endClear: begin if (!A) state =Idle;F=0; G=1;endendcase endmodule 设计示例(续)还可以用另一个Verilog HDL模型来表示同一个有限状态 ,见下例:module fsm (Clock, Reset, A, F, G);input Clock, Reset, A; output F,G; reg F,G; reg 3:0 state ;parameter Idle = 4b1000, Start = 4b0100, Stop = 4b0010, Clear = 4b0001;设计示例(续)always (posedge clock)if (!Reset)begin state = Idle; F=0; G=0;endelsecase (state)Idle: begin if (A) state = Start;G=0;endStart: if (!A) state = Stop;Stop: begin if (A) state = Clear;设计示例(续)F = 1;endClear: begin if (!A) state =Idle;F=0; G=1;enddefault: state =Idle;endcaseendmodule 设计示例(续)我们还可以用另一种风格的Verilog HDL模型来表示同一个有限状态。在这 个模型中,我们把用always语句在时钟沿触发条件下的状态变化放在一个 独立的块中, 而把在状态控制下的两个开关分两个独立的组合逻辑always 块来描述。见下例:module fsm (Clock, Reset, A, F, G); input Clock, Reset, A; output F,G; reg 1:0 state ; reg F,G;parameter Idle = 2b00, Start = 2b01, Stop = 2b10, Clear = 2b11;设计示例(续)always (posedge Clock)if (!Reset)begin state = Idle; endelsecase (state)Idle: if (A) state = Start; Start: if (!A) state = Stop;Stop: if (A) state = Clear;Clear: if (!A) state = Idle; default: state = 2 bxx;endcase设计示例(续)always (state or Reset or A)beginif ( !Reset) F = 0;else if (state = Stop) F = 1;end always (state or Reset or A)beginif (! Reset) G = 0;else if (state = Clear) G = 1;endendmodule
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号