版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、设计方案介绍用VHDL语言,完成8位16进制频率计的设计。根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值被锁入锁存器,计数器清0,为下一测频计数周期作好准备。测频控制信号可以由一个独立的发生器来产生。数字频率计的关键组成部分包括一个测频控制信号发生器FTCTRL、计数器COUNTER32B和一个锁存器REG32B,另外包含外电路的信号整形电路、脉冲发生器、译码驱动电路和显示电路。其工作原理如下:FTCTRL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计中的32位二进制计数器COUNTER32B的ENABL使能端进行同步控制。当CNT_EN高电平时允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进锁存器REG32B中,并由外部的16进制7段译码器译出,显示计数值。设置锁存器的好处是数据显示稳定,不会由于周期性的清0信号而不断闪烁。锁存信号后,必须有一清0信号RST_CNT对计数器进行清零,为下1秒的计数操作作准备。该实验组要有四个模块组成:测频信号发生器、32位锁存器、32位计数器以及顶层文件。VHDL设计部分测频控制电路FTCTRL设计频率计的关键是设计一个测频率控制信号发生器,产生测量频率的控制时序。控制时钟信号clk取为1Hz,2分频后即可产生一个脉冲宽为1秒的时钟cnt-en,以此作为计数闸门信号。当cnt-en为高电平时,允许计数;当cnt-en由高电平变为低电平(下降沿到来)时,应产生一个锁存信号,将计数值保存起来;锁存数据后,还要在下次cnt-en上升沿到来之前产生零信号ret-en,将计数器清零,为下次计数做准备。程序代码如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYTESTCTLISPORT(CLK:INSTD_LOGIC;TSTEN:OUTSTD_LOGIC;CLR_CNT:OUTSTD_LOGIC;Load:OUTSTD_LOGIC);ENDTESTCTL;ARCHITECTUREbehavOFTESTCTLISSIGNALDiv2CLK:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENDiv2CLK<=NOTDiv2CLK;ENDIF;ENDPROCESS;PROCESS(CLK,Div2CLK)BEGINIFCLK='0'ANDDiv2CLK='0'THENCLR_CNT<='1';ELSECLR_CNT<='0';ENDIF;ENDPROCESS;Load<=NOTDiv2CLK;TSTEN<=Div2CLK;ENDbehav;生成LPM模块的流程:选择File→Creat/_Update→Creatsymbolfilesforcurrentfile,再选择Tools→Netlistviewers→RETviewer则可以看到生成的元件模块图。2)锁存器REG32B当cnt-en下降沿到来时,将计数器的计数值锁存,这样可由外部的七段译码器译码并在数码管显示。设置锁存器的好处是显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存器的位数应跟计数器完全一样。程序代码如下:LIBRARYieee;USEieee.std_logic_1164.all;ENTITYREGIS PORT ( clock :INSTD_LOGIC; data :INSTD_LOGIC_VECTOR(31DOWNTO0); q :OUTSTD_LOGIC_VECTOR(31DOWNTO0) );ENDREG;ARCHITECTURESYNOFREGIS SIGNALsub_wire0 :STD_LOGIC_VECTOR(31DOWNTO0); COMPONENTlpm_ff GENERIC( lpm_width :NATURAL; lpm_fftype :STRING ); PORT( clock :INSTD_LOGIC; q :OUTSTD_LOGIC_VECTOR(31DOWNTO0); data :INSTD_LOGIC_VECTOR(31DOWNTO0) ); ENDCOMPONENT;BEGIN q<=sub_wire0(31DOWNTO0); lpm_ff_component:lpm_ff GENERICMAP( LPM_WIDTH=>32, LPM_FFTYPE=>"DFF" ) PORTMAP( clock=>clock, data=>data, q=>sub_wire0 );ENDSYN;生成LPM模块的流程同上,这里不再赘述。观察到的元件模块图如下3)计数器COUNTER32B计数器以待测信号作为时钟,清零信号rst到来时,异步清零;cnt-en为高电平时开始计数。计数是以十进制数显示,本文设计了一个简单的频率计,如果要测比较高的频率信号,则将cout的输出位数增加,当然锁存器的位数也要增加。程序代码如下:LIBRARYieee;USEieee.std_logic_1164.all;ENTITYCNTIS PORT ( clock :INSTD_LOGIC; clk_en :INSTD_LOGIC; aclr :INSTD_LOGIC; q :OUTSTD_LOGIC_VECTOR(31DOWNTO0); cout :OUTSTD_LOGIC );ENDCNT;ARCHITECTURESYNOFCNTIS SIGNALsub_wire0 :STD_LOGIC; SIGNALsub_wire1 :STD_LOGIC_VECTOR(31DOWNTO0); COMPONENTlpm_counter GENERIC( lpm_width :NATURAL; lpm_direction :STRING ); PORT( clk_en :INSTD_LOGIC; aclr :INSTD_LOGIC; clock :INSTD_LOGIC; cout :OUTSTD_LOGIC; q :OUTSTD_LOGIC_VECTOR(31DOWNTO0) ); ENDCOMPONENT;BEGIN cout<=sub_wire0; q<=sub_wire1(31DOWNTO0); lpm_counter_component:lpm_counter GENERICMAP( LPM_WIDTH=>32, LPM_DIRECTION=>"UP" ) PORTMAP( clk_en=>clk_en, aclr=>aclr, clock=>clock, cout=>sub_wire0, q=>sub_wire1);ENDSYN;同样在这里不再赘述模块生成流程,最后观察到的元件模块图如下:4)顶层文件程序代码如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYFREQTESTISPORT(CLK:INSTD_LOGIC;FSIN:INSTD_LOGIC;CCOUT:OUTSTD_LOGIC;DOUT:OUTSTD_LOGIC_VECTOR(31DOWNTO0));ENDFREQTEST;ARCHITECTUREstrucOFFREQTESTISCOMPONENTTESTCTLPORT(CLK:INSTD_LOGIC;TSTEN:OUTSTD_LOGIC;CLR_CNT:OUTSTD_LOGIC;Load:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTCNTPORT(CLOCK:INSTD_LOGIC;ACLR:INSTD_LOGIC;CLK_EN:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(31DOWNTO0);COUT:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTREGPORT(CLOCK:INSTD_LOGIC;DATA:INSTD_LOGIC_VECTOR(31DOWNTO0);Q:OUTSTD_LOGIC_VECTOR(31DOWNTO0));ENDCOMPONENT;SIGNALTSTEN1:STD_LOGIC;SIGNALCLR_CNT1:STD_LOGIC;SIGNALLoad1:STD_LOGIC;SIGNALDTO1:STD_LOGIC_VECTOR(31DOWNTO0);SIGNALCARRY_OUT1:STD_LOGIC_VECTOR(6DOWNTO0);BEGINU1:TESTCTLPORTMAP(CLK=>CLK,TSTEN=>TSTEN1,CLR_CNT=>CLR_CNT1,Load=>Load1);U2:REGPORTMAP(CLOCK=>Load1,DATA=>DTO1,Q=>DOUT);U3:CNTPORTMAP(CLOCK=>FSIN,ACLR=>CLR_CNT1,CLK_EN=>TSTEN1,Q=>DTO1,COUT=>CCOUT);ENDstruc;将上述3个程序的.vhd文件和生成的.bsf文件复制到顶层文件工程所在的文件夹,再通过上述同样的流程生成元件模块图,如下:模拟调试部分对测频信号发生器文件进行仿真选择File→new→VectorWavefor→file→OK;再选择Edit→EndTime,设定仿真域的时间为50μs;然后选择View→UtilityWindow→NodeFinder,在Filter框中选中Pins:all,单击list,将出现的所有端口引脚名拉入到波形编辑器的左栏,保存,选择Processing下的StartSimulation,即可得到仿真波形图。对锁存器文件仿真步骤同上述一样,得到仿真波形图如下:对计数器文件仿真,得到如下波形:对顶层文件进行仿真,得到波形如下:a待测信号频率为2kHz由:T=1/f,所以T=1/2000=0.0005s=500μs所设置待测信号周期为500μs,如图:b待测信号频率为200Hz,待测信号周期为500msc待测信号频率为20Hz,待
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工方案评审意见6(3篇)
- 机械冲孔安全施工方案(3篇)
- 池壁爬梯如何施工方案(3篇)
- 漏斗改造项目施工方案(3篇)
- 玻璃桥如何施工方案(3篇)
- 监控电缆架空施工方案(3篇)
- 联合站配电施工方案(3篇)
- 设备安拆施工方案(3篇)
- 软起动柜施工方案(3篇)
- 酒类电商营销方案(3篇)
- DB1303∕T374-2024 餐饮服务现场快速检测工作规范
- 高处作业吊篮安装、拆卸、使用技术规程(2025版)
- ISO13485:2016医疗器械质量管理手册+全套程序文件+表单全套
- 2026年一级建造师一建水利水电实务案例分析考前八页纸考点重点知识预测记忆总结笔记
- 2025年国企智联招聘行测笔试题库
- 科技情报研究课题申报书
- 幼儿饮用水卫生安全培训课件
- 市场调研报告采购协议书
- 2025年保安员证考试题库(附答案+解析)
- 树木修剪应急服务方案(3篇)
- 溃疡性结肠炎中西医结合诊疗指南
评论
0/150
提交评论