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

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

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

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

2、为同步电路;当CLK1与CLK2为不同信号时,该电路为异步电路。,1建立和保持时间,触发器的建立时间(Tsu)是指时钟有效沿(这里指上升沿)到来之前数据应保持稳定的时间。触发器的保持时间(Thd)是指时钟有效沿(这里指上升沿)到来之后数据应保持稳定的时间。,1.同步电路设计规则,(1)在用Verilog HDL进行数字逻辑设计时,只使用一个主时钟,同时只使用同一个时钟沿(上升沿或下降沿)。(2)在FPGA设计中,推荐所有输入、输出信号均应通过寄存器寄存,寄存器接口当作异步接口考虑。(3)当全部电路不能用同步电路思想设计时,即需要多个时钟来实现,则可以将全部电路分成若干局部电路(尽量以同一时钟为

3、一个模块),局部电路之间接口当异步接口考虑。(4)电路中所有的寄存器、状态机在上电复位时必须有一个确定的初始态。(5)电路的实际最高频率不应大于理论最高频率,应留有设计余地。,标准同步电路,DFF,DFF,DFF,DFF,组合逻辑,组合逻辑,组合逻辑,组合逻辑,clock,2 D触发器,1.上升沿触发的触发器2.带异步复位、上升沿触发的触发器3.带异步复位和置位、上升沿触发的触发器4.带异步复位和时钟使然、上升沿触发的触发器5.带同步复位、上升沿触发的触发器,上升沿触发的触发器,module dff(data,clk,q);inputdata,clk;outputq;regq;always(p

4、osedge clk)beginq=data;endendmodule,带异步复位、上升沿触发的触发器,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(p

5、osedge clk or posedge rst or posedge set)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,带同步复位

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

7、le 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 register,4位串行输入并行输出移位寄存器的逻辑电路如图所示。该寄存器由4个同步D触发器组成这种D触发器的R端是是非同步清零端。,串行输入并行输

8、出移位寄存器,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,并入串出shift register,并入串出移位寄存器可以将一组二进制数并行送入一组寄存器,然后把这些数据串行从寄存器内输出。一个同步并入串出移位寄存器的基本管脚:并行输出输入端:data时钟脉冲输入端:clk加载数据端:load串行数据输出端:do

9、ut,并行输入串行输出移位寄存器,module shift3(clk,din,load,q);input clk,load;input 3:0 din;output q;reg q;reg 3:0 tmp;always(posedge clk)beginif(load=1b1)tmp=din;elsebegintmp=tmp1;tmp0=1b0;q=tmp3;endendendmodule,计数器设计,计数器是一种典型的时序器件,常用于对时钟脉冲的个数进行计数,还用于定时,分频,产生同步脉冲按触发方式分:同步计数器和异步计数器最容易的计数器设计就是cnt=cnt+1,但是你可能得不到最好的结果

10、,计数器,计数器对时钟脉冲进行计数 以递增计数器为例,介绍其Verilog HDL设计方法递增计数器基本引脚:时钟输入端:clk复位端:rst计数使然端:en计数输出端:cnt,计数器设计代码,module cnt_en(en,rst,clk,cnt);parameterWIDTH=8;inputen,rst,clk;outputWIDTH-1:0q;regWIDTH-1:0q;always(posedge clk or posedge rst)beginif(rst=1b1)cnt=8b00000000;elsecnt=cnt+1;endendmodule,Verilog HDL参考设计(1

11、),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;endendmodule,module cnt(clk,cnt);input clk;output 2:0 cnt;reg 2:0 cnt;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:ne

12、xt_cnt=3h5;3h5:next_cnt=3h6;3h6:next_cnt=3h7;3h7:next_cnt=3h0;default:next_cnt=3b000;endcaseendalways(posedge clk)cnt=next_cnt;endmodule,Verilog HDL参考设计(2),问题思考,1.上述描述的是一个模为多少的计数器?2.请自行设计一个同步模12计数器3.在2基础上进行修改,设计一个带异步复位的模12计数器4.同步复位的模12计数器如何设计?,项目设计1,一、目的(1)实现带计数允许和复位端的十进制、六进制和60进制计数器;(2)掌握计数器类型模块的描述

13、方法;(3)掌握Veriog HDL模块的层次化设计方法。,二、说明 计数器是数字电路系统中最基本的功能模块之一。设计十进制、六进制和100进制计数器,要求计数器有计数允许和复位输入及进位输出功能。计数时钟可以用1Hz信号,用LED显示计数值。本设计要求用仿真和测试两种手段来验证计数器的功能。实验时,可以通过修改十进制计数器的设计得到六进制、100进制计数器。,三、设计要求(1)完成各模块的Verilog HDL设计编码;(2)进行功能仿真;(3)下载并验证计数器功能;(4)如果60进制计数器要求用6进制和10进制计数器搭建电路,请画出设计连接图,并完成设计编码和验证。,分频器设计,在硬件电路

14、设计中时钟信号是最重要的信号之一。在数字电路中,常需要对较高频率的时钟进行分频操作,得到较低频率的时钟信号。,分频器设计,2的整数次幂的分频器设计;偶分频电路设计;占空比为1:15的分频电路设计。,用VerilogHDL语言完成对时钟信号 CLK 的 2 分频,4 分频,8 分频,16 分频。这也是最简单的分频电路,只需要一个计数器即可。,2、4、8、16分频电路设计,2的整数次幂的分频器,module div1(clk,rst,clk2,clk4,clk8,clk16);inputrst,clk;outputclk2,clk4,clk8,clk16;wireclk2,clk4,clk8,cl

15、k16;reg3:0cnt;always(posedge clk or posedge rst)beginif(rst=1b1)cnt=4b0000;elsecnt=cnt+1;endassignclk2=cnt0;assignclk4=cnt1;assignclk8=cnt2;assignclk16=cnt3;endmodule,电路的功能仿真波形,6分频电路设计与实现 对于分频倍数不是 2 的整数次幂的情况,我们只需要对源代码中的计数器进行一下计数控制就可以了,如下面用VHDL设计一个对时钟信号进行 6 分频的分频器,电路的仿真波形图,在进行硬件设计的时候,往往要求得到一个占空比不是 1:

16、1 的分频信号,这时仍采用计数器的方法来产生占空比不是 1:1 的分频信号。下面源代码描述的是这样一个分频器:将输入的时钟信号进行 16 分频,分频信号的占空比为 1:15,也就是说,其中高电位的脉冲宽度为输入时钟信号的一个周期。,占空比1:15分频电路设计,占空比为1:15的分频电路设计,module div1_15(clk,rst,clk16);inputrst,clk;outputclk16;regclk16;reg 3:0cnt;always(posedge clk or posedge rst)beginif(rst=1b1)cnt=4b0000;elsecnt=cnt+1;enda

17、lways(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;regclk6;reg1:0cnt;always(posedge clk or posedge rst)beginif(rst=1b1)cnt=2b00;else if(cnt=2)begincnt=2b00;clk6=clk6;end elsecnt=cnt+1;endendmodule,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号