版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.z一.系统设计方案根据系统设计要求,需要实现一个4位十进制数字频率计,其原理框图如图1所示。主要由脉冲发生器电路、测频控制信号发生器电路、待测信号计数模块电路、锁存器、七段译码驱动电路及扫描显示电路等模块组成。测频控制信号发生电路标准时钟CLK脉冲发生器测频控制信号发生电路标准时钟CLK脉冲发生器扫描控制LOCK扫描控制LOCKENENCLRCLR待测信号F_IN锁存与译码显示驱动电路待测信号F_IN锁存与译码显示驱动电路数码显示待测信号计数电路数码显示待测信号计数电路图1数字频率计组成原理框图由于是4位十进制数字频率计,所以计数器T10需用4个,7段显示译码器也需用4个。频率测量的根本原理是计算每秒钟内待测信号的脉冲个数。为此,测频控制信号发生器F_IN_T应设置一个控制信号时钟CLK,一个计数使能信号输出端EN、一个与EN输出信号反向的锁存输出信号LOCK和清零输出信号CLR。假设CLK的输入频率为1HZ,则输出信号端EN输出一个脉宽恰好为1秒的周期信号,可以作为闸门信号用。由它对频率计的每一个计数器的使能端进展同步控制。当EN高电平时允许计数,低电平时停顿计数,并保持所计的数。在停顿计数期间,锁存信号LOCK的上跳沿将计数器在前1秒钟的计数值锁存进4位锁存器LOCK,由7段译码器译出并稳定显示。设置锁存器的好处是:显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,清零信号CLR对计数器进展清零,为下1秒钟的计数操作作准备。二.单元电路设计:1.时基产生与测频时序控制电路模块时基产生与测频时序控制电路主要产生计数允许信号EN、清零信号CLR和锁存信号LOCK。时基产生电路:图2时基产生模块顶层图其VHDL程序清单如下:--CLK_S*_CTRLLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCLK_S*_CTRLISPORT(CLK:INSTD_LOGIC;LOCK:OUTSTD_LOGIC;EN:OUTSTD_LOGIC;CLR:OUTSTD_LOGIC);END;ARCHITECTUREARTOFCLK_S*_CTRLISSIGNALQ:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK)BEGINIF(CLK'EVENTANDCLK='1')THENIFQ="1111"THENQ<="0000";ELSEQ<=Q+'1';ENDIF;ENDIF;EN<=NOTQ(3);LOCK<=Q(3)ANDNOT(Q(2))ANDQ(1);CLR<=Q(3)ANDQ(2)ANDNOT(Q(1));ENDPROCESS;ENDART;测频时序控制电路:为实现系统功能,控制电路模块需输出三个信号:一是控制计数器允许对被测信号计数的信号EN;二是将前一秒计数器的计数值存入锁存的锁存信号LOCK;三是为下一个周期计数做准备的计数器清零信号CLR。上述三个信号产生的顺序是:先提供计数信号,这种信号使计数器在1s提供锁存信号,这种信号对计数值进展锁存;最后是发出清零信号,这种信号可对计数器清零。计数器清零完毕后又可重新计数,计数进入第二个周期。不难看出,控制电路模块实际上就是一个控制器,它需要一个周期为1s的信号作为产生并控制控制器输出的时基信号CLK0。控制电路模块中控制器及端口如图3所示:图3测频时序控制模块顶层图其VHDL程序清单如下:--F_IN_T.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYF_IN_TISPORT(CLK:INSTD_LOGIC;EN:INSTD_LOGIC;CLR:INSTD_LOGIC;QA,QB,QC,QD:BUFFERSTD_LOGIC_VECTOR(3DOWNTO0));ENDF_IN_T;ARCHITECTUREARTOFF_IN_TISPONENTT10PORT(CLK,EN,CLR:INSTD_LOGIC;COUNT10:BUFFERSTD_LOGIC_VECTOR(3DOWNTO0));ENDPONENT;SIGNALS2:STD_LOGIC;SIGNALS3:STD_LOGIC;SIGNALS4:STD_LOGIC;BEGINS2<=NOTQA(3);S3<=NOTQB(3);S4<=NOTQC(3);U1:T10PORTMAP(CLK,EN,CLR,QA);U2:T10PORTMAP(S2,EN,CLR,QB);U3:T10PORTMAP(S3,EN,CLR,QC);U4:T10PORTMAP(S4,EN,CLR,QD);ENDART;2.待测信号脉冲计数电路模块待测信号脉冲信号脉冲计数电路是对待测脉冲信号的频率进展测量,它可由4个十进制加法计数器组成,其中EN为计数选通控制信号,CLR为计数器清零信号。在计数器清零信号CLR清零后,当计数选通控制信号EN有效时,开场对待测信号进展计数。如果计数选通控制信号EN的宽度为1s,则计数结果就为待测信号的频率;如果计数选通控制信号EN的宽度为100ms,则待测信号的频率等于计数结果的10倍。该模块将对输入信号进展十进制计数。它虽然由多个十进制计数器组成,但采用CPLD后,设计时只要先制作一个单个的十进制计数器,然后再将多个构造一样的单个十进制计数器在CPLD内部进展连接就可组合成为一个完整的计数电路模块。为实现系统功能,十进制计数器需要设置三个输入端:即被测信号输入端CLK、计数器状态清零端CLR和计数器工作使能端EN。需要设置四个输出端,即COUNT0、COUNT1、COUNT2和COUNT3,并由这四个输出端输出四位BCD码来表示十进制数。需要说明,上述十进制计数器都是满10进1,且进位时计数器清零并重新计数。计数电路模块中的单个计数器符号及端口功能如图4所示:图4待测信号脉冲计数模块顶层图其VHDL程序清单如下:--T10.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYT10ISPORT(CLK,EN,CLR:INSTD_LOGIC;COUNT10:BUFFERSTD_LOGIC_VECTOR(3DOWNTO0));ENDT10;ARCHITECTUREONEOFT10ISBEGINPROCESS(CLK,CLR,EN)BEGINIFCLR='1'THENCOUNT10<="0000";ELSIF(CLK'EVENTANDCLK='1')THENIF(EN='1')THENIFCOUNT10="1001"THENCOUNT10<="0000";ELSECOUNT10<=COUNT10+'1';ENDIF;ENDIF;ENDIF;ENDPROCESS;ENDONE;3.锁存与译码显示控制电路模块锁存与译码显示控制电路用于实现记忆显示,在测量过程中不刷新新的数据,直到测量过程完毕后,锁存显示测量结果,并且保存到下一次测量完毕。其功能是对四位BCD码进展锁存并且转换成为对应的4组七段码,用于驱动数码管。锁存电路模块该模块可使系统显示电路的工作稳定而可靠,防止计数电路模块清零时引起显示闪烁的现象。锁存电路模块是由多个锁存器组成。每个锁存器都是用来锁存与其单独相连的计数器的输出数据。由于每个锁存器锁存的都是4位2进代码表示的十进制数,其功能完全一样,因此只需要设计制作一个锁存器就可连接组合成一个锁存电路模块。为实现系统功能,锁存器需设置四个数据输入端:即QA、QB、QC和QD,并由它们输入计数器的计数值。需设置一个使锁存器工作的使能端L0CK。还需设置四个锁存数据的输出端:即LEDA、LEDB、LEDC和LEDD。锁存电路模块中单个锁存器的符号及端口功能如图5所示。图54位锁存模块顶层图其VHDL程序清单如下:--LOCK.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYLOCKISPORT(LOCK:INSTD_LOGIC;QA,QB,QC,QD:INSTD_LOGIC_VECTOR(3DOWNTO0);LEDA,LEDB,LEDC,LEDD:OUTSTD_LOGIC_VECTOR(6DOWNTO0));END;ARCHITECTUREARTOFLOCKISSIGNALL0,L1,L2,L3:STD_LOGIC_VECTOR(3DOWNTO0);PONENTSEG7PORT(BCD:INSTD_LOGIC_VECTOR(3DOWNTO0);DOUT:OUTSTD_LOGIC_VECTOR(6DOWNTO0));ENDPONENT;BEGINPROCESS(LOCK)BEGINIF(LOCK'EVENTANDLOCK='1')THENL0<=QA;L1<=QB;L2<=QC;L3<=QD;ENDIF;ENDPROCESS;U0:SEG7PORTMAP(L0,LEDA);U1:SEG7PORTMAP(L1,LEDB);U2:SEG7PORTMAP(L2,LEDC);U3:SEG7PORTMAP(L3,LEDD);ENDART;译码电路模块:该模块可对表示转换后的十进制数的4位2进制代码进展编码,此模块可直接连接数码管驱动器,从而驱动数码管显示出相应阿拉伯数字等字符。与上述电路模块设计一样,它也只需要先设计一个单个的译码器,然后通过连接组合就可构成系统的译码电路模块,从而实现系统的译码功能。为实现系统的功能,单个译码器需要设置4个数据输入端:即BCD0、BCD1、BCD2和BCD3,并由这些端口输入锁存电路模块输出的4位2进制数据。需要设置7个输出端:即DOUT、DOUT1、DOUT2、DOUT3、DOUT4、DOUT5和DOUT6,它们分别连接7段数码管的7个显示输入端。译码电路模块中单个译码器符号及端口功能如图6所示:图67段译码显示模块顶层图其VHDL程序清单如下:--SEG7LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSEG7ISPORT(bcd:INSTD_LOGIC_VECTOR(3DOWNTO0);dout:OUTSTD_LOGIC_VECTOR(6DOWNTO0));ENDSEG7;ARCHITECTUREaOFSEG7ISBEGINPROCESS(bcd)BEGINCASEbcdISWHEN*"0"=>dout<="0111111";WHEN*"1"=>dout<="0000110";WHEN*"2"=>dout<="1001011";WHEN*"3"=>dout<="1000111";WHEN*"4"=>dout<="0110110";WHEN*"5"=>dout<="1101101";WHEN*"6"=>dout<="1111101";WHEN*"7"=>dout<="0000111";WHEN*"8"=>dout<="1111111";WHEN*"9"=>dout<="1101111";WHENOTHERS=>dout<="0000000";ENDCASE;ENDPROCESS;ENDa;4.扫描电路模块:由于本次硬件下载中所使用的EDA试验箱只支持一位七段数码显示,所以在最后显示局部需要设计扫描电路,使得4位数字同时显示出来。四个数码管分别由选通信号k0~k3来选择。被选通的数码管显示数据。其中CLK为扫描时钟;SG为7段控制信号,由高位至低位分别接g、f、e、d、c、b、a七个段;BT是位选控制信号。程序中T4是一个计数器,作为扫描计数信号,由进程P2生成;进程P3是7段译码查表输出程序。其模块顶层原理图如图7所示:图7扫描显示模块顶层原理图其VHDL程序清单如下:SCAN.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSCANISPORT(CLK:INSTD_LOGIC; LEDA:INSTD_LOGIC_VECTOR(6DOWNTO0);LEDB:INSTD_LOGIC_VECTOR(6DOWNTO0);LEDC:INSTD_LOGIC_VECTOR(6DOWNTO0);LEDD:INSTD_LOGIC_VECTOR(6DOWNTO0); SG:OUTSTD_LOGIC_VECTOR(6DOWNTO0); BT:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDSCAN;ARCHITECTUREONEOFSCANIS SIGNALT4:STD_LOGIC_VECTOR(1DOWNTO0); SIGNALa:INTEGERRANGE0TO3;BEGINP1:PROCESS(T4)BEGINCASET4IS WHEN"00"=>BT<="0001";a<=0; WHEN"01"=>BT<="0010";a<=1; WHEN"10"=>BT<="0100";a<=2; WHEN"11"=>BT<="1000";a<=3; WHENOTHERS=>null;ENDCASE;ENDPROCESSP1;P2:PROCESS(CLK)BEGIN IFCLK'EVENTANDCLK='1'THENT4<=T4+1; ENDIF;ENDPROCESSP2;P3:PROCESS(a)BEGINCASEaIS WHEN0=>SG<=LEDD; WHEN1=>SG<=LEDC; WHEN2=>SG<=LEDB; WHEN3=>SG<=LEDA; WHENOTHERS=>NULL;ENDCASE;ENDPROCESSP3;ENDONE;三.各模块设计仿真:1.时基产生与测频时序控制电路仿真图8时基产生与测频时序控制电路仿真2.十进制加法计数器仿真图9十进制加法计数器电路仿真3.待测信号脉冲计数器仿真图10待测信号脉冲计数器电路仿真4.译码显示电路仿真图11译码显示电路仿真5.锁存与译码显示控制电路仿真图12锁存与译码显示控制电路仿真6.扫描电路仿真图13扫描显示电路仿真7.简易数字频率计整个系统仿真图14简易数字频率计系统仿真四.简易数字频率计顶层原理图图15简易数字频率计顶层原理图五.编程下载:以上程序经综合仿真后,结果根本符合设计要求。整个频率计设计完成后,其外引脚图如图16所示。原来需要十几块芯片组成的频率计,现在只用一块芯片即可实现。下载适配后,只在输入端接上标准时钟频率和待测频率,相应的输出端接上LED7段显示数码管,即可显示频率。硬件电路简捷,体积小,所有电路都在一块芯片里,因此性能稳定。图16数字频率计CPLD外管脚图六.设计心得体会:第一次真正的感觉到自己是学电信专业的,第一次真正体会到自己要搞完一个大型的程序还是不容易的事。提前几天开场拿到本次程序设计题的时候确实有点儿兴奋,心想着尽量要独立快速而又高质量的完成这个设计。可是,当天就发现我对这个基于CPLD的嵌入式系统一点头绪都没有,因为到现在快毕业了对嵌入式真正含义还不是很透彻。随后就是一个劲的去图书馆查阅相关资料,看书上有没有关于数字频率计设计的内容。可是书上的东西好似并没有帮到我什么忙,使我更感到无从下手。就这样一直拖到了不能再拖的时候了,刚开场的豪言壮语也都没有了。一阵慌乱后,终于定下心来了终于找到了一个比拟类似的VHDL程序的简易数字频率计设计。这也使得我今天的程序颇有类同的感觉。刚开场看到那设计的时候一下子就被很多行的VHDL语言给吓着了,当时真想放弃,最后还是硬着头皮看了下去。开场真是很多看不懂,很多传递符号都是以前没有看到过的。好在前几天看过书,对硬件描述语言还有一点的印象,查过书后都能搞清楚。对我来说是新东西的还有存放器的设计等,最后通过查找书本大概的把这个系统看懂了。看了几遍课题设计要求和书上给的源程序后对如何写这一方面的程序有了一定的了解,于是就尝试着自己开场作起
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024八年级地理上册第一章疆域和人口-从世界看中国学情评估晋教版
- 大学生心理健康教育(河南经贸职业学院版)学习通测试及答案
- 《金版学案》2022届高考政治一轮复习课时作业:必修2-4单元总结-
- 2025年人教版八年级数学寒假预习 第03讲 二次根式的加减(3个知识点+7大考点举一反三+过关测试)
- 2025年人教版七年级数学寒假复习 专题05 一元一次方程(4重点串讲+13考点提升+过关检测)
- 【状元之路】2022高考地理总复习随堂训练1-2-4全球气候变化和气候类型的判读-
- 【创新设计】2021高考化学(广东专用)二轮-微题型专练17
- 四川省绵阳2024-2025学年高二上学期数学期末模拟试题(五)(含答案)
- 【原创】江苏省2021届高三上学期第三次周测数学试题
- 部编版语文二年级下册第五单元综合素养测评 A卷(含答案)
- 2025年首都机场集团招聘笔试参考题库含答案解析
- 2025年医院院感工作计划
- 中国珠宝市场发展报告(2019-2024)(中英)-中国珠宝玉石首饰行业协会
- 2024年陕西省安全员《A证》考试题库及答案
- 2024版新能源汽车购置补贴及服务保障合同3篇
- 2024-2025学年华东师大新版八年级上册数学期末复习试卷(含详解)
- 期末测试卷-2024-2025学年语文四年级上册统编版
- 安徽省芜湖市2023-2024学年高一上学期期末考试 数学 含解析
- 2023-2024学年广东广州番禺区四年级数学第一学期期末综合测试试题含答案
- 九年级物理上册期末考试试卷及答案
- 初中物理公式表
评论
0/150
提交评论