《常用时序电路设计.pptx》由会员分享,可在线阅读,更多相关《常用时序电路设计.pptx(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、D D触发器设计u上升沿触发的D D触发器u异步复位上升沿触发的D D触发器u异步置位上升沿触发的D D触发器u异步复位和置位上升沿触发的D D触发器u同步复位上升沿触发的D D触发器u同步置位上升沿触发的D D触发器u带异步复位和时钟使然、上升沿触发的D D触发器第1页/共39页上升沿触发的D触发器参考设计必须满足数据建立时间和保持时间/*上升沿触发的D触发器参考设计*/module d_flipflop_1(d,cp,q);input d,cp;output q;reg q;always(posedge cp)always(posedge cp)beginbegin q=d;q=d;end
2、endendmoduleendmodule 第2页/共39页/*异步复位、上升沿触发的D触发器*/module d_flipflop_2(d,cp,reset,q);input d,cp,reset;output q;reg q;always(posedge cp or negedge reset)always(posedge cp or negedge reset)begin beginif(reset=1if(reset=1b0)b0)q=1q=1b0;b0;elseelseq=d;q=d;end endendmoduleendmodule 异步复位、上升沿触发的D触发器第3页/共39页异
3、步置位、上升沿触发的D触发器/*异步置位、上升沿触发的D触发器*/module d_flipflop_3(d,cp,set,q);input d,cp,set;output q;reg q;always(posedge cp or negedge set)always(posedge cp or negedge set)begin beginif(set=1if(set=1b0)b0)q=1q=1b1;b1;elseelseq=d;q=d;end endendmoduleendmodule 第4页/共39页异步复位和置位、上升沿触发的D触发器/*异步复位和置位、上升沿触发的D触发器*/modu
4、le d_flipflop_4(d,cp,set,reset,q);input d,cp,reset,set;output q;reg q;always(posedge cp or negedge reset or negedge set)always(posedge cp or negedge reset or negedge set)begin beginif(reset=1if(reset=1b0)q=1b0)q=1b0;b0;else if(set=1else if(set=1b0)q=1b0)q=1b1;b1;else q=d;else q=d;end endendmoduleend
5、module 第5页/共39页同步复位、上升沿触发的D触发器/*同步复位、上升沿触发的D触发器*/module d_flipflop_5(d,cp,reset,q);input d,cp,reset;output q;reg q;always(posedge cp)always(posedge cp)begin beginif(reset=1if(reset=1b0)b0)q=1q=1b0;b0;elseelseq=d;q=d;end endendmodule endmodule 第6页/共39页同步置位、上升沿触发的D触发器/*同步置位、上升沿触发的D触发器*/module d_flipfl
6、op_6(d,cp,set,q);input d,cp,set;output q;reg q;always(posedge cp)always(posedge cp)begin beginif(pset=1if(pset=1b0)b0)q=1q=1b1;b1;elseelseq=d;q=d;end endendmoduleendmodule第7页/共39页/*异步复位和时钟使然、上升沿触发的D触发器*/module dff_3(data,clk,en,reset,q);input data,clk,reset,en;output q;reg q;always(posedge clk or ne
7、gedge reset)always(posedge clk or negedge reset)begin beginif(reset=1if(reset=1b0)q=1b0)q=1b0;b0;else if(en=1else if(en=1b1)b1)q=data;q=data;end endendmoduleendmodule 异步复位和时钟使然、上升沿触发的D触发器第8页/共39页 Shift RegisterShift Registeru移位寄存器是一种在时钟脉冲的作用下,将寄存器中的数据按位移动的逻辑电路。u主要功能:串并转换串行输入串行输出串行输入并行输出并行输入串行输出第9页/共
8、39页 串入串出移位寄存器u基本串入串出移位寄存器原理图 8位移位寄存器由8个D触发器串联构成,在时钟信号的作用下,前级的数据向后移动。第10页/共39页/*串入串出移位寄存器参考设计*/module shift_1(din,clk,dout);input din,clk;output dout;reg dout;reg tmp1,tmp2,tmp3,tmp4,tmp5,tmp6,tmp7;always(posedge clk)always(posedge clk)begin begintmp1=din;tmp1=din;tmp2=tmp1;tmp2=tmp1;tmp3=tmp2;tmp3=t
9、mp2;tmp4=tmp3;tmp4=tmp3;tmp5=tmp4;tmp5=tmp4;tmp6=tmp5;tmp6=tmp5;tmp7=tmp6;tmp7=tmp6;dout=tmp7;dout=tmp7;end endendmodule endmodule 串入串出移位寄存器参考设计第11页/共39页 串入并出shift registershift register 4 位串行输入并行输出移位寄存器的逻辑电路如图所示。该寄存器由4个同步D触发器组成这种D触发器的R端是是非同步清零端。第12页/共39页/*串入并出移位寄存器参考设计*/module shift_2(din,clk,clr,q
10、);input din,clk,clr;output 3:0 q;reg 3:0 q;always(posedge clk or negedge clr)always(posedge clk or negedge clr)begin beginif(clr=1if(clr=1b0)b0)q=4q=4b0000;b0000;elseelseq0=din;q0=din;q=q1;q=q1;end endendmoduleendmodule 串入并出移位寄存器参考设计第13页/共39页 并入串出shift registershift registerv并入串出移位寄存器可以将一组二进制数并行送入一组
11、寄存器,然后把这些数据串行从寄存器内输出。v一个同步并入串出移位寄存器的基本管脚:并行输出输入端:data 时钟脉冲输入端:clk 加载数据端:load 串行数据输出端:dout第14页/共39页/*串入并出shift register参考设计*/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;endq=tmp3;endendmo
12、dule 串入并出shift register参考设计第15页/共39页 计数器设计v计数器是一种典型的时序器件,常用于对时钟脉冲的个数进行计数,还用于定时,分频,产生同步脉冲。v按触发方式分:同步计数器和异步计数器。v最容易的计数器设计就是cnt=cnt+1cnt=cnt+1,但是你可能得不到最好的结果。第16页/共39页 基本计数器的设计u基本计数器只能实现单一递增或递减计数功基本计数器只能实现单一递增或递减计数功能没有其他控制端。能没有其他控制端。u以递增计数器为例,介绍其以递增计数器为例,介绍其Verilog HDLVerilog HDL设计设计方法。方法。递增计数器基本引脚:递增计数
13、器基本引脚:时钟输入端:时钟输入端:clkclk计数输出端:计数输出端:cntcnt第17页/共39页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;endendmodule第18页/共39页module cnt(clk,cnt);input clk;output 2:0 cnt;reg 2:0 cnt;reg 2:0 next_cnt;always(cnt)begincase(cnt
14、)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)第19页/共39页问题思考1.1.上述描述的是一个模为多少的计数器?上述描述的是一个模为多少的计数器?2.2.请自行设计一个同步模请自行设计一
15、个同步模1212计数器计数器3.3.在在2 2基础上进行修改,设计一个带异步复位的基础上进行修改,设计一个带异步复位的模模1212计数器。计数器。4.4.同步复位的模同步复位的模1212计数器如何设计?计数器如何设计?第20页/共39页 项目设计1一、目的(1)实现带计数允许和复位端的十进制、六进制和60进制计数器;(2)掌握计数器类型模块的描述方法;(3)掌握Veriog HDL模块的层次化设计方法。第21页/共39页二、说明计数器是数字电路系统中最基本的功能模块之一。设计十进制、六进制和100进制计数器,要求计数器有计数允许和复位输入及进位输出功能。计数时钟可以用1Hz信号,用LED显示计
16、数值。本设计要求用仿真和测试两种手段来验证计数器的功能。实验时,可以通过修改十进制计数器的设计得到六进制、100进制计数器。第22页/共39页三、设计要求(1)完成各模块的Verilog HDL设计编码;(2)进行功能仿真;(3)下载并验证计数器功能;(4)如果60进制计数器要求用6进制和10进制计数器搭建电路,请画出设计连接图,并完成设计编码和验证。第23页/共39页项目设计2模拟74LS160芯片HDL设计 clkclrnloadenabled3.0q3.0flagd3d2d1d0q3q2q1q0进位输出0 xxxxxx000010 xabcdabcd110 xxxxq不变110 xxxx
17、q不变111xxxxqq1,最高到“1001”第24页/共39页分频器设计u2 2的整数次幂的分频器设计;u偶分频电路设计;u占空比为1:151:15的分频电路设计。第25页/共39页 用Verilog语言完成对时钟信号 CLK 的 2 分频,4 分频,8 分频,16 分频。这也是最简单的分频电路,只需要一个计数器即可。2 2、4 4、8 8、1616分频电路设计第26页/共39页电路的功能仿真波形第27页/共39页6分频电路设计与实现 对于分频倍数不是 2 的整数次幂的情况,我们只需要对源代码中的计数器进行一下计数控制就可以了,如下面用Verilog设计一个对时钟信号进行 6 分频的分频器
18、第28页/共39页电路的仿真波形图第29页/共39页 在进行硬件设计的时候,往往要求得到一个占空比不是 1:1 的分频信号,这时仍采用计数器的方法来产生占空比不是 1:1 的分频信号。下面源代码描述的是这样一个分频器:将输入的时钟信号进行 16 分频,分频信号的占空比为 1:15,也就是说,其中高电位的脉冲宽度为输入时钟信号的一个周期。占空比1:151:15分频电路设计第30页/共39页电路仿真波形图第31页/共39页在数码管上显示十进制秒计数任务分析:1.需要将系统时钟(50MHz)分频,得到1Hz分频时钟。2.对分频时钟进行十进制计数。3.将计数器计数结果送数码管译码器上。4.选择数码管显
19、示。第32页/共39页在数码管上显示十进制秒计数电路框图:数码管译码电路产生位选信号传送4位BCD码clk_sysnum_bcd3.0seg7.0scan3.0led0led1led2led3系统时钟分频电路十进制计数器clk_1scnt103.0rst第33页/共39页用4位led数码管显示“9527”任务分析:轮流打开4个数码管,每个数码管显示0.01s0.1s,由于视觉暂留效应,就好像显示4个不同的数字。设计思路:1.打开scan0的时候,在abcdefg线上赋值“9”2.打开scan1的时候,在abcdefg线上赋值“5”3.打开scan2的时候,在abcdefg线上赋值“2”4.打开
20、scan3的时候,在abcdefg线上赋值“7”第34页/共39页用4位led数码管显示“9527”电路框图:数码管译码电路系统时钟分频电路2位计数器产生2位位选码2-4线译码器产生位扫描信号传送4位BCD码clk_sysclk_scanscan_sel1.0num_bcd3.0seg7.0scan3.0led0led1led2led3第35页/共39页用4位led数码管显示“9527”(1)输入输出端口定义:一共有几组输入输出端口?(2)设计扫描信号:首先要降低扫描速度,生成一个大约为0.01s-0.1s的时钟分频电路,由系统时钟分频,系统时钟定义为sysclk,分频后的时钟定义为div_s
21、can。(第一个always语句块)(3)利用分频后的时钟信号产生一个2位的位选编码信号。(第二个always语句块,用2位计数器实现)(4)将2位的位选编码译码,产生四个数码管的四根扫描线,依次循环扫描。(第三个always语句块,用2-4线译码器实现)(5)分不同的时间把9、5、2、7放到数码管的段码线上去。即在位选码分别为00、01、10、11的时候在abcdefg上放置9、5、2、7,用一个case语句,扫描第一个数码管时放第一个数,依次类推。(第四个always语句块)(6)7段数码管译码电路,从二进制到abdcdefg译码。(第五个always语句块)第36页/共39页设计具有复位
22、功能的电子秒表任务分析:1.需要将系统时钟(50MHz)分频,得到1Hz分频时钟。按分频时钟进行六十进制计数 2.轮流打开2个数码管,每个数码管显示0.01s0.1s,由于视觉暂留效应,就好像显示2个不同的数字。打开scan2的时候,在段码线上赋值秒表的十位数;打开scan3的时候,在段码线上赋值秒表的个位数。第37页/共39页设计具有复位功能的电子秒表电路框图:数码管译码电路系统时钟分频电路产生2位位选码2-4线译码器产生位扫描信号传送4位BCD码clk_sysclk_scanscan_sel1.0num_bcd3.0seg7.0scan3.0led0led1led2led3系统时钟分频电路六十进制计数器clk_1scnt6/103.0rst第38页/共39页