《(精品)常用时序电路设计.ppt》由会员分享,可在线阅读,更多相关《(精品)常用时序电路设计.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、可编程逻辑器件应用常用时序电路设计常用时序电路设计主讲教师:刘俐工作地点:行政楼504 电 话:13509682625 E_mail: QQ:286035541电子专业核心课程电子专业核心课程主要内容主要内容 u触发器设计触发器设计u移位寄存器设计移位寄存器设计 u计数器设计计数器设计u分频器设计分频器设计u状态机设计状态机设计 D D触发器设计触发器设计u上升沿触发的上升沿触发的D D触发器触发器u异步复位上升沿触发的异步复位上升沿触发的D D触发器触发器u异步置位上升沿触发的异步置位上升沿触发的D D触发器触发器u异步复位和置位上升沿触发的异步复位和置位上升沿触发的D D触发器触发器u同步
2、复位上升沿触发的同步复位上升沿触发的D D触发器触发器u同步置位上升沿触发的同步置位上升沿触发的D D触发器触发器u带异步复位和时钟使然、上升沿触发带异步复位和时钟使然、上升沿触发的的D D触发器触发器上升沿触发的上升沿触发的D触发器参考设计触发器参考设计必须满足数据建立时间和保持时间/*上升沿触发的上升沿触发的D触发器参考设计触发器参考设计*/module d_flipflop_1(d,cp,q);input d,cp;output q;reg q;always(posedgealways(posedge cp)cp)beginbegin q=d;q=d;endendendmoduleend
3、module /*异步复位、上升沿触发的异步复位、上升沿触发的D触发器触发器*/module d_flipflop_2(d,cp,reset,q);input d,cp,reset;output q;reg q;always(posedgealways(posedge cp or cp or negedgenegedge reset)reset)begin beginif(reset=1b0)if(reset=1b0)q=1b0;q=1b0;elseelseq=d;q=d;end endendmoduleendmodule 异步复位、上升沿触发的异步复位、上升沿触发的D触发器触发器异步置位、上
4、升沿触发的异步置位、上升沿触发的D触发器触发器/*异步置位、上升沿触发的异步置位、上升沿触发的D触发器触发器*/module d_flipflop_3(d,cp,set,q);input d,cp,set;output q;reg q;always(posedgealways(posedge cp or cp or negedgenegedge set)set)begin beginif(setif(set=1b0)=1b0)q=1b1;q=1b1;elseelseq=d;q=d;end endendmoduleendmodule 异步复位和置位、上升沿触发的异步复位和置位、上升沿触发的D触发
5、器触发器/*异步复位和置位、上升沿触发的异步复位和置位、上升沿触发的D触发器触发器*/module d_flipflop_4(d,cp,set,reset,q);input d,cp,reset,set;output q;reg q;always(posedgealways(posedge cp or cp or negedgenegedge reset or reset or negedgenegedge set)set)begin beginif(reset=1b0)q=1b0;if(reset=1b0)q=1b0;else else if(setif(set=1b0)q=1b1;=1b0
6、)q=1b1;else q=d;else q=d;end endendmoduleendmodule 同步复位、上升沿触发的同步复位、上升沿触发的D触发器触发器/*同步复位、上升沿触发的同步复位、上升沿触发的D触发器触发器*/module d_flipflop_5(d,cp,reset,q);input d,cp,reset;output q;reg q;always(posedgealways(posedge cp)cp)begin beginif(reset=1b0)if(reset=1b0)q=1b0;q=1b0;elseelseq=d;q=d;end endendmoduleendmo
7、dule 同步置位、上升沿触发的同步置位、上升沿触发的D触发器触发器/*同步置位、上升沿触发的同步置位、上升沿触发的D触发器触发器*/module d_flipflop_6(d,cp,set,q);input d,cp,set;output q;reg q;always(posedgealways(posedge cp)cp)begin beginif(psetif(pset=1b0)=1b0)q=1b1;q=1b1;elseelseq=d;q=d;end endendmoduleendmodule/*异步复位和时钟使然、上升沿触发的异步复位和时钟使然、上升沿触发的D触发器触发器*/modul
8、e dff_3(data,clk,en,reset,q);input data,clk,reset,en;output q;reg q;always(posedgealways(posedge clkclk or or negedgenegedge reset)reset)begin beginif(reset=1b0)q=1b0;if(reset=1b0)q=1b0;else if(en=1b1)else if(en=1b1)q=data;q=data;end endendmoduleendmodule 异步复位和时钟使然、上升沿触发的异步复位和时钟使然、上升沿触发的D触发器触发器 Shif
9、t RegisterShift Registeru移位寄存器是一种在时钟脉冲的作用下,将移位寄存器是一种在时钟脉冲的作用下,将寄存器中的数据按位移动的逻辑电路。寄存器中的数据按位移动的逻辑电路。u主要功能:串并转换主要功能:串并转换串行输入串行输出串行输入串行输出串行输入并行输出串行输入并行输出并行输入串行输出并行输入串行输出 串入串出移位寄存器串入串出移位寄存器u基本串入串出移位寄存器原理图基本串入串出移位寄存器原理图 8位移位寄存器由位移位寄存器由8个个D触发器串联构成,在时钟触发器串联构成,在时钟信号的作用下,前级的数据向后移动信号的作用下,前级的数据向后移动。/*串入串出移位寄存器参考
10、设计串入串出移位寄存器参考设计*/module shift_1(din,clk,dout);input din,clk;output dout;reg dout;reg tmp1,tmp2,tmp3,tmp4,tmp5,tmp6,tmp7;always(posedgealways(posedge clkclk)begin begintmp1=din;tmp1=din;tmp2=tmp1;tmp2=tmp1;tmp3=tmp2;tmp3=tmp2;tmp4=tmp3;tmp4=tmp3;tmp5=tmp4;tmp5=tmp4;tmp6=tmp5;tmp6=tmp5;tmp7=tmp6;tmp7=
11、tmp6;doutdout=tmp7;=tmp7;end endendmoduleendmodule 串入串出移位寄存器参考设计串入串出移位寄存器参考设计 串入并出串入并出shift registershift register 4 位位串行串行输入并行输出移位寄存器的逻辑电路输入并行输出移位寄存器的逻辑电路如图所示。该寄存器由如图所示。该寄存器由4个同步个同步D触发器组成这种触发器组成这种D触发器的触发器的R端是是非同步清零端。端是是非同步清零端。/*串入并出移位寄存器参考设计串入并出移位寄存器参考设计*/module shift_2(din,clk,clr,q);input din,clk
12、,clr;output 3:0 q;reg 3:0 q;always(posedgealways(posedge clkclk or or negedgenegedge clrclr)begin beginif(clrif(clr=1b0)=1b0)q=4b0000;q=4b0000;elseelseq0=din;q0=din;q=q1;q=q1;end endendmoduleendmodule 串入并出移位寄存器参考设计串入并出移位寄存器参考设计 并入串出并入串出shift registershift registerv并入串出移位寄存器可以将一组二进制数并行并入串出移位寄存器可以将一组二
13、进制数并行送入一组寄存器,然后把这些数据串行从寄存送入一组寄存器,然后把这些数据串行从寄存器内输出。器内输出。v一个同步并入串出移位寄存器的基本管脚:一个同步并入串出移位寄存器的基本管脚:并行输出输入端:并行输出输入端:data 时钟脉冲输入端:时钟脉冲输入端:clk 加载数据端:加载数据端:load 串行数据输出端:串行数据输出端:dout/*串入并出串入并出shift register参考设计参考设计*/module shift3(clk,din,load,q);input clk,load;input 3:0 din;output q;reg q;reg 3:0 tmp;always(p
14、osedgeclk)beginif(load=1b1)tmp=din;elsebegintmp=tmp1;tmp0=1b0;endq=tmp3;endendmodule串入并出串入并出shift register参考设计参考设计 计数器设计计数器设计v计数器是一种典型的时序器件,常用于对时钟脉计数器是一种典型的时序器件,常用于对时钟脉冲的个数进行计数,还用于定时,分频,产生同冲的个数进行计数,还用于定时,分频,产生同步脉冲。步脉冲。v按触发方式分:同步计数器和异步计数器。按触发方式分:同步计数器和异步计数器。v最容易的计数器设计就是最容易的计数器设计就是cntcnt=cnt+1=cnt+1,但
15、是你可但是你可能得不到最好的结果。能得不到最好的结果。基本计数器的设计基本计数器的设计u基本计数器只能实现单一递增或递减计数功基本计数器只能实现单一递增或递减计数功能没有其他控制端。能没有其他控制端。u以递增计数器为例,介绍其以递增计数器为例,介绍其VerilogVerilog HDL HDL设计设计方法。方法。递增计数器基本引脚:递增计数器基本引脚:时钟输入端:时钟输入端:clkclk计数输出端:计数输出端:cntcntVerilog HDL参考设计(参考设计(1)module count(clk,cnt);input clk;output 2:0 cnt;reg 2:0 cnt;alway
16、s(posedge clk)beginif(cnt=7)cnt=0;elsecnt=cnt+1;endendmodulemodule 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:next_cnt=3h5;3h5:next_cnt=3h6;3h6:next_cnt=3h7;3h7:next_cnt=3h0;defau
17、lt:next_cnt=3b000;endcaseendalways(posedge clk)cnt=next_cnt;endmoduleVerilog HDL参考设计(参考设计(2)问题思考问题思考1.1.上述描述的是一个模为多少的计数器?上述描述的是一个模为多少的计数器?2.2.请自行设计一个同步模请自行设计一个同步模1212计数器计数器3.3.在在2 2基础上进行修改,设计一个带异步复位的基础上进行修改,设计一个带异步复位的模模1212计数器。计数器。4.4.同步复位的模同步复位的模1212计数器如何设计?计数器如何设计?项目设计项目设计1一、目的一、目的(1)(1)实实现现带带计计数数
18、允允许许和和复复位位端端的的十十进进制制、六六进进制制和和6060进制计数器;进制计数器;(2)(2)掌握计数器类型模块的描述方法;掌握计数器类型模块的描述方法;(3)(3)掌握掌握VeriogVeriog HDL HDL模块的层次化设计方法。模块的层次化设计方法。二、说明二、说明计计数数器器是是数数字字电电路路系系统统中中最最基基本本的的功功能能模模块块之之一一。设设计计十十进进制制、六六进进制制和和100100进进制制计计数数器器,要要求求计计数数器器有有计计数数允允许许和和复复位位输输入入及及进进位位输输出出功功能能。计计数数时时钟钟可可以以用用1Hz1Hz信号,用信号,用LEDLED显
19、示计数值。显示计数值。本本设设计计要要求求用用仿仿真真和和测测试试两两种种手手段段来来验验证证计计数数器器的的功功能能。实实验验时时,可可以以通通过过修修改改十十进进制制计计数数器器的的设设计计得得到到六进制、六进制、100100进制计数器。进制计数器。三、设计要求三、设计要求(1)(1)完成各模块的完成各模块的VerilogVerilog HDL HDL设计编码;设计编码;(2)(2)进行功能仿真;进行功能仿真;(3)(3)下载并验证计数器功能;下载并验证计数器功能;(4)(4)如如果果6060进进制制计计数数器器要要求求用用6 6进进制制和和1010进进制制计计数数器器搭搭建建电电路路,请
20、请画画出出设设计计连连接接图图,并并完完成成设设计计编编码码和验证。和验证。项目设计项目设计2模拟74LS160芯片HDL设计 clkclrnloadenabled3.0q3.0flagd3d2d1d0q3q2q1q0进位输出0 xxxxxx000010 xabcdabcd110 xxxxq不变110 xxxxq不变111xxxxqq1,最高到“1001”分频器设计分频器设计u2 2的整数次幂的分频器设计;的整数次幂的分频器设计;u偶分频电路设计;偶分频电路设计;u占空比为占空比为1:151:15的分频电路设计。的分频电路设计。用用VerilogVerilog语语言言完完成成对对时时钟钟信信号
21、号 CLK CLK 的的 2 2 分分频频,4 4 分分频频,8 8 分分频频,16 16 分分频频。这这也也是是最最简简单单的的分分频频电电路路,只只需需要要一一个个计计数数器器即即可可 。2 2、4 4、8 8、1616分频电路设计分频电路设计电路的功能仿真波形6分频电路设计与实现 对对于于分分频频倍倍数数不不是是 2 2 的的整整数数次次幂幂的的情情况况,我我们们只只需需要要对对源源代代码码中中的的计计数数器器进进行行一一下下计计数数控控制制就就可可以以了了,如如下下面面用用VerilogVerilog设设计计一一个个对对时时钟钟信信号号进进行行 6 6 分频的分频器分频的分频器 电路的
22、仿真波形图电路的仿真波形图 在在进进行行硬硬件件设设计计的的时时候候,往往往往要要求求得得到到一一个个占占空空比比不不是是 1:1 1:1 的的分分频频信信号号,这这时时仍仍采采用用计计数数器器的的方方法法来来产产生生占占空空比比不不是是 1:1 1:1 的的分分频频信信号号。下下面面源源代代码码描描述述的的是是这这样样一一个个分分频频器器:将将输输入入的的时时钟钟信信号号进进行行 16 16 分分频频,分分频频信信号号的的占占空空比比为为 1:15 1:15,也也就就是是说说,其其中中高高电电位位的的脉脉冲冲宽宽度度为为输输入时钟信号的一个周期。入时钟信号的一个周期。占空比占空比1:151:
23、15分频电路设计分频电路设计电路仿真波形图电路仿真波形图在数码管上显示十进制秒计数任务分析:任务分析:1.1.需要将系统时钟(需要将系统时钟(50MHz50MHz)分频,得到)分频,得到1Hz1Hz分频时钟。分频时钟。2.2.对分频时钟进行十进制计数。对分频时钟进行十进制计数。3.3.将计数器计数结果送数码管译码器上。将计数器计数结果送数码管译码器上。4.4.选择数码管显示。选择数码管显示。在数码管上显示十进制秒计数电路框图:电路框图:数码管译码电路产生位选信号传送 4位BCD码clk_sysnum_bcd3.0seg7.0scan3.0led0led1led2led3系统时钟分频电路十进制计
24、数器clk_1scnt103.0rst用4位led数码管显示“9527”任务分析:任务分析:轮流打开轮流打开4 4个数码管,每个数码管显示个数码管,每个数码管显示0.01s0.1s0.01s0.1s,由于视觉暂留效,由于视觉暂留效应,就好像显示应,就好像显示4 4个不同的数字。个不同的数字。设计思路:设计思路:1.1.打开打开scan0scan0的时候,在的时候,在abcdefgabcdefg线上赋值线上赋值“9”9”2.2.打开打开scan1scan1的时候,在的时候,在abcdefgabcdefg线上赋值线上赋值“5”5”3.3.打开打开scan2scan2的时候,在的时候,在abcdef
25、gabcdefg线上赋值线上赋值“2”2”4.4.打开打开scan3scan3的时候,在的时候,在abcdefgabcdefg线上赋值线上赋值“7”7”用4位led数码管显示“9527”电路框图:电路框图:数码管译码电路系统时钟分频电路 2位计数器产生2位位选码 2-4线译码器产生位扫描信号传送 4位BCD码clk_sysclk_scanscan_sel1.0num_bcd3.0seg7.0scan3.0led0led1led2led3用4位led数码管显示“9527”(1 1)输入输出端口定义:一共有几组输入输出端口?)输入输出端口定义:一共有几组输入输出端口?(2 2)设计扫描信号:首先要
26、降低扫描速度,生成一个大约为)设计扫描信号:首先要降低扫描速度,生成一个大约为0.01s-0.1s0.01s-0.1s的时钟分频的时钟分频电路,由系统时钟分频,系统时钟定义为电路,由系统时钟分频,系统时钟定义为sysclksysclk,分频后的时钟定义为,分频后的时钟定义为div_scandiv_scan。(第一个(第一个alwaysalways语句块)语句块)(3 3)利用分频后的时钟信号产生一个)利用分频后的时钟信号产生一个2 2位的位选编码信号。位的位选编码信号。(第二个(第二个alwaysalways语句块,语句块,用用2 2位计数器实现)位计数器实现)(4 4)将)将2 2位的位选编
27、码译码,产生四个数码管的四根扫描线,依次循环扫描。位的位选编码译码,产生四个数码管的四根扫描线,依次循环扫描。(第(第三个三个alwaysalways语句块,用语句块,用2-42-4线译码器实现)线译码器实现)(5 5)分不同的时间把)分不同的时间把9 9、5 5、2 2、7 7放到数码管的段码线上去。即在位选码分别为放到数码管的段码线上去。即在位选码分别为0000、0101、1010、1111的时候在的时候在abcdefgabcdefg上放置上放置9 9、5 5、2 2、7 7,用一个,用一个casecase语句,扫描第一个数码语句,扫描第一个数码管时放第一个数,依次类推。管时放第一个数,依
28、次类推。(第四个(第四个alwaysalways语句块)语句块)(6 6)7 7段数码管译码电路,从二进制到段数码管译码电路,从二进制到abdcdefgabdcdefg译码。译码。(第五个(第五个alwaysalways语句块)语句块)设计具有复位功能的电子秒表任务分析:任务分析:1.1.需要将系统时钟(需要将系统时钟(50MHz50MHz)分频,得到)分频,得到1Hz1Hz分频时钟。按分频时钟分频时钟。按分频时钟进行六十进制计数进行六十进制计数 2.2.轮流打开轮流打开2 2个数码管,每个数码管显示个数码管,每个数码管显示0.01s0.1s0.01s0.1s,由于视觉暂留,由于视觉暂留效应,就好像显示效应,就好像显示2 2个不同的数字。个不同的数字。打开打开scan2scan2的时候,在段码线上赋值秒表的十位数;打开的时候,在段码线上赋值秒表的十位数;打开scan3scan3的时的时候,在段码线上赋值秒表的个位数。候,在段码线上赋值秒表的个位数。设计具有复位功能的电子秒表电路框图:电路框图:数码管译码电路系统时钟分频电路 产生2位位选码 2-4线译码器产生位扫描信号传送 4位BCD码clk_sysclk_scanscan_sel1.0num_bcd3.0seg7.0scan3.0led0led1led2led3系统时钟分频电路六十进制计数器clk_1scnt6/103.0rst