第5章-时序电路的Verilog设计课件

上传人:沈*** 文档编号:241645606 上传时间:2024-07-12 格式:PPTX 页数:45 大小:1,014.44KB
返回 下载 相关 举报
第5章-时序电路的Verilog设计课件_第1页
第1页 / 共45页
第5章-时序电路的Verilog设计课件_第2页
第2页 / 共45页
第5章-时序电路的Verilog设计课件_第3页
第3页 / 共45页
点击查看更多>>
资源描述
E D A技术实用教程第第5章章 时序电路的时序电路的VerilogVerilog设计设计5.1 基本时序元件的基本时序元件的Verilog表表述述边沿触发型边沿触发型D触发器触发器基本时序元件基本时序元件 主要包括不同结构功能和不同用途的主要包括不同结构功能和不同用途的触发器触发器和和锁存器锁存器。5.1.1 基本触发器及其基本触发器及其Verilog表述表述D触发器时序波形触发器时序波形只有当只有当时钟上升沿到来上升沿到来时,输出出值Q的数的数值才会随才会随输入口入口D的数据而改的数据而改变,称,称为更新更新 E D A技术实用教程例例5-1:基本:基本D触发器触发器 module DFF1(CLK,D,Q);output Q;input CLK,D;reg Q;always (posedge CLK)/CLK上升沿启上升沿启动Q=D;/CLK有上升沿有上升沿时,D被被锁入入Qendmodule时序电路通常都由时序电路通常都由过程语句过程语句来描述。来描述。敏感信号表中的逻辑表述敏感信号表中的逻辑表述posedge CLK是时钟边沿检测函是时钟边沿检测函数,也可看成是对时钟信号数,也可看成是对时钟信号CLK的上升沿敏感的敏感变量的上升沿敏感的敏感变量或敏感表述:或敏感表述:当输入信号当输入信号CLK出现一个上升沿时,敏感信出现一个上升沿时,敏感信号号posedge CLK将启动过程语句将启动过程语句。凡是凡是边沿边沿触发触发性质性质的时序元件,必须使用的时序元件,必须使用边沿敏感表述边沿敏感表述如如“posedge CLK”。negedge CLK是时钟是时钟下降沿下降沿敏感的表述。敏感的表述。E D A技术实用教程5.1.2 用用UDP表述表述D触发器触发器例例5-2:含异步复位控制的边沿触发型:含异步复位控制的边沿触发型D触发器触发器UDP表述表述 primitive EDGE_UDP(Q,D,CLK,RST);input D,CLK,RST;output Q;reg Q;table/D CLK RST:Q :Q+0 (01)0 :?:0;1 (01)0 :?:1;?(1?)0 :?:-;?(?0)0 :?:-;1 0 1 :?:0;1 1 1 :?:0;0 0 1 :?:0;0 1 1 :?:0;endtableendprimitiveCLK以下的以下的(01)表示时钟)表示时钟上升沿触发,上升沿触发,(10)表示下降)表示下降沿触发。沿触发。Q以下数据以下数据“?”表示原状态(现表示原状态(现态)任意数据。态)任意数据。Q+以下数据表示以下数据表示次态数据,次态数据,“-”表示保持原状态。表示保持原状态。RST复位信号,高复位信号,高电平有效。电平有效。E D A技术实用教程5.1.2 用用UDP表述表述D触发器触发器例例5-3:含异步复位控制的边沿触发型:含异步复位控制的边沿触发型D触发器顶层表述触发器顶层表述 module DFF_UDP(Q,D,CLK,RST);input D,CLK,RST;output Q;EDGE_UDP U1(Q,D,CLK,RST);endmodule含异步复位控含异步复位控制的边沿触发制的边沿触发型型D触发器触发器 E D A技术实用教程 E D A技术实用教程5.1.3 含异步复位和时钟使能的含异步复位和时钟使能的D触发器触发器及其及其Verilog表述表述含异步复位和含异步复位和时钟使能的边时钟使能的边沿沿D触发器触发器实用的实用的D触发器标准模块,除了触发器标准模块,除了数据端数据端D、时钟端时钟端CLK和和输出端输出端Q,还有两个控制端,即,还有两个控制端,即异步复位端异步复位端RST和和时钟使时钟使能端能端EN。“异步异步”指独立于时钟控制的控制端。指独立于时钟控制的控制端。异步复位异步复位RST指任指任何时刻,只要何时刻,只要RST=0,触发器的输出端,触发器的输出端Q即刻被清零,与即刻被清零,与时钟状态无关。时钟状态无关。时钟使能时钟使能EN的功能是:只有当的功能是:只有当EN=1时,时钟上升沿才有时,时钟上升沿才有效。效。例例5-4:含异步复位和时钟使能的边沿:含异步复位和时钟使能的边沿D触发器触发器 module DFF2(CLK,D,Q,RST,EN);output Q;input CLK,D,RST,EN;reg Q;always (posedge CLK or negedge RST)beginif(!RST)Q=0;else if (EN)Q=D;endendmodule含异步复位控制的边沿触发型含异步复位控制的边沿触发型D触发器时序触发器时序RST有效有效RST有效有效 EN无无效效EN有效有效 E D A技术实用教程5.1.4 含同步复位控制的含同步复位控制的D触发器及其触发器及其Verilog表述表述含同步复位的含同步复位的边沿边沿D触发器触发器在输入端口在输入端口D处加了一个处加了一个2选选1多路选择器。多路选择器。“同步同步”指某控制信号只有在时钟信号有效时才起作用。指某控制信号只有在时钟信号有效时才起作用。比如同步清比如同步清0信号必须在时钟边沿信号到来时,才能实现信号必须在时钟边沿信号到来时,才能实现清清0功能。功能。同步清同步清0控制控制D触触发器的时序图发器的时序图时钟信号无效时钟信号无效时钟信号有效时钟信号有效 E D A技术实用教程例例5-5:含同步复位的:含同步复位的 边沿边沿D触发器触发器 module DFF3(CLK,D,Q,RST);output Q;input CLK,D,RST;reg Q;always (posedge CLK)beginif (RST=1)Q=0;else if (RST=0)Q=D;endendmodule注意敏感信号表中只放了对注意敏感信号表中只放了对CLK上升沿的敏感表述,表明此上升沿的敏感表述,表明此过程中所有其他输入信号都随时钟过程中所有其他输入信号都随时钟CLK而同步。而同步。例例5-6:含同步复位的:含同步复位的 边沿边沿D触发器触发器 module DFF3(CLK,D,Q,RST);output Q;input CLK,D,RST;reg Q,Q1;always (RST)beginif (RST=1)Q1=0;else Q1=D;end always (posedge CLK)Q=Q1;endmodule例例5-7:含同步复位的边沿:含同步复位的边沿D触发器(条件赋值语句)触发器(条件赋值语句)module DFF2(input CLK,input D,input RST,output reg Q);always (posedge CLK)Q=RST?1b0:D;endmodule E D A技术实用教程5.1.5 基本锁存器及其基本锁存器及其Verilog表述表述锁存器模块锁存器模块电平触发型锁存器电平触发型锁存器:时钟:时钟CLK为高电平时,输出为高电平时,输出Q的数值的数值才会随才会随D输入的数据而改变,输入的数据而改变,CLK为低电平时,将保存其为低电平时,将保存其在高电平时锁入的数据。在高电平时锁入的数据。锁存器模块内锁存器模块内部逻辑电路部逻辑电路时钟输入,数据时钟输入,数据锁存允许控制端锁存允许控制端锁存器的锁存器的时序波形时序波形 E D A技术实用教程例例5-8:电平触发型锁存器:电平触发型锁存器 module LATCH1(CLK,D,Q);output Q;input CLK,D;reg Q;always (D or CLK)if (CLK)Q=D;endmoduleCLK和和D任何一个发生变化时,执行任何一个发生变化时,执行always结构中的结构中的if语语句。句。if语句未包含所有可能情况,即当语句未包含所有可能情况,即当D发生变化但发生变化但CLK保持保持为为0或或CLK从从1变为变为0时,时,if语句不满足语句不满足CLK=1的条件,跳的条件,跳过后面的赋值语句过后面的赋值语句Q=D,Q保持原值。这是一个不完整保持原值。这是一个不完整的条件语句,它起到了不满足条件时,即使输入改变,输的条件语句,它起到了不满足条件时,即使输入改变,输出仍保持原值的作用。出仍保持原值的作用。对于数字电路来说,当输入改变后试图保持一个值不变,对于数字电路来说,当输入改变后试图保持一个值不变,就意味着引入了具有存储功能的元件(时序元件)。就意味着引入了具有存储功能的元件(时序元件)。E D A技术实用教程边沿触发边沿触发时序元件:采用时序元件:采用posedge或或negedge。电平触发电平触发时序元件:通过时序元件:通过不完整的条件语句不完整的条件语句。在在FPGA中,综合器引入的锁存器在许多情况下中,综合器引入的锁存器在许多情况下不属于现成的基本时序模块,需用含反馈的组合不属于现成的基本时序模块,需用含反馈的组合电路构建。而电路构建。而D触发器是现成的基本时序模块,触发器是现成的基本时序模块,可直接调用。因此锁存器比可直接调用。因此锁存器比D触发器要额外耗费触发器要额外耗费组合逻辑资源。组合逻辑资源。E D A技术实用教程5.1.6 含清含清0控制的锁存器及其控制的锁存器及其Verilog表述表述含异步清含异步清0的的锁存器锁存器含异步清含异步清0的的锁存锁存器逻辑电路器逻辑电路含异步清含异步清0的的锁存器的锁存器的时序图时序图 E D A技术实用教程例例5-9:含异步清:含异步清0的锁存器(采用连续赋值和条件操的锁存器(采用连续赋值和条件操 作符)作符)module LATCH3(CLK,D,Q,RST);output Q;input CLK,D,RST;assign Q=(!RST)?0:(CLK?D:Q);endmodule例例5-10:含异步清:含异步清0的锁存器(采用过程语句)的锁存器(采用过程语句)module LATCH3(CLK,D,Q,RST);output Q;input CLK,D,RST;reg Q;always (D or CLK or RST)if(!RST)Q=0;else if (CLK)Q=D;endmodule E D A技术实用教程5.1.7 异步时序电路的异步时序电路的Verilog表述特点表述特点可以构成时序电路的过程称为可以构成时序电路的过程称为时钟过程时钟过程。一一个时钟过程个时钟过程只能构成对应只能构成对应单一单一时钟信号的时序电路。时钟信号的时序电路。如果在某一过程中需要构成多触发器时序电路,也只能产如果在某一过程中需要构成多触发器时序电路,也只能产生对应某个单一时钟的同步时序逻辑。生对应某个单一时钟的同步时序逻辑。异步逻辑异步逻辑(多个时钟触发)的设计必须采用(多个时钟触发)的设计必须采用多个时钟过程多个时钟过程语句来构成。语句来构成。例例5-11module AMOD(D,A,CLK,Q);output Q;input A,D,CLK;reg Q,Q1;always (posedge CLK)Q1=(A|Q);always (posedge Q1)Q=D;endmodule E D A技术实用教程5.1.8 时钟过程表述的特点和规律时钟过程表述的特点和规律如果将某信号如果将某信号A定义为定义为边沿敏感时钟信号边沿敏感时钟信号,则必须在敏感信,则必须在敏感信号表中给出对应的表述,如号表中给出对应的表述,如posedge A或或negedge A;而且在;而且在always过程结构中不能再出现信号过程结构中不能再出现信号A。如果将某信号如果将某信号B定义为对应于时钟的定义为对应于时钟的电平敏感电平敏感的的异步控制信异步控制信号号,则除了在敏感信号表中给出对应的表述外,如,则除了在敏感信号表中给出对应的表述外,如posedge B或或negedge B,在在always过程结构中必须明示信号过程结构中必须明示信号B的逻辑的逻辑行为行为。注意其。注意其在表述上必须是边沿敏感信号,但电路性能在表述上必须是边沿敏感信号,但电路性能上是电平敏感的上是电平敏感的。如果某信号定义为对应于时钟的如果某信号定义为对应于时钟的同步控制信号同步控制信号(或仅仅是同(或仅仅是同步输入信号),则步输入信号),则绝不可以以任何形式出现在敏感信号表绝不可以以任何形式出现在敏感信号表中中。如果同一模块中有如果同一模块中有独立于主时钟独立于主时钟的时序或组合逻辑,必须用的时序或组合逻辑,必须用另一个过程另一个过程来描述。来描述。边沿触发型时序模块遵循规律:边沿触发型时序模块遵循规律:E D A技术实用教程注意:注意:敏感信号表中不允许出现混合信号敏感信号表中不允许出现混合信号。即敏感信号表中一旦含。即敏感信号表中一旦含有有posedge或或negedge的边沿敏感信号后,所有其他普通变量的边沿敏感信号后,所有其他普通变量都不能放在敏感信号表中。都不能放在敏感信号表中。若定义某变量为异步电平敏感信号,则在若定义某变量为异步电平敏感信号,则在if条件句中应该对条件句中应该对敏感信号表中的信号有匹配的表述敏感信号表中的信号有匹配的表述不不允许敏感信号表中定义除了异步控制信号外的信号允许敏感信号表中定义除了异步控制信号外的信号。比如。比如(posedge CLK or negedge B)敏感信号表中定义的敏感信号表中定义的B只能作为只能作为异步复位或置位控制信号,而不能作为一般意义上的异步异步复位或置位控制信号,而不能作为一般意义上的异步逻辑信号,如不允许式逻辑信号,如不允许式Q1=A&B。非复位或置位的独立于非复位或置位的独立于时钟的信号(普通异步信号)只能在其他过程中定义时钟的信号(普通异步信号)只能在其他过程中定义。例:例:always (posedge CLK or negedge RST)begin if(!RST)always (posedge CLK or negedge RST)begin if(RST=0)always (posedge CLK or negedge RST)begin if(!RST=1)always (posedge CLK or posedge RST)begin if(RST)always (posedge CLK or posedge RST)begin if(RST=1)always (posedge CLK or posedge RST)begin if(!RST=0)E D A技术实用教程例例5-12 module DFF5(CLK,D,Q,RST,DIN,OUT);output Q,OUT;input CLK,D,RST,DIN;reg Q,OUT;always (posedge CLK)beginOUT=!DIN;if (RST=1)Q=0;else if (RST=0)Q=D;endendmodule例例5-12 RTL图图 E D A技术实用教程5.2 二进制计数器及其二进制计数器及其VerilogVerilog表述表述5.2.1 简单加法计数器及其简单加法计数器及其Verilog表述表述4位二进制加法计位二进制加法计数器工作时序数器工作时序完成加完成加1操操作的加法器作的加法器4位位边沿触沿触发寄存寄存器(器(4个个D触触发器)器)CLK可看成数可看成数据锁存据锁存信号信号4位二进制加法计位二进制加法计数器数器RTL电路图电路图反馈通道反馈通道 E D A技术实用教程例例5-13:4位二进制数加法计数器位二进制数加法计数器 module CNT4(CLK,Q);output 3:0 Q;input CLK;reg 3:0 Q1;always (posedge CLK)Q1=Q1+1;/Q1具具备了了输入和入和输出的性出的性质,Q1的的输入特性是反入特性是反馈方式,方式,Q1被被综合合为内部的内部的4位寄存器。位寄存器。assign Q=Q1;endmodule例例5-14:4位二进制数加法计数器位二进制数加法计数器 module CNT4(CLK,Q);output 3:0 Q;input CLK;reg 3:0 Q;always (posedge CLK)Q=Q+1;/Verilog综合器合器对于此于此类语句具有句具有自自动转化端口方向属性的功能,化端口方向属性的功能,Q具具备了双向端口属性。了双向端口属性。endmodule E D A技术实用教程5.2.2 实用加法计数器设计实用加法计数器设计例例5-15:异步复位同步计数使能和可预置型十进制计数器异步复位同步计数使能和可预置型十进制计数器 module CNT10(CLK,RST,EN,LOAD,COUT,DOUT,DATA);input CLK,EN,RST,LOAD;/时钟,时钟使能,复位,数据加使能,复位,数据加载控制信号控制信号 input 3:0 DATA;/4位并行加位并行加载数据数据 output 3:0 DOUT;/4位位计数数输出出 output COUT;reg 3:0 Q1;reg COUT;assign DOUT=Q1;/将内部寄存器的将内部寄存器的计数数结果果输出至出至DOUT always (posedge CLK or negedge RST)/时序序过程程 begin if(!RST)Q1=0;/RST=0时,对内部寄存器内部寄存器单元异步清元异步清0 else if(EN)begin/同步使能同步使能EN=1,则允允许加加载或或计数数 if(!LOAD)Q1=DATA;/当当LOAD=0,向内部寄存器加向内部寄存器加载数据数据 else if(Q19)Q1=Q1+1;/当当Q1小于小于9时,允,允许累加累加 else Q1=4b0000;end/否否则一个一个时钟后清后清0返回初返回初值 end always (Q1)/组合合过程程 if(Q1=4h9)COUT=1b1;else COUT=1b0;endmodule E D A技术实用教程RST在任意时刻有效时,即使在任意时刻有效时,即使CLK非上升沿时,计数也能非上升沿时,计数也能即刻清即刻清0。EN=1且在时钟且在时钟CLK的上升沿时间范围的上升沿时间范围LOAD=0时,时,4位输位输入数据入数据DATA=7被加载,在被加载,在LOAD=1后作为计数器的计数初后作为计数器的计数初值,计数到值,计数到9时,时,COUT输出进位输出进位1。注意。注意LOAD是同步加载是同步加载。EN=1,RST=1,LOAD=1时,计数正常进行。时,计数正常进行。LOAD=0但但CLK无无上升沿,上升沿,所以没有所以没有进行加载进行加载计数从计数从7到到8时有毛刺,因为时有毛刺,因为7(0111)到)到8(1000)的逻辑变化最大,每一位都发生反)的逻辑变化最大,每一位都发生反转,导致各位信号传输路径不一致性增大转,导致各位信号传输路径不一致性增大 E D A技术实用教程第一个条件语句第一个条件语句 if(!RST)构成构成RST接于寄存器下方的异步接于寄存器下方的异步清清0端端CLR。第二第二个条件句个条件句if(EN)构成构成EN接于寄存器左侧的使能端接于寄存器左侧的使能端ENA。第三第三个条件句个条件句if(LOAD)构成构成LOAD接于上面的多路选择器,接于上面的多路选择器,使之控制选择来自使之控制选择来自DATA的数据,还是来自另一条多路选择的数据,还是来自另一条多路选择器的数据。器的数据。RTL电路电路if(!RST)if(EN)if(LOAD)E D A技术实用教程不完整的条件语句和语句不完整的条件语句和语句Q1=Q1+1,构成了加,构成了加1加法器和加法器和4位寄存器。位寄存器。语句语句(Q19)构成了小于比较器,比较器的输出信号控制左构成了小于比较器,比较器的输出信号控制左侧多路选择器。侧多路选择器。第二第二个过程语句构成了纯组合电路模块,即一个等式比较器,个过程语句构成了纯组合电路模块,即一个等式比较器,作进位输出。作进位输出。RTL电路电路Q19第二个过程语句第二个过程语句Q1=Q1+1不完整不完整条件语句条件语句 E D A技术实用教程5.3 移位寄存器的移位寄存器的VerilogVerilog表述与设计表述与设计5.3.1 含同步预置功能的移位寄存器设计含同步预置功能的移位寄存器设计例例5-16:含同步预置功能的含同步预置功能的8位并行输入串行输出移位并行输入串行输出移位寄存器位寄存器 module SHFT1(CLK,LOAD,DIN,QB);output QB;input CLK,LOAD;input 7:0 DIN;reg 7:0 REG8;always (posedge CLK)if(LOAD)REG8=DIN;else REG8 6:0=REG87:1;assign QB=REG80;endmoduleCLK-移位时钟信号移位时钟信号DIN7:0-8位并行预置数据端口位并行预置数据端口LOAD-并行数据预置使能控制信号并行数据预置使能控制信号QB-串行输出端口串行输出端口 E D A技术实用教程第三个时钟到来时,第三个时钟到来时,LOAD正好是高电平,此时正好是高电平,此时DIN口上口上的的8位数据位数据9B被锁入被锁入REG8中。中。第四第四个时钟以及以后的时钟信号都是移位时钟。个时钟以及以后的时钟信号都是移位时钟。由于赋值语句由于赋值语句QB=REG80属于并行性质的连续赋值语句,属于并行性质的连续赋值语句,在过程结构的外面,它的执行无需移位时钟信号。在并行在过程结构的外面,它的执行无需移位时钟信号。在并行锁存锁存DIN数据的时钟上升沿到来时刻(第三个时钟),便数据的时钟上升沿到来时刻(第三个时钟),便将此置入数据的第一位输出到将此置入数据的第一位输出到QB了,即最低位输出要早于了,即最低位输出要早于移位时钟(第四个时钟)一个周期。移位时钟(第四个时钟)一个周期。工作时序工作时序 E D A技术实用教程5.3.2 使用移位操作符设计移位寄存器使用移位操作符设计移位寄存器例例5-17:4位串行输入串行输出移位寄存器位串行输入串行输出移位寄存器 module SHFT4(DIN,CLK,RST,DOUT);input CLK,DIN,RST;output DOUT;reg 3:0 SHFT;always (posedge CLK or posedge RST)if(RST)SHFT=4B0;else begin SHFT1);SHFT3=DIN;end assign DOUT=SHFT 0;endmodule E D A技术实用教程5.4 可预置型计数器设计可预置型计数器设计可预置型计数器可预置型计数器能实现模可控计数器功能,方法是将计数能实现模可控计数器功能,方法是将计数进位输出端与预置数加载输入信号端或计数复位端相接。进位输出端与预置数加载输入信号端或计数复位端相接。四种控制信号输入四种控制信号输入方式:同步清方式:同步清0,异步清,异步清0,同步加载和,同步加载和异步加载。异步加载。同步清同步清0和和异步清异步清0模式的原理:设定计数模为模式的原理:设定计数模为N,当计数,当计数到到N时,对计数器发出一个清时,对计数器发出一个清0信号,使其从头开始计数,信号,使其从头开始计数,以此循环往复。以此循环往复。同步加载同步加载和和异步加载异步加载模式的原理:对于给定的模模式的原理:对于给定的模N,当计,当计数满到溢出时,或限制其计数到某值时,发出一个信号,数满到溢出时,或限制其计数到某值时,发出一个信号,控制计数器的加载预置端,使计数器加载某值控制计数器的加载预置端,使计数器加载某值M。时序电路在清时序电路在清0或加载信号时极易产生或加载信号时极易产生毛刺毛刺,并可能不同,并可能不同程度地影响计数器的功能。毛刺的产生与否及影响程度与程度地影响计数器的功能。毛刺的产生与否及影响程度与实现此功能的器件本身的时序特性、控制计数器计数进程实现此功能的器件本身的时序特性、控制计数器计数进程的方式、电路模块的结构乃至外界温度等因素关系密切。的方式、电路模块的结构乃至外界温度等因素关系密切。E D A技术实用教程5.4.1 同步加载计数器同步加载计数器例例5-18:4位同步加载模式计数器位同步加载模式计数器 module FDIV0(input CLK,RST,input 3:0 D,output PM,output 3:0 DOUT);reg 3:0 Q1;reg FULL;(*synthesis,keep*)wire LD;/设定定LD为仿真可仿真可测试属性属性 always (posedge CLK or negedge RST)/RST为异步控制信号异步控制信号 if(!RST)begin Q1=0;FULL=0;end else if(LD)begin Q1=D;FULL=1;end/LD为同步控制信号同步控制信号 else begin Q1=Q1+1;FULL=0;end assign LD=(Q1=4B1111);assign PM=FULL;assign DOUT=Q1;endmodule注意这里注意这里LD是是同步加载同步加载控制信号,控制信号,假定模为假定模为1111,PM是输是输出标志脉冲(标志是否出标志脉冲(标志是否在在加载数据)加载数据)E D A技术实用教程由于由于LD是同步信号,当是同步信号,当Q1=1111时,时,LD=1,等到下一个,等到下一个时钟上升沿才执行时钟上升沿才执行Q1=D,FULL=1,即即Q重装载初值重装载初值9。所以在前一个时钟周期(所以在前一个时钟周期(Q1=1111,LD=1),),FULL=0,PM=0,DOUT=1111,输出,输出F(1111);到了下一个时钟周);到了下一个时钟周期(期(Q1=9,FULL=1),),PM=1,DOUT=9,输出,输出9。预置数是预置数是9时,分频比(计数模)为时,分频比(计数模)为7(9F)。)。每一计数周期都有两个毛刺脉冲,毛刺极有可能对计数器每一计数周期都有两个毛刺脉冲,毛刺极有可能对计数器产生不良后果,如提前预置数据,这就要看此毛刺的宽度产生不良后果,如提前预置数据,这就要看此毛刺的宽度是否足够宽。是否足够宽。仿真波形仿真波形 E D A技术实用教程毛刺宽度约毛刺宽度约0.1ns,对于,对于EP1C器件不会产生不利影响,但器件不会产生不利影响,但为了能可靠技术,还是应该设法去除毛刺。为了能可靠技术,还是应该设法去除毛刺。毛刺不是很宽毛刺不是很宽时时,通过一些简单的辅助方法或利用器件本,通过一些简单的辅助方法或利用器件本身通道的分布电容,都可解决问题。例如改变程序结构,身通道的分布电容,都可解决问题。例如改变程序结构,包括改变程序的表述方式,甚至重新考虑某些端口引脚的包括改变程序的表述方式,甚至重新考虑某些端口引脚的去留或锁定方位都有可能起作用。去留或锁定方位都有可能起作用。毛刺展开后的时序毛刺展开后的时序毛刺毛刺 E D A技术实用教程还可以通过改变优化约束方式来解决毛刺问题:还可以通过改变优化约束方式来解决毛刺问题:AssignmentsSettings,选择,选择Analysis&Synthesis Settings项的项的Optimization Technique栏,单击栏,单击speed优化优化方式,或在方式,或在PowerPlay power optimization栏选择栏选择Extra effort项,或选择项,或选择Perform WYSIWYG;毛刺毛刺 E D A技术实用教程还可以通过改变优化约束方式来解决毛刺问题:还可以通过改变优化约束方式来解决毛刺问题:AssignmentsSettings,选择,选择Fitter Settings项的项的Fitter effort栏,选择栏,选择Standard Fit适配方式;或者将这些设置适配方式;或者将这些设置组合起来。或者选择更高速的组合起来。或者选择更高速的FPGA。毛刺毛刺 E D A技术实用教程5.4.2 异步加载计数器异步加载计数器例例5-19:4位异步加载模式计数器位异步加载模式计数器 module fdiv1(CLK,PM,D,DOUT,RST);input CLK;input RST;input 3:0 D;output PM;output 3:0 DOUT;reg 3:0 Q1;reg FULL;(*synthesis,probe_port,keep*)wire LD;always (posedge CLK or posedge LD or negedge RST)/RST和和LD都都设为异步控制信号异步控制信号 if(!RST)begin Q1=0;FULL=0;end else if(LD)begin Q1=D;FULL=1;end else begin Q1=Q1+1;FULL=0;end assign LD=(Q1=4B0000);assign PM=FULL;assign DOUT=Q1;endmodule注意这里注意这里LD是异步控制信号是异步控制信号 E D A技术实用教程由于由于LD是异步信号,当是异步信号,当Q1=0000时,时,LD=1,此时无须等,此时无须等到下一个时钟上升沿,立即执行到下一个时钟上升沿,立即执行Q1=D,FULL=1,即,即Q1重装载初值重装载初值8,DOUT输出输出8。在上一个时钟周期。在上一个时钟周期(Q1=1111),),DOUT输出输出F(1111),而在这个时钟周期),而在这个时钟周期(Q1=0000),),DOUT输出输出8,这样就跳过了,这样就跳过了0的输出(实的输出(实际上是刚进入际上是刚进入0的一瞬间,即刻重新赋值,的一瞬间,即刻重新赋值,0被强制隐去)。被强制隐去)。如果如例如果如例5-18那样采用那样采用LD=(Q1=4B1111)来赋值,根据上来赋值,根据上面的分析,面的分析,DOUT就会跳过就会跳过F(1111)不输出,而在输出)不输出,而在输出E(1110)之后直接重新装载预置值)之后直接重新装载预置值8并输出并输出8)。因此这)。因此这里必须采用里必须采用LD=(Q1=4B0000)。仿真波形仿真波形 E D A技术实用教程5.4.3 异步清异步清0加载计数器加载计数器例例5-20:4位异步清位异步清0模式计数器模式计数器 module fdiv1(CLK,PM,D);input CLK;input 3:0 D;/预置置计数模数模 output PM;reg FULL;(*synthesis,probe_port,keep*)reg 3:0 Q1;(*synthesis,probe_port,keep*)wire LD;always (posedge CLK or posedge RST)if(RST)begin Q1=0;FULL=1;end else begin Q1=Q1+1;FULL=0;end assign RST=(Q1=D);assign PM=FULL;endmodule E D A技术实用教程对于异步模式,无论是置位还是清零,控制脉冲都很窄,对于异步模式,无论是置位还是清零,控制脉冲都很窄,并且控制时刻的数据变化剧烈,因为被强制隐去了一个计并且控制时刻的数据变化剧烈,因为被强制隐去了一个计数值,容易产生毛刺,造成误操作,并且毛刺与器件本身数值,容易产生毛刺,造成误操作,并且毛刺与器件本身的速度性能关系很大,器件速度越低,毛刺的影响就越严的速度性能关系很大,器件速度越低,毛刺的影响就越严重。重。预置预置数数D是是9时,分频比(计数模)时,分频比(计数模)为为9(08)。)。仿真波形(仿真波形(EP1C3)由于由于EP1C3速度低,在速度低,在Q1计数的数的7与与8之之间,RST出出现了毛刺,且毛刺将了毛刺,且毛刺将D提前提前加加载进计数器数器,产生生误操作。操作。仿真波形(仿真波形(EP3C55)RST信号展开信号展开 E D A技术实用教程5.4.4 同同步清步清0加载计数器加载计数器例例5-21:4位同步清位同步清0模式计数器模式计数器 module fdiv1(CLK,PM,D);input CLK;input 3:0 D;output PM;reg FULL;(*synthesis,probe_port,keep*)reg 3:0 Q1;(*synthesis,probe_port,keep*)wire LD;always (posedge CLK)if(RST)begin Q1=0;FULL=1;end else begin Q1=Q1+1;FULL=0;end assign RST=(Q1=D);assign PM=FULL;endmodule E D A技术实用教程也存在毛刺现象,出现在也存在毛刺现象,出现在7和和8之间,是由之间,是由7和和8的逻辑数据的逻辑数据变换较大造成的,所以毛刺的宽度不会大,可用变换较大造成的,所以毛刺的宽度不会大,可用Quartus II的优化或适配模式稍作改变即可消除毛刺。的优化或适配模式稍作改变即可消除毛刺。预置数是预置数是9时,分频比(计数模)时,分频比(计数模)为为10(09)。)。仿真时序仿真时序 E D A技术实用教程5.5 时序电路硬件设计与仿真示例时序电路硬件设计与仿真示例5.5.1 编辑电路、创建工程和仿真测试编辑电路、创建工程和仿真测试十进制计数器设计示例电路十进制计数器设计示例电路CNT2LED十十进制制计数数器器CNT10十六十六进制制7段数段数码管管显示示译码器器 E D A技术实用教程例例5-15:异步复位同步计数使能和可预置型十进制计数器异步复位同步计数使能和可预置型十进制计数器 module CNT10(CLK,RST,EN,LOAD,COUT,DOUT,DATA);input CLK,EN,RST,LOAD;/时钟,时钟使能,复位,数据加使能,复位,数据加载控制信号控制信号 input 3:0 DATA;/4位并行加位并行加载数据数据 output 3:0 DOUT;/4位位计数数输出出 output COUT;reg 3:0 Q1;reg COUT;assign DOUT=Q1;/将内部寄存器的将内部寄存器的计数数结果果输出至出至DOUT always (posedge CLK or negedge RST)/时序序过程程 begin if(!RST)Q1=0;/RST=0时,对内部寄存器内部寄存器单元异步清元异步清0 else if(EN)begin/同步使能同步使能EN=1,则允允许加加载或或计数数 if(!LOAD)Q1=DATA;/当当LOAD=1,向内部寄存器加向内部寄存器加载数据数据 else if(Q19)Q1=Q1+1;/当当Q1小于小于9时,允,允许累加累加 else Q1=4b0000;end/否否则一个一个时钟后清后清0返回初返回初值 end always (Q1)/组合合过程程 if(Q1=4h9)COUT=1b1;else COUT=1b0;endmodule E D A技术实用教程共阴数码管共阴数码管输入入码输出出码代表数据代表数据00000111111000010000110100101011011200111001111301001100110401011101101501101111101601110000111710001111111810011101111910101110111A10111111100B11000111001C11011011110D11101111001E11111110001F7段数码管显示段数码管显示译码器译码器 E D A技术实用教程例例4-3:7段数码管显示译码器段数码管显示译码器 module DECL7S(input 3:0 A,output reg 6:0 LED7S);always (A)case(A)4b0000:LED7S=7b0111111;4b0001:LED7S=7b0000110;4b0010:LED7S=7b1011011;4b0011:LED7S=7b1001111;4b0100:LED7S=7b1100110;4b0101:LED7S=7b1101101;4b0110:LED7S=7b1111101;4b0111:LED7S=7b0000111;4b1000:LED7S=7b1111111;4b1001:LED7S=7b1101111;4b1010:LED7S=7b1110111;4b1011:LED7S=7b1111100;4b1100:LED7S=7b0111001;4b1101:LED7S=7b1011110;4b1110:LED7S=7b1111001;4b1111:LED7S=7b1110001;default :LED7S=7b0111111;endcase endmodule E D A技术实用教程将两个程序变为原理图可调用的元件。将两个程序变为原理图可调用的元件。设定设定CNT2LED为工程。为工程。工程的编译通过后,编辑仿真文件,注意时钟参数的设定。工程的编译通过后,编辑仿真文件,注意时钟参数的设定。设置时钟设置时钟CLK的周期的周期仿真波形仿真波形 E D A技术实用教程5.5.2 FPGA硬件测试硬件测试信号信号CLKRSTENLOADCOUT按按键键1,K1键2,K2键3,K3键4,K4LED1引脚引脚AA3AB3V3Y7B22信号信号DATA(3)DATA(2)DATA(1)DATA(0)拨码拨码4拨码4拨码4拨码4引脚引脚N22M22L21L22LED6:0LED(6)LED(5)LED(4)LED(3)LED(2)LED(1)LED(0)数数码管管LED:gLED:fLED:eLED:dLED:cLED:bLED:a引脚引脚G3B2E3D8A3C6H21 E D A技术实用教程
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!