计数计时器的VHDL设计.ppt_第1页
计数计时器的VHDL设计.ppt_第2页
计数计时器的VHDL设计.ppt_第3页
计数计时器的VHDL设计.ppt_第4页
计数计时器的VHDL设计.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

计数 计时器的VHDL设计 本课要解决的问题 一般计时器的VHDL描述 六十进制计数器和计时器的VHDL设计 二十四进制计时器的VHDL设计 数字钟的VHDL设计 一 计数器的作用 在时钟的驱动下 对输入脉冲进行计数 如果输入的脉冲为时钟脉冲 就成为计时器 当计数值达到一定数值 计数器产生进位输出 并复位 二 计数器的设计 P63 67 简单计时器的设计 六十进制计数器和计时器的设计 二十四进制计时器的设计 数字钟的设计 最简单的计时器 ENTITYCNT4ISPORT CLK INBIT Q BUFFERINTEGERRANGE15DOWNTO0 END ARCHITECTUREbhvOFCNT4ISBEGINPROCESS CLK BEGINIFCLK EVENTANDCLK 1 THENQ Q 1 ENDIF ENDPROCESS ENDbhv BUFFER模式才可以读取 在时钟CLK信号的驱动下 Q对时钟信号CLK进行计数 由于Q为BUFFER模式 所以可以读取Q的值 例3 19 表式Q Q 1的右项与左项并非处于相同的时刻内 对于时序电路 除了传输延时外 前者的结果出现于当前时钟周期 后者 即左项要获得当前的Q 1 需等待下一个时钟周期 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYCNT4ISPORT CLK INSTD LOGIC Q OUTSTD LOGIC VECTOR 3DOWNTO0 END ARCHITECTUREbhvOFCNT4ISSIGNALQ1 STD LOGIC VECTOR 3DOWNTO0 BEGINPROCESS CLK BEGINIFCLK EVENTANDCLK 1 THENQ1 Q1 1 ENDIF ENDPROCESS Q Q1 ENDbhv 例3 20 std logic unsigned程序包包含对运算符的重载 定义信号Q1 Q1作为内部信号 可以进行改写和读取 对 进行运算符重载 标准逻辑类型可进行加法 加上异步复位和置位的十进制计时器 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYCNT10ISPORT CLK RST EN INSTD LOGIC CQ OUTSTD LOGIC VECTOR 3DOWNTO0 COUT OUTSTD LOGIC ENDCNT10 RST为复位端 EN为使能端 COUT为进位输出端 ARCHITECTUREbehavOFCNT10ISBEGINPROCESS CLK RST EN VARIABLECQI STD LOGIC VECTOR 3DOWNTO0 BEGINIFRST 1 THENCQI OTHERS 0 ELSIFCLK EVENTANDCLK 1 THENIFEN 1 THENIFCQI 0 ENDIF ENDIF ENDIF IFCQI 9THENCOUT 1 ELSECOUT 0 ENDIF CQ CQI ENDPROCESS ENDbehav 异步复位 CQI OTHERS 0 为省略赋值方式 对CQI清零 检测是否允许计数 允许计数 检测是否小于9 大于9 计数值清零 计数大于等于9 输出进位信号 将计数值向端口输出 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC unsigned ALL ENTITYbcd60countISPORT clk bcd1wr bcd10wr cin INSTD LOGIC co OUTSTD LOGIC datain INSTD LOGIC VECTOR 3DOWNTO0 bcd10n BUFFERSTD LOGIC VECTOR 2DOWNTO0 bcd1n BUFFERSTD LOGIC VECTOR 3DOWNTO0 ENDbcd60count 六十进制计数器 实体 六十进制计数器的设计 clk 时钟端 bcd1wr bcd10wr 计数初值的个位和十位允许写入端 datain 计数初值输入端 bcd1n bcd10n 计数值的个位输出和十位输出 co 计数值进位输出 结构体 ARCHITECTUREbehaveOFbcd60countISBEGINENDbehave PROCESS clk bcd1wr BEGINIF bcd1wr 1 THENbcd1n datain ELSIF clk EVENTANDclk 1 THENIF cin 1 THENIF bcd1n 1001 THENbcd1n 0000 ELSEbcd1n bcd1n 1 ENDIF ENDIF ENDIF ENDPROCESS PROCESS bcd10n bcd1n cin BEGINIF cin 1 ANDbcd1n 1001 ANDbcd10n 101 THENco 1 ELSEco 0 ENDIF ENDPROCESS PROCESS clk bcd10wr BEGINIF bcd10wr 1 THENbcd10n datain 2DOWNTO0 ELSIF clk EVENTANDclk 1 THENIF cin 1 ANDbcd1n 1001 THENIF bcd10n 101 THENbcd10n 000 ELSEbcd10n bcd10n 1 ENDIF ENDIF ENDIF ENDPROCESS PROCESS clk bcd1wr BEGINIF bcd1wr 1 THENbcd1n datain ELSIF clk EVENTANDclk 1 THENIF cin 1 THENIF bcd1n 1001 THENbcd1n 0000 ELSEbcd1n bcd1n 1 ENDIF ENDIF ENDIF ENDPROCESS 进程处理个位计数 bcd1wr为 1 时 对个位bcd1n进行置位 在时钟信号驱动下 当进位输入cin为1时 若bcd1n为9则归零 否则bcd1n加1计数 PROCESS clk bcd10wr BEGINIF bcd10wr 1 THENbcd10n datain 2DOWNTO0 ELSIF clk EVENTANDclk 1 THENIF cin 1 ANDbcd1n 1001 THENIF bcd10n 101 THENbcd10n 000 ELSEbcd10n bcd10n 1 ENDIF ENDIF ENDIF ENDPROCESS 进程处理十位计数 bcd10wr为 1 时 对十位bcd10n进行置位 在时钟信号驱动下 当进位输入cin为1时 个位bcd1n为9 若十位bcd10n为5 则bcd10n归零 否则bcd1n加1计数 PROCESS bcd10n bcd1n cin BEGINIF cin 1 ANDbcd1n 1001 ANDbcd10n 101 THENco 1 ELSEco 0 ENDIF ENDPROCESS 进程处理进位输出 当个位bcd1n为9 十位bcd10为5 即计数值为59时 若cin为1表示再来一个进位输入需要计数 则计数器有进位要输出 六十进制计时器 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYclk sISPORT clk INSTD LOGIC q1 BUFFERINTEGERRANGE0TO9 qt BUFFERINTEGERRANGE0TO6 co OUTSTD LOGIC ENDclk s ARCHITECTUREbehavOFclk sISBEGINPROCESS clk BEGINIF clk EVENTANDclk 1 THENIF q1 9 THENq1 0 ELSEq1 q1 1 ENDIF ENDIF ENDPROCESS PROCESS clk q1 BEGINIF clk EVENTANDclk 1 THENIF q1 9 THENIF qt 5 THENqt 0 ELSEqt qt 1 ENDIF ENDIF ENDIF ENDPROCESS PROCESS clk q1 qt BEGINIF clk EVENTANDclk 1 THENIF qt 5ANDq1 9 THENco 1 ELSEco 0 ENDIF ENDIF ENDPROCESS ENDbehav 二十四进制计数器 ENTITYclk hISPORT clk INBIT q1 BUFFERINTEGERRANGE0TO9 qt BUFFERINTEGERRANGE0TO2 co OUTBIT ENDclk h 二十四进制计数器的设计 ARCHITECTUREa clk hOFclk hISBEGINPROCESS clk qt BEGINIF clk EVENTANDclk 1 THENIF qt 2andq1 3 THENq1 0 ELSIF q1 9 THENq1 0 ELSEq1 q1 1 ENDIF ENDIF ENDPROCESS PROCESS q1 clk BEGINIF clk EVENTANDclk 1 THENIF q1 3 THENIF qt 2 THENqt 0 ENDIF ELSIF q1 9 THENqt qt 1 ENDIF ENDIF ENDPROCESS PROCESS q1 qt clk BEGINIF clk EVENTANDclk 1 THENIF q1 3ANDqt 2 THENco 1 ELSEco 0 ENDIF ENDIF ENDPROCESS ENDa clk h 实验 数字钟的设计 三 分频器 分频器以计数器为基础实现 对输入脉冲进行计数 输入为N个脉冲时 输出为1个脉冲 输出信号即对输入信号进行N分频 输入N个脉冲 输出1个脉冲 ENTITYCNT4ISPORT CLK INBIT Q BUFFERINTEGERRANGE15DOWNTO0 COUT OUTBIT END ARCHITECTUREbhvOFCNT4ISBEGINPROCESS CLK BEGINIFCLK EVENTANDCLK 1 THENIFQ 4THENQ 0 ELSEQ Q 1 ENDIF ENDIF IFQ 4THENCOUT 1 ELSECOUT 0 ENDIF ENDPROCESS ENDbhv 分频器还可以设置占空比 占空比为P Q 其中P Q N 输入脉冲数小于等于P 输入脉冲数大于等于P ENTITYCNT4ISPORT CLK INBIT P ININTEGERRANGE15DOWNTO0 COUT OUTBIT END ARCHITECTUREbhvOFCNT4ISBEGINPROCESS CLK VARIABLEQ INTEGERRANGE15DOWNTO0 BEGINIFCLK EVENTANDCLK 1 THENIFQ 4THENQ 0 ELSEQ Q 1 ENDIF ENDIF IFQ PTHENCOUT 1 ELSECOUT 0 ENDIF ENDPROCESS ENDbhv 占空比为50 的偶数倍分频器 方案一 当计数器计数到N 2 1时 输出信号翻转 同时计数器复位 方案二 计数器为0 N 2 1时 输出信号为0 计数器为N 2 N 1时 输出信号为1 50 占空比的6分频器 Libraryieee useieee std logic 1164 all useieee std logic arith all useieee std logic unsigned all entityclk div1isport clk in instd logic clk out outstd logic endclk div1 第一种方案 architectureaofclk div1issignalclk outQ std logic 0 signalcountQ std logic vector 2downto0 000 beginprocess clk in beginif clk in eventandclk in 1 thenif countQ 2 thencountQ 0 endif endif endprocess clk out clk outQ enda 第二种方案 architecturebofclk div1issignalcountQ std logic vector 2downto0 beginprocess clk in beginif clk in eventandclk in 1 thenif countQ 0 endif endif endprocess process countQ beginif countQ 3 thenclk out 0 elseclk out 1 endif endprocess endb 占空比50 的奇数倍分频器 欲实现占空比为50 的2N 1分频器 则需要对待分频时钟上升沿和下降沿分别进行N分频 然后将两个分频所得的时

温馨提示

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

评论

0/150

提交评论