基于Veriloghdl的数字电路设计课件.ppt

上传人(卖家):三亚风情 文档编号:3339838 上传时间:2022-08-22 格式:PPT 页数:127 大小:3.88MB
下载 相关 举报
基于Veriloghdl的数字电路设计课件.ppt_第1页
第1页 / 共127页
基于Veriloghdl的数字电路设计课件.ppt_第2页
第2页 / 共127页
基于Veriloghdl的数字电路设计课件.ppt_第3页
第3页 / 共127页
基于Veriloghdl的数字电路设计课件.ppt_第4页
第4页 / 共127页
基于Veriloghdl的数字电路设计课件.ppt_第5页
第5页 / 共127页
点击查看更多>>
资源描述

1、第6章 基于Verilog HDL的 数字电路设计Verilog HDL设计实例设计实例 在数字电路设计中,数字电路可简单归纳为两种要素:线和器件。线是器件管脚之间的物理连线;器件也可简单归纳为组合逻辑器件(如与或非门等)和时序逻辑器件(如寄存器、锁存器、RAM等)。组合逻辑电路在逻辑功能上的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关。而时序逻辑电路在逻辑功能上的特点是任意时刻的输出不仅取决于当时的输入信号,而且还取决于电路原来的状态,或者说,还与以前的输入有关。下面分别用Verilog HDL语言来设计这两种电路。6.1基本组合电路设计基本组合电路设计1、设计一个基本门

2、电路设计一个基本门电路 包括一个非门、一个与门、一个与非门、一个或门、一包括一个非门、一个与门、一个与非门、一个或门、一个异或门和一个异或非门。如图个异或门和一个异或非门。如图 1所示为基本门电路描述图所示为基本门电路描述图元符号。元符号。图6-1 基本门电路描述图元符号【例6-1】门调用实现图6-1所示模块。module ALLGATE(IN1,IN2,G_INV,G_AND,G_NAND,G_OR,G_XOR,G_NXOR);input wire IN1,IN2;output wire G_INV,G_AND,G_NAND,G_OR,G_XOR,G_NXOR;assign G_INV=IN

3、1;assign G_AND=IN1&IN2;assign G_NAND=(IN1&IN2);assign G_OR=IN1|IN2;assign G_XOR=IN1IN2;assign G_NXOR=(IN1IN2);endmodule 仿真结果如图6-2所示。图6-2 基本门电路仿真结果图6-3 基本门电路综合结果综合结果如图6-3所示。2、三态逻辑电路三态逻辑电路 在数字系统中,经常要用到三态逻辑电路,三态门是在普在数字系统中,经常要用到三态逻辑电路,三态门是在普通门的基础上加控制端构成的,在需要信息双向传输的地方,通门的基础上加控制端构成的,在需要信息双向传输的地方,三态门是必需的。下

4、面用三种模式描述图三态门是必需的。下面用三种模式描述图4所示的三态门,当所示的三态门,当en控制端为高电平时,输出控制端为高电平时,输出out=in;当;当en控制端为低电平时控制端为低电平时,输出,输出out为高阻态。为高阻态。2、三态逻辑设计三态逻辑设计【例例6-2】行为描述的三态门行为描述的三态门module tristate1(in,en,out);input in,en;output reg out;always(in or en)begin if(en)out=in;else out=1bz;endendmodule【例例6-3】调用门元件调用门元件bufif1描述的三态门描述的三

5、态门module tristate2(in,en,out);input in,en;output out;tri out;bufif1 b1(out,in,en);/注意三态门端口的排列顺序注意三态门端口的排列顺序endmodule【例例6-4】数据流描述的三态门数据流描述的三态门module tristate3(out,in,en);input in,en;output out;assign out=en?in:1bz;/若若en=1,out=in;/若若en=0,out为高阻态为高阻态endmodule【例例6-5】三态双向总线缓冲器三态双向总线缓冲器module ttl245(a,b,o

6、e,dir);input oe,dir;/使能信号和方向控制使能信号和方向控制inout7:0 a,b;/双向数据线双向数据线assign a=(oe,dir=2b00)?b:8bz;assign b=(oe,dir=2b01)?a:8bz;endmodule3、数据选择器、数据选择器 以以2选选1数据选择器为例,模块和真值表如图数据选择器为例,模块和真值表如图5所示。所示。从模块图,我们可知从模块图,我们可知2选选1数据选择器输入有数据选择器输入有a,b,s,输出为,输出为y,输入与输出关系如真值表所示,当输入与输出关系如真值表所示,当s为为0时,时,y的值为的值为a的值,的值,当当s为为1

7、时,时,y的值为的值为b的值。的值。逻辑电路 卡诺图法法a:使用逻辑方程实现的:使用逻辑方程实现的2选选1 MUX module mux21a(input wire a,input wire b,input wire s,output wire y);assign y=s&a|s&b;endmodule法法b:使用:使用if语句实现的语句实现的2选选1 MUX module mux21b(input wire a,input wire b,input wire s,output reg y);always (a,b,s)if(s=0)y=a;else y=b;endmodule法法c:使用:使

8、用if语句实现的语句实现的2选选1 MUXmodule mux21c(input wire a,input wire b,input wire s,output reg y);always (*)if(s=0)y=a;else y=b;endmodule法法d:使用:使用“?”实现的实现的2选选1 MUX module mux21d(input wire a,input wire b,input wire s,output wire y);assign y=s?b:a;endmodule4选选1多路选择器多路选择器 4选选1多路选择器:模块例化多路选择器:模块例化法法a:使用模块例化的:使用模

9、块例化的4选选1 MUX module mux41(input wire 3:0 c,input wire 1:0 s,output wire z);wire v;/output of mux M1wire w;/output of mux M2/模块例化模块例化 mux21c M1(.a(c0),.b(c1),.s(s0),.y(v);mux21c M2(.a(c2),.b(c3),.s(s0),.y(w);mux21c M3(.a(v),.b(w),.s(s1),.y(z);endmodule法法b:使用逻辑方程实现:使用逻辑方程实现4选选1 MUXmodule mux41b(input

10、wire 3:0 c,input wire 1:0 s,output wire z);assign z=s1&s0&c0|s1&s0&c1|s1&s0&c2|s1&s0&c3;endmodule法法C:使用:使用case语句实现语句实现4选选1 MUXmodule mux41c(input wire 3:0 c,input wire 1:0 s,output reg z);always (*)case(s)0:z=c0;1:z=c1;2:z=c2;3:z=c3;default:z=c0;(不能省)(不能省)endcaseendmodule4位位2选选1多路选择器多路选择器法法a:使用逻辑方程实

11、现:使用逻辑方程实现4位位 2选选1 MUXmodule mux24a(input wire 3:0 a,input wire 3:0 b,input wire s,output wire 3:0 y);assign y=4s&a|4s&b;endmodule法法b:使用:使用if语句实现语句实现4位位 2选选1 MUXmodule mux24b(input wire 3:0 a,input wire 3:0 b,input wire s,output reg 3:0 y);always (*)if(s=0)y=a;else y=b;endmodule 法法c:使用:使用“?”运算符实现运算符

12、实现4位位 2选选1 MUX module mux24c(input wire 3:0 a,input wire 3:0 b,input wire s,output wire 3:0 y);assign y=s?b:a;endmodule4、译码器和编码器、译码器和编码器3-8译码器:译码器:for循环循环/例例:3-8译码器译码器module decode38b(input wire 2:0 a,output reg 7:0 y);integer i;always (*)for(i=0;i=7;i=i+1)if(a=i)yi=1;else yi=0;endmodule译码器译码器8-3编码器

13、编码器8-3编码器:编码器:for循环循环/8-3 编码器:编码器:for循环循环module encode83b(input wire 7:0 x,output reg 2:0 y,);integer i;always (*)begin y=0;for(i=0;i=7;i=i+1)if(xi=1)begin y=i;endendendmodule 优先编码器8-3优先编码器优先编码器/8-3优先编码器优先编码器module pencode83(input wire 7:0 x,output reg 2:0 y,);integer i;always (*)beginy=0;for(i=0;i=

14、0;i=i-1)bi=bi+1 gi;endendmodule6、七段显示管译码电路七段显示管译码电路 七段数码管实际上是由7个长条形的发光二极管组成的(一般用a、b、c、d、e、f、g分别表示7个发光二极管),多用于显示字母、数字.Xabcdefg0123456789ABCDEF共阴极【例6-14】七段数码管显示8421BCD码module seg7b(led,a_to_g);output reg6:0 a_to_g;input3:0 led;/输入的4位BCD码always(*)begin case(led)4b0000:a_to_g=7b1111110;/显示0 4b0001:a_to_

15、g=7b0110000;/显示1 4b0010:a_to_g=7b1101101;/显示2 4b0011:a_to_g=7b1111001;/显示3 4b0100:a_to_g=7b0110011;/显示4 4b0101:a_to_g=7b1011011;/显示5 4b0110:a_to_g=7b1011111;/显示6 4b0111:a_to_g=7b1110000;/显示7 4b1000:a_to_g=7b1111111;/显示8 4b1001:a_to_g=7b1111011;/显示9 default:a_to_g=7b0000000;/其他情况不显示 endcaseendendmodu

16、le7、比较器、比较器 使用关系运算符的使用关系运算符的N位比较器位比较器module comp#(parameter N=8)(input wire N-1:0 x,input wire N-1:0 y,output reg gt,output reg eq,output reg lt);always (*)begin gt=0;eq=0;lt=0;if(x y)gt=1;if(x=y)eq=1;if(x y)lt=1;endendmodule7、移位器、移位器 四位移位器模块d0module shift4(input wire 3:0 d,input wire 2:0 s,output r

17、eg 3:0 y);always(*)case(s)0:y=d;/noshift 1:y=1b0,d3:1;/shr 2:y=d2:0,1b0;/shl 3:y=d0,d3:1;/ror 4:y=d2:0,d3;/rol 5:y=d3,d3:1;/asr 6:y=d1:0,d3:2;/ror2 7:y=d;/noshift default:y=d;endcaseendmodule【例6-15】4位移位器8、算术运算器、算术运算器【例【例6-16】四位二进制数的乘法、除法、求余运算】四位二进制数的乘法、除法、求余运算 module mult4(a,b,c,d,e);input signed 3:

18、0 a,b;output signed7:0 c;output signed3:0 d,e;assign c=a*b;assign d=a/b;assign e=a%b;endmodule算术运算仿真波形u从图中可看出,余数的符号与被除数符号一致。6.2 基本时序逻辑电路设计基本时序逻辑电路设计 时序逻辑是具有状态记忆的电路,其输出不仅依赖于当前的输入,而且依赖于以前的输入。可以使用always块和连续赋值assign语句实现时序电路。一、锁存器和一、锁存器和触发器触发器 在数字电路中除了需要进行各种算术运算和逻辑运算,还需要对数据进行存储,目前在半导体存储器中采用的存储单元有锁存器和触发器两

19、类。锁存器和触发器区别在于触发方式不一样,锁存器没有锁存器和触发器区别在于触发方式不一样,锁存器没有时钟信号控制,而触发器是在时钟信号触发时才能动作的存储时钟信号控制,而触发器是在时钟信号触发时才能动作的存储单元电路。单元电路。50触发器概述一、用于记忆1位二进制信号1.有两个能自行保持的状态2.根据输入信号可以置成0或1二、分类 1.按触发方式(电平,脉冲,边沿)2.按逻辑功能(RS,JK,D,T)【例例】电平敏感的电平敏感的1位数据锁存器位数据锁存器module latch1(q,d,le);input d,le;output q;assign q=le?d:q;/le为高电平时,将输入端

20、数据锁存为高电平时,将输入端数据锁存endmodule【例例】带置位带置位/复位端的复位端的1位数据锁存器位数据锁存器module latch2(q,d,le,set,reset);input d,le,set,reset;output q;assign q=reset?0:(set?1:(le?d:q);endmodule【例例】8位数据锁存器(位数据锁存器(74LS373)module ttl373(le,oe,q,d);input le,oe;input7:0 d;output reg7:0 q;always*/或写为或写为always(le,oe,d)begin if(oe&le)q=

21、d;/或写为或写为if(!oe)&(le)else q=8bz;endendmodule 触发器在置位与清零信号的作用下置1或是置0。工作方式有同步和异步之分。对于同步置位与清零的触发器,其置位和清零信号是在时钟信号的有效沿发挥作用的,描述这样触发器的always块的敏感信号只有时钟,但是在块内总是首先检查置位和清零信号。对于高电平置位清零的同步触发器,有如下格式:always (posedge clk)beginif(reset)begin /*触发器清零*/end else if(set)begin /*触发器置位*/end else begin /*时钟逻辑*/endend 在异步置位与

22、清零的触发器中,置位与清零信号的作用与时钟信号无关,但是在同步置位与清零的触发器中,置位与清零信号的作用一定等到时钟的有效边沿出现时起作用。对于高电平异步置位和清零的触发器,一般有如下格式:always (posedge clk or posedge set or posedge reset)begin if(reset)begin /*置位输出为0*/end else if(set)begin /*置位输出为1*/end else begin /*时钟逻辑*/endend1、RS触发器可称为可称为RS锁存器锁存器RS触发器的Verilog-HDL描述 module RS_FF(R,S,CLK

23、,Q,QB);/模块名及参数定义,范围至endmoduleinput R,S,CLK;/输入端口定义output Q,QB;/输出端口定义reg Q;/寄存器定义 assign QB=Q;/assign语句,QB=/Q。always(posedge CLK)/在CLK的上跳沿,执行以下语句。case(R,S)/case语句,至于endcase为止。0:Q=Q;/当R,S的组合为00,则令Q=0。1:Q=1;/当R,S的组合为01,则令Q=1。2:Q=0;/当R,S的组合为10,则令Q=0。3:Q=1bx;/当R,S的组合为11,则令Q为1bit的数,数值为不定(x)。endcase/case语

24、句结束endmodule/模块结束 逻辑功能表逻辑功能表nQ1n QD000010101111特性方程特性方程Qn+1=D状态转换图状态转换图 D=1 D=0 D=0 D=1 0 1 D触发器工作特点:在触发器工作特点:在CP低电平期间存储信号,低电平期间存储信号,在在CP的上升沿的上升沿(高电平高电平),状态变化。,状态变化。2、D触发器CPDQdtrifinstmodule dtrif(CP,D,Q);input CP;input D;output Q;reg Q;always(CP)begin if(CP=1b1)begin Q=D;end end endmoduleDclkQQBdtr

25、ifinstmodule dtrif(D,clk,Q,QB);input D,clk;output Q,QB;reg Q;always(posedge clk)case(D )0:Q=0;1:Q=1;endcase assign QB=Q;endmodule Q=D;例例6-18 同步带置数和清零端的同步带置数和清零端的D触发器触发器 module Dffsc(input wire clk,input wire clr,input wire set,input wire D,output reg q);always (posedge clk)if(set=1)q=1;else if(clr=1

26、)q=0;else q=D;endmodule3、JK触发器6364【例6-17】带异步清0/异步置1的JK触发器module jkff_rs(clk,j,k,q,rs,set);input clk,j,k,set,rs;output reg q;always(posedge clk,negedge rs,negedge set)begin if(!rs)q=1b0;else if(!set)q=1b1;else case(j,k)2b00:q=q;2b01:q=1b0;2b10:q=1b1;2b11:q=q;default:q=1bx;endcase endendmodule6.2 基本时序

27、电路设计基本时序电路设计二、寄存器二、寄存器 寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。工程中的寄存器一般按计算机中字节的位数设计,所以一般有8位寄存器、16位寄存器等。【例例】1位寄存器位寄存器 module reg1bit(input wire load,input wire clk,input wire clr,input wire inp0,output reg q0);wire D;assign D=q0&load|inp0&load;/D 触发器触发器always (posedge clk or

28、posedge clr)if(clr=1)q0=0;else q0=D;endmodule/1位寄存器位寄存器 module reg1bitb(input wire load,input wire clk,input wire clr,input wire inp0,output reg q0);/带带load信号的信号的1位寄存器位寄存器always (posedge clk or posedge clr)if(clr=1)q0=0;else if(load=1)q0=inp0;endmodule4位寄存器位寄存器【例例】4位寄存器位寄存器module reg4bit(input wire

29、load,input wire clk,input wire clr,input wire 3:0 inp,output reg 3:0 q);/带带load信号的信号的4位寄存器位寄存器always (posedge clk or posedge clr)if(clr=1)q=0;else if(load=1)q=inp;endmoduleN位寄存器位寄存器【例例6-19】带有异步清零和加载信号的带有异步清零和加载信号的8位寄存器位寄存器module register#(parameter N=8)(input wire load,input wire clk,input wire clr,

30、input wire N-1:0 d,output reg N-1:0 q);always (posedge clk or posedge clr)if(clr=1)q=0;else if(load=1)q=d;endmodule【例例6-20】4位移位寄存器位移位寄存器module ShiftReg(input wire clk,input wire clr,input wire data_in,output reg 3:0 q);/4位移位寄存器位移位寄存器 always (posedge clk or posedge clr)beginif(clr=1)q=0;else beginq3=

31、data_in;q2:0=q3:1;endendendmodule4位环形寄存器位环形寄存器【例例6-21】环形寄存器环形寄存器 module ring4(input wire clk,input wire clr,output reg 3:0 q);always (posedge clk or posedge clr)begin if(clr=1)q=1;else begin q3=q0;q2:0=q3:1;end end endmodule6.2 基本时序电路设计基本时序电路设计三、计数器三、计数器 计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉

32、冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T触发器、D触发器及JK触发器等。计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。计数器可以用来显示产品的工作状态,一般来说主要是用来表示产品已经完成了多少份的折页配页工作。它主要的指标在于计数器的位数,常见的有3位和4位的。很显然,3位数的计数器最大可以显示到999,4位数的最大可

33、以显示到9999。D2=q2&q1&q0|q2&q1|q2&q0 D1=q1&q0|q1&q0 D0=q03位二进制计数器位二进制计数器module count3a(input wire clr,input wire clk,output reg 2:0 q);wire 2:0 D;assign D2=q2&q1&q0|q2&q1|q2&q0;assign D1=q1&q0|q1&q0;assign D0=q0;/3个个D触发器触发器always (posedge clk or posedge clr)if(clr=1)q=0;else q=D;endmodule3位二进制计数器位二进制计数器

34、module count3b(input wire clr,input wire clk,output reg 2:0 q);/3位计数器位计数器always (posedge clk or posedge clr)beginif(clr=1)q=0;else q=q+1;endendmodule8位二进制计数器位二进制计数器module counter#(parameter N=8)(input wire clr,input wire clk,output reg N-1:0 q);/N-位计数器位计数器always (posedge clk or posedge clr)beginif(c

35、lr=1)q=0;else q=q+1;endendmodule【例例】可变模加法可变模加法/减法减法8位二进制计数器位二进制计数器module updown_count(d,clk,clear,load,up_down,qd);input clk,clear,load,up_down;input7:0 d;output7:0 qd;reg7:0 cnt;assign qd=cnt;always(posedge clk)begin if(!clear)cnt=8h00;/同步清同步清0,低电平有效,低电平有效else if(load)cnt=d;/同步预置同步预置else if(up_down

36、)cnt=cnt+1;/加法计数加法计数else cnt=cnt-1;/减法计数减法计数endendmodule模模-5计数器(计数器(5进制计数器)进制计数器)module mod5cnt(input wire clr,input wire clk,output reg 2:0 q);/模模-5计数器计数器always (posedge clk or posedge clr)beginif(clr=1)q=0;else if(q=4)q=0;else q=q+1;endendmodule【例6-22】设计一个带计数使能,异步复位,同步加载的可逆模24计数器。module count24(DA

37、TA_L,DATA_H,CLK,RST,DIV,CP);output reg 3:0 DATA_L,DATA_H;input CP,CLK,RST,DIV;always(posedge CLK or posedge RST)if(RST)DATA_H,DATA_L=0;else if(CP)DATA_H,DATA_L=DATA_H,DATA_L;else if(DIV)begin if(DATA_H,DATA_L=8h23)DATA_H,DATA_L=0;else if(DATA_L=4h9)begin DATA_H=DATA_H+1;DATA_L=0;end else DATA_H,DATA

38、_L=DATA_H,DATA_L+1;end else begin if(DATA_H,DATA_L=)DATA_H,DATA_L=;else if(DATA_L=)begin DATA_H=DATA_H-1;DATA_L=4h9;end else DATA_H,DATA_L=DATA_H,DATA_L-1;endendmodule图6-15 24制计数器仿真波形6.2 基本时序电路设计基本时序电路设计四、分频器四、分频器 分频器可用来降低信号的频率,是数字系统中常用的电路。分频器的输入信号频率fi和输出信号频率fo之比成为分频比。N进制计数器可实现N分频器。分频器设计要考虑频率(即周期)和占

39、空比。分为偶数倍分频和奇数倍分频,等占空比和非等占空比设计。偶数倍分频偶数倍分频(等占空比)(等占空比)法一:法一:N进制计数器实现进制计数器实现偶数倍偶数倍分频器。分频器。【例例6-23】等占空比的八分频器设计等占空比的八分频器设计module fp8(clk,rst,clk_8);input clk,rst;output clk_8;reg 2:0 q;always(posedge clk)if(rst)q=0;else q=q+1;assign clk_8=q2;endmodule【例【例6-23】等占空比的八分频器设计】等占空比的八分频器设计module fenpin8(clk,res

40、et,clk_8);input clk,reset;output clk_8;integer k;reg clk_8;always(posedge clk or posedge reset)if(reset)begin k=0;clk_8=0;end else if(k=3)begin k=0;clk_8=clk_8;end else k=k+1;endmodule法二:可以通过由待分频的时钟触发计数器计数,当计数器从0计数到N/2-1时,输出时钟进行翻转,并给计数器一个复位信号,使得下一个时钟从零开始计数。以此循环下去。偶数倍分频偶数倍分频(非等占空比)(非等占空比)【例例6-24】占空比占

41、空比为为3/8的八分频器设计的八分频器设计module fenpin8(clk,reset,clk_8);input clk,reset;output clk_8;integer k;reg clk_8;always(posedge clk or posedge reset)if(reset)begin k=0;clk_8=0;end else if(k=7)begin k=0;clk_8=clk_8;end else if(k=4)clk_8=clk_8;else k=k+1;endmodule奇奇数倍分频数倍分频(等占空比)(等占空比)可采用如下的方法:用两个计数器,一个由输入时钟的上升沿

42、触发,另可采用如下的方法:用两个计数器,一个由输入时钟的上升沿触发,另一个由输入时钟的下降沿触发,最后将两个计数器的输出相或,即可得一个由输入时钟的下降沿触发,最后将两个计数器的输出相或,即可得到占空比为到占空比为50%的方波波形。如的方波波形。如下下例所示,用例所示,用parameter语句定义了语句定义了参数参数NUM,这样只需要改,这样只需要改NUM的赋值(的赋值(NUM应赋奇数值),就可以得应赋奇数值),就可以得到任意模的奇数分频器。到任意模的奇数分频器。【例例6-25】等等占空比的占空比的13分频器设计分频器设计module count_num(reset,clk,cout);par

43、ameter NUM=13;input clk,reset;output wire cout;reg4:0 m,n;reg cout1,cout2;assign cout=cout1|cout2;always(posedge clk)begin if(!reset)begin cout1=0;m=0;endelsebegin if(m=NUM-1)begin m=0;cout1=cout1;end else if(m=(NUM-1)/2)cout1=cout1;else m=m+1;endendalways(negedge clk)begin if(!reset)begin cout2=0;n

44、=0;endelse beginif(n=NUM-1)begin n=0;cout2=cout2;end else if(n=(NUM-1)/2)cout2=cout2;else n=n+1;endendendmodule五五 脉冲信号发生器脉冲信号发生器 1、设计并实现一个同步设计并实现一个同步单脉冲发生器单脉冲发生器。2、设计一个设计一个节拍脉冲发生器节拍脉冲发生器,当按下,当按下start键时,循键时,循环产生四个节拍脉冲,当按下环产生四个节拍脉冲,当按下stop键时,停止产生节拍键时,停止产生节拍脉冲,当按下脉冲,当按下step键时,只产生一组四个节拍脉冲。键时,只产生一组四个节拍脉冲

45、。1.理解同步单脉冲发生器理解同步单脉冲发生器 同步单脉冲发生器就是能同步单脉冲发生器就是能发出单个同步脉冲的线路发出单个同步脉冲的线路。它的输入是一串连续脉冲它的输入是一串连续脉冲M,它的输出受开关,它的输出受开关PUL的控的控制,每当按一次开关后,制,每当按一次开关后,Q端输出一个与输入脉冲的周端输出一个与输入脉冲的周期和时间期和时间(相位相位)同步的脉冲。同步的脉冲。图 1 无抖动仿真波形图 2 有抖动仿真波形PULMclrQp1inst4图 3 模块图【例例6-26】同步单脉冲发生器实现方法同步单脉冲发生器实现方法原理图设计原理图设计 【例例6-27】同步单脉冲发生器实现方法同步单脉冲

46、发生器实现方法Verilog HDL语言设计语言设计 module p1(inp,cclk,clr,outp);input inp,cclk,clr;output outp;reg delay1;reg delay2;always(posedge cclk or posedge clr)beginif(clr=1)begin delay1=0;delay2=0;endelsebegin delay1=inp;delay2=delay1;endendassign outp=delay1&delay2;endmodule u仿真仿真分析分析 仿真时间:仿真时间:010s M周期:周期:1ms,频率

47、:,频率:1khz PUL开关:闭合时间开关:闭合时间0.1s u消抖消抖 当按下当按下FPGA开发板上的任何按钮,在它们稳定下来之前都会有几开发板上的任何按钮,在它们稳定下来之前都会有几毫秒的轻微抖动。这就意味着输入到毫秒的轻微抖动。这就意味着输入到FPGA的并不是清晰的从的并不是清晰的从0到到1的变的变化,而可能是在几毫秒的时间里从化,而可能是在几毫秒的时间里从0到到1来回的抖动。在时序电路中,来回的抖动。在时序电路中,当在一个时钟信号上升沿到来时发生这种抖动,将是一个严重的问题。当在一个时钟信号上升沿到来时发生这种抖动,将是一个严重的问题。因为时钟信号改变的速度要比开关抖动的速度快,这将

48、可能把错误的值因为时钟信号改变的速度要比开关抖动的速度快,这将可能把错误的值所存到寄存器中。所以,当在时序电路中使用按钮开关时,消除它们的所存到寄存器中。所以,当在时序电路中使用按钮开关时,消除它们的抖动时非常必要的。抖动时非常必要的。u抖动要求抖动要求 (1)如果有抖动,必须采用至少3级延迟(3个D触发器)消抖;(2)输入脉冲M频率不应太大,一般小于1Khz,否则抖动不易消除 2.理解节拍脉冲发生器理解节拍脉冲发生器 节拍脉冲发生器用来产生计算机工作所需的节拍脉冲。节拍脉冲发生器用来产生计算机工作所需的节拍脉冲。(1)节拍脉冲发生器的实现方法)节拍脉冲发生器的实现方法【例6-28】节拍脉冲发

49、生器设计module time_pluse(clk,start,step,stop,p);input clk,start,step,stop;output reg3:0 p;reg 1:0 m;always(posedge clk)if(start)begin m=2b10;p=4b0001;endelse if(step)begin m=2b01;p=4b0001;end else if(stop)begin m=0;p=0;end else if(m=2b10)p=p2:0,p3;else if(m=2b01)p=p1;else p=0;endmodule 6 脉冲宽度调制器(脉冲宽度调制

50、器(PWM)图6-24 PWM信号PWM控制脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要的波形(含形状和幅值),PWM控制技术在逆变电路中应用最广,应用的逆变电路绝大部分是PWM型,广泛应用在从测量、通信到功率控制与变换的许多领域中。1.使用PWM控制一个直流电机的转速PWM可以应用在许多方面,如电机调速、温度控制、压力控制等。在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。因此,PWM又被称为“开关驱动装置”。图6-2

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(基于Veriloghdl的数字电路设计课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|