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

上传人:本田雅阁 文档编号:2147353 上传时间:2019-02-22 格式:PPT 页数:39 大小:372.01KB
返回 下载 相关 举报
4FPGA中verilog时序逻辑电路设计.ppt_第1页
第1页 / 共39页
4FPGA中verilog时序逻辑电路设计.ppt_第2页
第2页 / 共39页
4FPGA中verilog时序逻辑电路设计.ppt_第3页
第3页 / 共39页
亲,该文档总共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); input data,clk; outp

4、ut q; reg q; always(posedge clk) begin q=data; end endmodule,带异步复位、上升沿触发的触发器,module dff_asynrst(data,rst,clk,q); input data,rst,clk; output q; reg q; always(posedge clk or posedge rst) begin if(rst=1b1) q=1b0; else q=data; end endmodule,带异步复位和置位、上升沿触发的触发器,module dff_asynrst(data,rst,set,clk,q); inpu

5、t data,rst,set,clk; output q; reg q; always(posedge clk or posedge rst or posedge set) begin if(rst=1b1) q=1b0; else if(set=1b1) q=1b1; else q=data; end endmodule,带异步复位和时钟使然、上升沿触发的触发器,module dff_asynrst(data,rst,en,clk,q); input data,rst,en,clk; output q; reg q; always(posedge clk or posedge rst) be

6、gin if(rst=1b1) q=1b0; else if(en=1b1) q=data; end endmodule,带同步复位、上升沿触发的触发器,module dff_synrst(data,rst,clk,q); input data,rst,clk; output q; reg q; always(posedge clk) begin if(rst=1b1) q=1b0; else q=data; end endmodule,移位寄存器,移位寄存器是一种在时钟脉冲的作用下,将寄存器中的数据按位移动的逻辑 电路主要功能:串并转换 串行输入串行输出 串行输入并行输出 并行输入串行输出,

7、串入串出移位寄存器,基本串入串出移位寄存器原理图 8位移位寄存器由8个D触发器串联构成,在时钟信号的作用下,前级的数据向后移动,串行输入串行输出移位寄存器,module shift_1(din,clk,dout); input din,clk; output dout; reg dout; reg tmp1,tmp2,tmp3,tmp4,tmp5,tmp6,tmp7; always(posedge clk) begin tmp1=din; tmp2=tmp1; tmp3=tmp2; tmp4=tmp3; tmp5=tmp4; tmp6=tmp5; tmp7=tmp6; dout=tmp7; e

8、nd endmodule,串入并出shift register,4位串行输入并行输出移位寄存器的逻辑电路 如图所示。该寄存器由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) begin if(clr=1b0) q=4b0000; else begin q0=din; q=q1; end end endmodule,并入串出shift re

9、gister,并入串出移位寄存器可以将一组二进制数并 行送入一组寄存器,然后把这些数据串行从寄 存器内输出。 一个同步并入串出移位寄存器的基本管脚: 并行输出输入端:data 时钟脉冲输入端:clk 加载数据端:load 串行数据输出端:dout,并行输入串行输出移位寄存器,module shift3(clk,din, load,q); input clk,load; input 3:0 din; output q; reg q; reg 3:0 tmp; always(posedge clk ) begin if(load=1b1) tmp=din; else begin tmp=tmp1;

10、 tmp0=1b0; q=tmp3; end end endmodule,计数器设计,计数器是一种典型的时序器件,常用于对时钟脉冲的个数进行计数,还用于定时,分频,产生同步脉冲 按触发方式分:同步计数器和异步计数器 最容易的计数器设计就是cnt=cnt+1,但是你可能得不到最好的结果,计数器,计数器对时钟脉冲进行计数 以递增计数器为例,介绍其Verilog HDL设计方法 递增计数器基本引脚: 时钟输入端:clk 复位端: rst 计数使然端:en 计数输出端:cnt,计数器设计代码,module cnt_en(en,rst,clk,cnt); parameter WIDTH = 8; inp

11、ut en,rst,clk; output WIDTH -1:0 q; reg WIDTH -1:0 q; always(posedge clk or posedge rst) begin if(rst=1b1) cnt=8b00000000; else cnt=cnt + 1; end endmodule,Verilog HDL参考设计(1),module count (clk,cnt); input clk; output 2:0 cnt; reg 2:0 cnt; always(posedge clk ) begin if(cnt=7) cnt=0; else cnt=cnt+1; en

12、d endmodule,module cnt (clk,cnt); input clk; output 2:0 cnt; reg 2:0 cnt; reg 2:0 next_cnt; always(cnt ) begin case(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; endcase end

13、 always(posedge clk ) cnt=next_cnt; endmodule,Verilog HDL参考设计(2),问题思考,1.上述描述的是一个模为多少的计数器? 2.请自行设计一个同步模12计数器 3.在2基础上进行修改,设计一个带异步复位的模12计数器 4.同步复位的模12计数器如何设计?,项目设计1,一、目的 (1)实现带计数允许和复位端的十进制、六进制和60进制计数器; (2)掌握计数器类型模块的描述方法; (3)掌握Veriog HDL模块的层次化设计方法。,二、说明 计数器是数字电路系统中最基本的功能模块之一。设计十进制、六进制和100进制计数器,要求计数器有计数允

14、许和复位输入及进位输出功能。计数时钟可以用1Hz信号,用LED显示计数值。 本设计要求用仿真和测试两种手段来验证计数器的功能。实验时,可以通过修改十进制计数器的设计得到六进制、100进制计数器。,三、设计要求 (1) 完成各模块的Verilog HDL设计编码; (2) 进行功能仿真; (3) 下载并验证计数器功能; (4) 如果60进制计数器要求用6进制和10进制计数器搭建电路,请画出设计连接图,并完成设计编码和验证。,分频器设计,在硬件电路设计中时钟信号是最重要的信号之一。 在数字电路中,常需要对较高频率的时钟进行分频操作,得到较低频率的时钟信号。,分频器设计,2的整数次幂的分频器设计;

15、偶分频电路设计; 占空比为1:15的分频电路设计。,用VerilogHDL语言完成对时钟信号 CLK 的 2 分频, 4 分频, 8 分频, 16 分频。 这也是最简单的分频电路,只需要一个计数器即可 。,2、4、8、16分频电路设计,2的整数次幂的分频器,module div1(clk,rst,clk2,clk4,clk8,clk16); input rst,clk; output clk2,clk4,clk8,clk16; wire clk2,clk4,clk8,clk16; reg 3:0 cnt; always(posedge clk or posedge rst) begin if(

16、rst=1b1) cnt=4b0000; else cnt=cnt+1; end assign clk2 = cnt0; assign clk4 = cnt1; assign clk8 = cnt2; assign clk16= cnt3; endmodule,电路的功能仿真波形,6分频电路设计与实现 对于分频倍数不是 2 的整数次幂的情况,我们只需要对源代码中的计数器进行一下计数控制就可以了,如下面用VHDL设计一个对时钟信号进行 6 分频的分频器,电路的仿真波形图,在进行硬件设计的时候,往往要求得到一个占空比不是 1:1 的分频信号,这时仍采用计数器的方法来产生占空比不是 1:1 的分频信

17、号。下面源代码描述的是这样一个分频器:将输入的时钟信号进行 16 分频,分频信号的占空比为 1:15 ,也就是说,其中高电位的脉冲宽度为输入时钟信号的一个周期。,占空比1:15分频电路设计,占空比为1:15的分频电路设计,module div1_15(clk,rst, clk16); input rst,clk; output clk16; reg clk16; reg 3:0 cnt; always(posedge clk or posedge rst) begin if(rst=1b1) cnt=4b0000; else cnt=cnt+1; end always(posedge clk

18、or posedge rst) begin if(rst=1b1) clk16=1b0; else if(clk16=15) clk16=1b1; else clk16=1b0; end endmodule,电路仿真波形图,偶分频电路设计,module div6(clk,rst,clk6); input rst,clk; output clk6; reg clk6; reg 1:0 cnt; always(posedge clk or posedge rst) begin if(rst=1b1) cnt=2b00; else if(cnt=2)begin cnt=2b00; clk6=clk6; end else cnt=cnt+1; end endmodule,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1