FPGA中verilog时序逻辑电路设计.ppt

上传人:大米 文档编号:569946277 上传时间:2024-07-31 格式:PPT 页数:39 大小:372.05KB
返回 下载 相关 举报
FPGA中verilog时序逻辑电路设计.ppt_第1页
第1页 / 共39页
FPGA中verilog时序逻辑电路设计.ppt_第2页
第2页 / 共39页
FPGA中verilog时序逻辑电路设计.ppt_第3页
第3页 / 共39页
FPGA中verilog时序逻辑电路设计.ppt_第4页
第4页 / 共39页
FPGA中verilog时序逻辑电路设计.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《FPGA中verilog时序逻辑电路设计.ppt》由会员分享,可在线阅读,更多相关《FPGA中verilog时序逻辑电路设计.ppt(39页珍藏版)》请在金锄头文库上搜索。

1、 第4章 时序逻辑电路设计1.时序电路的基本概念n数字电路按照结构特点不同分为两大类:组合逻辑电路(简称组合电路)和时序逻辑电路(简称时序电路)。n组合电路是指由各种门电路组合而成的逻辑电路,输出只取决于当前输入信号的变化,与以前各时刻的输入或输出无关;组合电路没有记忆功能。例如:编/译码器、加法器等常用数字电路都属于组合电路。n时序逻辑电路是具有记忆功能的逻辑电路,记忆元件一般采用触发器。因此,时序逻辑电路由组合电路和触发器组成,其等效模型如图4.5所示。1模型n时序电路按其状态的改变方式不同,可分为同步时序逻辑电路和异步时序逻辑电路两种,在图4.5中,当CLK1与CLK2为相同信号时,该电

2、路为同步电路;当CLK1与CLK2为不同信号时,该电路为异步电路。1建立和保持时间n触发器的建立时间(Tsu)是指时钟有效沿(这里指上升沿)到来之前数据应保持稳定的时间。n触发器的保持时间(Thd)是指时钟有效沿(这里指上升沿)到来之后数据应保持稳定的时间。CLKDATADQCLKCLKDATATsuThd1.同步电路设计规则n(1)在用)在用Verilog HDL进行数字逻辑设计时,只使用进行数字逻辑设计时,只使用一个主时钟,同时只使用同一个时钟沿(上升沿或下一个主时钟,同时只使用同一个时钟沿(上升沿或下降沿)。降沿)。n(2)在)在FPGA设计中,推荐所有输入、输出信号均应设计中,推荐所有

3、输入、输出信号均应通过寄存器寄存,寄存器接口当作异步接口考虑。通过寄存器寄存,寄存器接口当作异步接口考虑。n(3)当全部电路不能用同步电路思想设计时,即需)当全部电路不能用同步电路思想设计时,即需要多个时钟来实现,则可以将全部电路分成若干局部要多个时钟来实现,则可以将全部电路分成若干局部电路(尽量以同一时钟为一个模块),局部电路之间电路(尽量以同一时钟为一个模块),局部电路之间接口当异步接口考虑。接口当异步接口考虑。n(4)电路中所有的寄存器、状态机在上电复位时必)电路中所有的寄存器、状态机在上电复位时必须有一个确定的初始态。须有一个确定的初始态。n(5)电路的实际最高频率不应大于理论最高频率

4、,)电路的实际最高频率不应大于理论最高频率,应留有设计余地。应留有设计余地。标准同步电路DFFDFFDFFDFF组合逻辑组合逻辑组合逻辑组合逻辑clock2 D触发器n1. 上升沿触发的触发器n2. 带异步复位、上升沿触发的触发器n3. 带异步复位和置位、上升沿触发的触发器n4.带异步复位和时钟使然、上升沿触发的触发器n5.带同步复位、上升沿触发的触发器上升沿触发的触发器 module dff(data,clk,q); inputdata,clk; outputq; regq; always(posedge clk) beginq=data; endendmodule 带异步复位、上升沿触发的

5、触发器 module dff_asynrst(data,rst,clk,q); inputdata,rst,clk; outputq; regq; always(posedge clk or posedge rst) begin if(rst=1b1)q=1b0;elseq=data; endendmodule 带异步复位和置位、上升沿触发的触发器 module dff_asynrst(data,rst,set,clk,q); inputdata,rst,set,clk; outputq; regq; always(posedge clk or posedge rst or posedge s

6、et) begin if(rst=1b1)q=1b0;else if(set=1b1)q=1b1;elseq=data; endendmodule 带异步复位和时钟使然、上升沿触发的触发器 module dff_asynrst(data,rst,en,clk,q); inputdata,rst,en,clk; outputq; regq; always(posedge clk or posedge rst) begin if(rst=1b1)q=1b0;else if(en=1b1)q=data; endendmodule 带同步复位、上升沿触发的触发器 module dff_synrst(d

7、ata,rst,clk,q); inputdata,rst,clk; outputq; regq; always(posedge clk) begin if(rst=1b1)q=1b0;else q=data; endendmodule 移位寄存器u移位寄存器是一种在时钟脉冲的作用下,将寄存器中的数据按位移动的逻辑u电路主要功能:串并转换串行输入串行输出串行输入并行输出并行输入串行输出 串入串出移位寄存器串入串出移位寄存器u基本串入串出移位寄存器原理图基本串入串出移位寄存器原理图 8位移位寄存器由位移位寄存器由8个个D触发器串联构成,在触发器串联构成,在时钟信号的作用下,前级的数据向后移动时钟

8、信号的作用下,前级的数据向后移动 串行输入串行输出移位寄存器module shift_1(din,clk,dout); input din,clk; output dout; reg dout; reg tmp1,tmp2,tmp3,tmp4,tmp5,tmp6,tmp7; always(posedge clk) begintmp1=din;tmp2=tmp1;tmp3=tmp2;tmp4=tmp3;tmp5=tmp4;tmp6=tmp5;tmp7=tmp6;dout=tmp7; endendmodule 串入并出串入并出shift registershift register4位串行输入并行

9、输出移位寄存器的逻辑电路位串行输入并行输出移位寄存器的逻辑电路如图所示。该寄存器由如图所示。该寄存器由4个同步个同步D触发器组成触发器组成这种这种D触发器的触发器的R端是是非同步清零端。端是是非同步清零端。串行输入并行输出移位寄存器module shift_2(din,clk,clr,q); input din,clk,clr; output 3:0 q; reg 3:0 q; always(posedge clk or negedge clr) beginif(clr=1b0)q=4b0000;elsebeginq0=din;q=q1; endendendmodule 并入串出并入串出shi

10、ft registershift registerv并入串出移位寄存器可以将一组二进制数并并入串出移位寄存器可以将一组二进制数并行送入一组寄存器,然后把这些数据串行从寄行送入一组寄存器,然后把这些数据串行从寄存器内输出。存器内输出。v一个同步并入串出移位寄存器的基本管脚:一个同步并入串出移位寄存器的基本管脚:并行输出输入端:并行输出输入端:data时钟脉冲输入端:时钟脉冲输入端:clk加载数据端:加载数据端:load串行数据输出端:串行数据输出端:dout并行输入串行输出移位寄存器module shift3(clk,din, load,q); input clk,load; input 3:0

11、 din; output q; reg q; reg 3:0 tmp; always(posedge clk ) beginif(load=1b1) tmp=din;elsebegintmp=tmp1;tmp0=1b0; q=tmp3; endendendmodule 计数器设计计数器设计v计数器是一种典型的时序器件,常用于对时计数器是一种典型的时序器件,常用于对时钟脉冲的个数进行计数,还用于定时,分频,钟脉冲的个数进行计数,还用于定时,分频,产生同步脉冲产生同步脉冲v按触发方式分:同步计数器和异步计数器按触发方式分:同步计数器和异步计数器v最容易的计数器设计就是最容易的计数器设计就是cntc

12、nt=cnt+1=cnt+1,但是,但是你可能得不到最好的结果你可能得不到最好的结果计数器n计数器对时钟脉冲进行计数计数器对时钟脉冲进行计数 n以递增计数器为例,介绍其以递增计数器为例,介绍其Verilog HDL设计方法设计方法n递增计数器基本引脚:递增计数器基本引脚:时钟输入端:时钟输入端:clk复位端:复位端: rst计数使然端:计数使然端:en计数输出端:计数输出端:cnt计数器设计代码module cnt_en(en,rst,clk,cnt);parameterWIDTH = 8;inputen,rst,clk;output WIDTH -1:0q;reg WIDTH -1:0q;a

13、lways(posedge clk or posedge rst)beginif(rst=1b1)cnt=8b00000000;elsecnt=cnt + 1;endendmodule Verilog HDL参考设计(参考设计(1)module count (clk,cnt);input clk;output 2:0 cnt;reg 2:0 cnt;always(posedge clk )beginif(cnt=7)cnt=0;elsecnt=cnt+1;endendmodulemodule cnt (clk,cnt);input clk;output 2:0 cnt;reg 2:0 cnt;

14、reg 2:0 next_cnt;always(cnt )begincase(cnt)3h0:next_cnt=3h1; 3h1:next_cnt=3h2; 3h2:next_cnt=3h3; 3h3:next_cnt=3h4; 3h4:next_cnt=3h5; 3h5:next_cnt=3h6; 3h6:next_cnt=3h7; 3h7:next_cnt=3h0; default:next_cnt=3b000;endcaseendalways(posedge clk )cnt=next_cnt;endmoduleVerilog HDL参考设计(参考设计(2) 问题思考问题思考1.1.上述

15、描述的是一个模为多少的计数器?上述描述的是一个模为多少的计数器?2.2.请自行设计一个同步模请自行设计一个同步模1212计数器计数器3.3.在在2 2基础上进行修改,设计一个带异步基础上进行修改,设计一个带异步复位的模复位的模1212计数器计数器4.4.同步复位的模同步复位的模1212计数器如何设计?计数器如何设计? 项目设计项目设计1一、目的一、目的(1)(1)实实现现带带计计数数允允许许和和复复位位端端的的十十进进制制、六进制和六进制和6060进制计数器;进制计数器;(2)(2)掌握计数器类型模块的描述方法;掌握计数器类型模块的描述方法;(3)(3)掌掌握握VeriogVeriog HDL

16、HDL模模块块的的层层次次化化设设计计方法。方法。 二、说明二、说明 计计数数器器是是数数字字电电路路系系统统中中最最基基本本的的功功能能模模块块之之一一。设设计计十十进进制制、六六进进制制和和100100进进制制计计数数器器,要要求求计计数数器器有有计计数数允允许许和和复复位位输输入入及及进进位位输输出出功功能能。计计数数时时钟钟可可以以用用1Hz1Hz信信号号,用用LEDLED显显示计数值。示计数值。 本本设设计计要要求求用用仿仿真真和和测测试试两两种种手手段段来来验验证证计计数数器器的的功功能能。实实验验时时,可可以以通通过过修修改改十十进进制制计数器的设计得到六进制、计数器的设计得到六

17、进制、100100进制计数器。进制计数器。三、设计要求三、设计要求(1) (1) 完成各模块的完成各模块的VerilogVerilog HDL HDL设计编码;设计编码;(2) (2) 进行功能仿真;进行功能仿真;(3) (3) 下载并验证计数器功能;下载并验证计数器功能;(4) (4) 如如果果6060进进制制计计数数器器要要求求用用6 6进进制制和和1010进进制制计计数数器器搭搭建建电电路路,请请画画出出设设计计连连接接图图,并并完成设计编码和验证。完成设计编码和验证。分频器设计n在硬件电路设计中时钟信号是最重要的在硬件电路设计中时钟信号是最重要的信号之一。信号之一。n在数字电路中,常需

18、要对较高频率的时在数字电路中,常需要对较高频率的时钟进行分频操作,得到较低频率的时钟钟进行分频操作,得到较低频率的时钟信号。信号。分频器设计分频器设计u2 2的整数次幂的分频器设计;的整数次幂的分频器设计;u偶分频电路设计;偶分频电路设计;u占空比为占空比为1:151:15的分频电路设计。的分频电路设计。 用用VerilogHDLVerilogHDL语语言言完完成成对对时时钟钟信信号号 CLK CLK 的的 2 2 分分频频, 4 4 分分频频, 8 8 分分频频, 16 16 分分频频。 这这也也是是最最简简单单的的分分频频电电路路,只只需需要要一一个个计计数数器器即即可可 。2 2、4 4

19、、8 8、1616分频电路设计分频电路设计2的整数次幂的分频器module div1(clk,rst,clk2,clk4,clk8,clk16);inputrst,clk;outputclk2,clk4,clk8,clk16;wire clk2,clk4,clk8,clk16;reg 3:0cnt;always(posedge clk or posedge rst)beginif(rst=1b1)cnt=4b0000;else cnt=cnt+1;endassignclk2 = cnt0;assignclk4 = cnt1;assignclk8 = cnt2;assignclk16= cnt3

20、;endmodule 电路的功能仿真波形 6 6分频电路设计与实现分频电路设计与实现 对对于于分分频频倍倍数数不不是是 2 2 的的整整数数次次幂幂的的情情况况,我我们们只只需需要要对对源源代代码码中中的的计计数数器器进进行行一一下下计计数数控控制制就就可可以以了了,如如下下面面用用VHDLVHDL设设计计一一个个对对时时钟钟信信号号进进行行 6 6 分分频频的的分频器分频器 电路的仿真波形图电路的仿真波形图 在在进进行行硬硬件件设设计计的的时时候候,往往往往要要求求得得到到一一个个占占空空比比不不是是 1:1 1:1 的的分分频频信信号号,这这时时仍仍采采用用计计数数器器的的方方法法来来产产

21、生生占占空空比比不不是是 1:1 1:1 的的分分频频信信号号。下下面面源源代代码码描描述述的的是是这这样样一一个个分分频频器器:将将输输入入的的时时钟钟信信号号进进行行 16 16 分分频频,分分频频信信号号的的占占空空比比为为 1:15 1:15 ,也也就就是是说说,其其中中高高电电位位的的脉脉冲冲宽宽度为输入时钟信号的一个周期。度为输入时钟信号的一个周期。 占空比占空比1:151:15分频电路设计分频电路设计占空比为1:15的分频电路设计 module div1_15(clk,rst, clk16);inputrst,clk;outputclk16;regclk16;reg 3:0cnt

22、;always(posedge clk or posedge rst)beginif(rst=1b1)cnt=4b0000;else cnt=cnt+1;endalways(posedge clk or posedge rst)beginif(rst=1b1)clk16=1b0;else if(clk16=15)clk16=1b1;else clk16=1b0;endendmodule 电路仿真波形图电路仿真波形图偶分频电路设计module div6(clk,rst,clk6);inputrst,clk;outputclk6;reg clk6;reg 1:0cnt;always(posedge clk or posedge rst)beginif(rst=1b1)cnt=2b00;else if(cnt=2)begincnt=2b00;clk6=clk6;end else cnt=cnt+1;endendmodule

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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