FPGA_可编程单脉冲发生器设计_第1页
FPGA_可编程单脉冲发生器设计_第2页
FPGA_可编程单脉冲发生器设计_第3页
FPGA_可编程单脉冲发生器设计_第4页
FPGA_可编程单脉冲发生器设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、8.3可编程单脉冲发生器可编程单脉冲发生器是一种脉冲宽度可编程的信号发生器,具输出为TTL电平。在输入按键的控制下,产生单次的脉冲,脉冲的宽度由8位的输入数据控制(以下称之为脉宽参数)。由于是8位的脉宽参数,故可以产生255种宽度的单次脉冲。在目标板上,I0I7用作脉宽参数输入,PULSE_OUT用做可编程单脉冲输出,而KEY和/RB作为启动键和复位键。图3示出了可编程单脉冲发生器的电路图。KEVRSTINKEY网OUTCLKXC9536PULSE_0UT图3可编程单脉冲发生器的电路图8.3.1 由系统功能描述时序关系可编程单脉冲发生器的操作过程是:(1)预置脉宽参数。(2)按下复位键,初始化

2、系统。(3)按下启动键,发出单脉冲。以上三步可用三个按键来完成。但是,由于目标板已确定,故考虑在复位键按下后,经过延时自动产生预置脉宽参数的动作。这一过程可用图4的时序来描述。图4可编程单脉冲发生器的时序图图中的/RB为系统复位脉冲,在其之后自动产生LOAD脉冲,装载脉宽参数N。之后,等待按下/KEY键。/KEY键按下后,单脉冲P_PULSE便输出。在此,应注意到:/KEY的按下是与系统时钟CLK不同步的,不加处理将会影响单脉冲P_PULSE的精度。为此,在/KEY按下期间,产生脉冲P1,它的上跳沿与时钟取得同步。之后,在脉宽参数的控制下,使计数单元开始计数。当达到预定时间后,再产生一个与时钟

3、同步的脉冲P2。由P1和P2就可以算出单脉冲的宽度Two8.3.2 流程图的设计根据时序关系,可以做出图5所示的流程图。在系统复位后,经一定的延时产生一个预置脉冲LOAD,用来预置脉宽参数。应该注意:复位脉冲不能用来同时预置,要在其之后再次产生一个脉冲来预置脉宽参数。为了产生单次的脉冲,必须考虑到在按键KEY有效后,可能会保持较长的时间,也可能会产生多个尖脉冲。因此,需要设计一种功能,使得当检测到KEY有效后就封锁KEY的再次输入,直到系统复位。这是本设计的一个关键所在。(开始)系统复位延时令测KEY是否性下1Y封锁KEY记录控下时刻tl图5可编程单脉冲发生器的流程图8.3.3系统功能描述根据

4、时序和流程图,可以进一步描述系统的功能。图6给出了系统功能描述图6可编程单脉冲发生器的系统功能与系统的时序相呼应,功能框图较详细地描述了系统应有的功能。系统主要有以下三大模块组成:(1)延时模块P_DLY。(2)输入检测模块P_DETECT。(3)计数模块LE_EN_DCNT。在此阶段,应尽可能详细地描述系统,给出合理的逻辑关系,进行正确的功能模块分配。例如:不要把计数模块LE_EN_DCNT与延时模块P_DLY混在一起,否则给后续的设计带来不必要的麻烦。对每一个模块有了详细的功能描述,下一步就可以将其细化为具体的逻辑电路了。8.3.4逻辑框图将系统功能描述用逻辑框图来描述,可以用图7来说明U

5、2U1PPULSEDATA国RBCLK图7可编程单脉冲发生器的逻辑功能(1)延时模块P_DLY。CLK给延时单元提供计数时基,在复位脉冲/RB从有效变为无效时,启动延时单元。延时时间到后便输出一个负有效的脉冲,其宽度为一个时钟周期。(2)输入检测模块P_DETECT0/RB复位系统后,该模块等待/KEY的输入,一旦检测到有下跳,便一方面封锁输入,一方面产生并保持与时钟同步的一个上跳脉冲。该脉冲用以开启计数模块LE_EN_DCNT的计数允许端EN。(3)计数模块LE_EN_DCNT。脉宽参数端IN接受8位的数据,经数据预置端LOAD装载脉宽参数,在计数允许端有效后便开始计数。该计数器设计成为减法

6、计数的模式,当其计数到0时,输出端OUT由高电平变为低电平。该输出与来自延时模块P_DETECT的输出进行"与"运算,便可得到单脉冲的输出。但是,根据以上的逻辑功能,还不能方便地用Verilog-HDL来描述,需要进一步分析、细化各模块的功能。另外,即使分析清楚了各模块,也应该将各模块分别进行仿真,正确无误后,再将所有的模块连接起来,进行系统级的仿真。8.3.5 延时模块的详细描述及仿真如图8所示,/RB的下跳沿将U1复位,上跳沿将U1的输出端置"1"。同时,/RB将U3复位,具输出端开启“三与门”。在这种情况下,时钟CLK通过”三与门”输入到U2的IN

7、端,U2延时一定时间(本设计为5个时钟周期)后输出下跳的脉冲,该脉冲持续一个时钟周期后又上跳,上跳沿输入到T触发器,T触发器的输出端封锁"三与门"。这一时序关系如图9所示。PDLYRECLK图8延时模块的逻辑功能描述CLKRBLOAD图9延时脉冲的时序关系图8中的延时单元DLY_UNIT可用图10的逻辑电路实现DLVJJNIT图10延时模块中的计数器至此,延时模块P_DLY已可用Verilog-HDL来描述了/*延时模块P_DLY的Verilog-HDL描述*/modulepulse(CLK,RB,DLY_OUT);/模块名及端口定义,范围至endmodule/输入端口定义

8、/输出端口定义/中间变量定义/D触发器inputCLK,RB;outputDLY_OUT;wireQ,QB,CNT_CLK;DFF_RU1(CLK,Q,RB);assignCNT_CLK=CLK&Q&QB;/赋值语句,实现把三与门的输出赋给CNT_CLKDELAYU2(RB,CNT_CLK,DLY_OUT);/延时单元TFFU3(DLY_OUT,QB,RB);/T触发器endmodule/*延时单元DELAY*/moduleDELAY(RESET_B,CLK,DIV_CLK);/模块名及端口定义,范围至endmoduleinputRESET_B,CLK;/输入端口定义outpu

9、tDIV_CLK;/输出端口定义reg2:0Q;/中间变量定义always(posedgeCLKornegedgeRESET_B)/always语句,表示每当CLK的上升沿或RESET_B的下降沿到来时,完成begin-end之间语句的操作if(!RESET_B)/如果RESET_B=0Q<=0;则Q=0,即:计数器清0elseif(Q=5)/否则,如果Q=5,即:计数器计数已满Q<二0;则Q=0,即:计数器清0elseQ<=Q+1;/否则,计数器加1assignDIV_CLK=(Q2&Q1&Q0);/赋值语句,实现把三与门的输出反向后赋值给DIV_CLKen

10、dmodule由于D触发器和T触发器的设计比较简单,这里就不做描述了,具体描述见参考文献(3)。图11为延时模块的仿真结果。从仿真结果可以看出与设计是相吻合的。HRB£litQtrscrZoomgmhnarkFg:rmat.lindow意与I*电噩b悬it引i4以口姆哥一包苜身割Insto567m力T*ave-default图11延时模块的仿真结果8.3.6 输入检测模块的详细描述及仿真图12为输入检测模块的逻辑电路。工作原理简述如下:(1)系统复位脉冲/RB使U1、U2复位。(2) U2的输出端允许CLK进入U1的CLK端。(3) U1的反相输出端开启与/KEY相关的与门,允许/K

11、EY的第一次有效。(4) /KEY无效(高电平),使U1的D端为低电平。(5) P_DETECT的输出始终为低电平。(6) /KEY有效(低电平)。(7) U1的D端为高电平。(8)待时钟CLK的上跳沿到来时,将U1的D端高电平打至U1的输出端并保持。此输出的上跳沿与时钟CLK同步。(9)此时,U1的反相输出端为低电平,该电平封锁与/KEY相关的与门,从而禁止/KEY的再次输入,直到复位脉冲/RB的到来。图12输入检测模块的逻辑功能描述/*输入检测模块P_DETECT的Verilog-HDL描述*/modulepulse(CLK,RB,KEY,OUT);/模块名及端口定义,范围至endmodu

12、leinputCLK,RB,KEY;/输入端口定义outputOUT;/输出端口定义wireCLK2,T_QB;/中间变量定义assignCLK2=CLK&T_QB;/赋值语句,实现把与门的输出赋给CLK2DFF_RU1(CLK2,KEY&OUT,OUT,OUT,RB);/D触发器TFFU2(OUT,T_QB,RB);/T触发器endmodule由于D触发器和T触发器的设计比较简单,这里就不做描述了,具体描述见参考文献(3)。图13为输入检测模块的仿真结果。可以看出,在复位脉冲之后,KEY的有效(低电平)使检测模块的输出为高电平,其一直保持到系统复位脉冲的到来。还可以看出,KE

13、Y有效后,输出并不一定立刻出现高电平,而要等到时钟CLK的上跳沿到来。在输出为高电平的情况下,即使KEY再次有效,也不会影响输出。这说明模块一旦接受到了输入,便立刻禁止在其之后的输入,除非接收到复位脉冲的到来。在仿真时,应该给出尽可能多的信号组合来测试系统,否则会常常将人引入误区。图13输入检测模块的仿真结果8.3.7 计数模块的详细描述计数模块的逻辑电路如图14所示。数据预置端IN的数据在LOAD有效(高电平)时被打入内部的寄存器。在EN有效的情况下,计数器开始做减法计数。当计数值减为0时,输出为低电平。此模块描述较简单,故省略模块的仿真。LDENDCNTOUT图14计数模块的逻辑功能描述8.3.8 可编程单脉冲发生器的系统仿真以上,已经对各个模块进行了描述。下面,就可以进行系统仿真了。可编程单脉冲发生器的系统描述可见参考文献(3)o图15为可编程单脉冲发生器的逻辑仿真结果。由仿真结果可以看出,单脉冲输出的持续时间(脉冲宽度)由输入的脉宽参数DATA_IN决定。图15可编程单脉冲发生器的逻辑仿真结果8.3.9 可编程单脉冲发

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论