欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

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

    • 资源ID:2147353       资源大小:372.01KB        全文页数:39页
    • 资源格式: PPT        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    第4章 时序逻辑电路设计,1.时序电路的基本概念,数字电路按照结构特点不同分为两大类:组合逻辑电路(简称组合电路)和时序逻辑电路(简称时序电路)。 组合电路是指由各种门电路组合而成的逻辑电路,输出只取决于当前输入信号的变化,与以前各时刻的输入或输出无关;组合电路没有记忆功能。例如:编/译码器、加法器等常用数字电路都属于组合电路。 时序逻辑电路是具有记忆功能的逻辑电路,记忆元件一般采用触发器。因此,时序逻辑电路由组合电路和触发器组成,其等效模型如图4.5所示。,1模型,时序电路按其状态的改变方式不同,可分为同步时序逻辑电路和异步时序逻辑电路两种,在图4.5中,当CLK1与CLK2为相同信号时,该电路为同步电路;当CLK1与CLK2为不同信号时,该电路为异步电路。,1建立和保持时间,触发器的建立时间(Tsu)是指时钟有效沿(这里指上升沿)到来之前数据应保持稳定的时间。 触发器的保持时间(Thd)是指时钟有效沿(这里指上升沿)到来之后数据应保持稳定的时间。,1.同步电路设计规则,(1)在用Verilog HDL进行数字逻辑设计时,只使用一个主时钟,同时只使用同一个时钟沿(上升沿或下降沿)。 (2)在FPGA设计中,推荐所有输入、输出信号均应通过寄存器寄存,寄存器接口当作异步接口考虑。 (3)当全部电路不能用同步电路思想设计时,即需要多个时钟来实现,则可以将全部电路分成若干局部电路(尽量以同一时钟为一个模块),局部电路之间接口当异步接口考虑。 (4)电路中所有的寄存器、状态机在上电复位时必须有一个确定的初始态。 (5)电路的实际最高频率不应大于理论最高频率,应留有设计余地。,标准同步电路,DFF,DFF,DFF,DFF,组合逻辑,组合逻辑,组合逻辑,组合逻辑,clock,2 D触发器,1. 上升沿触发的触发器 2. 带异步复位、上升沿触发的触发器 3. 带异步复位和置位、上升沿触发的触发器 4.带异步复位和时钟使然、上升沿触发的触发器 5.带同步复位、上升沿触发的触发器,上升沿触发的触发器,module dff(data,clk,q); input data,clk; output 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); input 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) begin 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,移位寄存器,移位寄存器是一种在时钟脉冲的作用下,将寄存器中的数据按位移动的逻辑 电路主要功能:串并转换 串行输入串行输出 串行输入并行输出 并行输入串行输出,串入串出移位寄存器,基本串入串出移位寄存器原理图 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; end 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 register,并入串出移位寄存器可以将一组二进制数并 行送入一组寄存器,然后把这些数据串行从寄 存器内输出。 一个同步并入串出移位寄存器的基本管脚: 并行输出输入端: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; 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; input 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; end 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 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进制计数器,要求计数器有计数允许和复位输入及进位输出功能。计数时钟可以用1Hz信号,用LED显示计数值。 本设计要求用仿真和测试两种手段来验证计数器的功能。实验时,可以通过修改十进制计数器的设计得到六进制、100进制计数器。,三、设计要求 (1) 完成各模块的Verilog HDL设计编码; (2) 进行功能仿真; (3) 下载并验证计数器功能; (4) 如果60进制计数器要求用6进制和10进制计数器搭建电路,请画出设计连接图,并完成设计编码和验证。,分频器设计,在硬件电路设计中时钟信号是最重要的信号之一。 在数字电路中,常需要对较高频率的时钟进行分频操作,得到较低频率的时钟信号。,分频器设计,2的整数次幂的分频器设计; 偶分频电路设计; 占空比为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(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 的分频信号。下面源代码描述的是这样一个分频器:将输入的时钟信号进行 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 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,

    注意事项

    本文(4FPGA中verilog时序逻辑电路设计.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




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

    三一文库
    收起
    展开