CPLD数字频率计设计报告.doc
《CPLD数字频率计设计报告.doc》由会员分享,可在线阅读,更多相关《CPLD数字频率计设计报告.doc(22页珍藏版)》请在沃文网上搜索。
1、 摘要:本设计给出了用VHDL语言实现110KHz的频率计数器方案,显示四位十进制测量结果。包括:分频模块,时基产生与测评时序控制电路模块,待测信号脉冲计数电路,锁存与译码显示控制电路。分频模块产生用于时序控制的基础时钟,和用于控制数码管显示的时钟。时基产生与测评时序控制电路模块产生计数清零、频率计数使能、计数完成锁存等控制信号,脉冲计数模块在计数使能信号控制下进行脉冲计数,1s中所记脉冲数即为待测信号频率,译码控制模块在锁存信号控制下直接输出控制二极管显示的信号。该系统可对直接输入的110KHz信号进行测试,响应时间2S,并在测量结束后数码管上显示测试信号频率,显示时间2S,保存到下一次测量
2、结束为止。关键词:VHDL语言、分频、时基控制、待测信号脉冲计数电路、锁存与译码显示。目录摘要2一、方案设计与论证4二、系统电路设计5 (一)系统总体框图5(二)系统各模块功能的实现5 1. 分频模块功能的实现2. 时基控制模块实现3. 频率计数模块实现(1)模十计数器(2)四位十进制计数4. 锁存与译码显示模块实现三、仿真与测试分析13四、设计总结14五、附件14完整电路图14完整程序代码15参考文献22一、 方案设计与论证(一)、分频电路模块:方案一:计数分频,分别产生1Hz、50Hz、1000Hz、10KHz四种时钟信号控制时基电路的使能与清零、锁存与译码显示电路,周期测量电路,该方案要
3、实现多个分频,相对繁琐。方案二:两次分频产生10KHz信号,第一次2500分频,得到20KHz信号,再二分频得到稳定的10KHz方波。能够实现方案二中要求同时更加精确。(二)、时基产生与测评控制电路模块:方案一:依次输出清零、清零结束使能、使能结束锁存,使能大于1S时,所得到的计数值要转变后才能得到频率值,若是二进制计数,容易转变,但不易过渡到BCD码控制输出显示;若BCD码计数,不易转变。方案二:对分频模块基础时钟计时,到相应时间依次输出清零、使能、锁存信号,保证各功能依次实现互不干扰,使能1S,所得到的计数值即为频率。(三)、待测信号脉冲计数电路模块:方案一:二进制计数,得到的频率值转化成
4、BCD码,控制锁存与译码电路显示。由于频率较大,二进制位数多达13位左右,转化成BCD码相对复杂,可行度低。方案二:四个十进制计数器串联计数,实现4位十进制输出,当地位的十进制计数器进位时,高一位的计数器累加1,直接读得十进制的频率值,易于控制数码管显示。(四)、锁存与译码显示模块:方案一:将接受到的BCD码转换成控制数码管显示得信号,并在锁定信号到来时控制数码管显示,转换繁琐,但不能实现输出稳定的显示信号,不能满足设计要求。方案二:根据内部储存的数值,输出待测信号的频率值,并保存到下一次锁定信号到来接收新的频率值,根据锁定信号来接受外部传输的频率数据并锁存,保持输出控制数码管显示信号,知道下
5、次接受才改变。二、 系统电路设计(一)、系统框图(二)、系统各模块功能的实现1. 分频模块功能的实现输入50MHz ,输出cp端为10KHzss 为待测频率。为了测试该设计的功能,由于外部无已知的输入待测信号,所以也有分屏产生待测的信号。代码:dividefreENTITY dividefre IS PORT ( cp_50M: IN std_logic; cp: OUT std_logic; -10khz ss: OUT std_logic );END ENTITY;ARCHITECTURE behavior OF dividefre IS signal tout1:std_logic_ve
6、ctor(11 downto 0) ; -count 2500 signal tout2:std_logic_vector(5 downto 0); -count 2 signal cp_1: std_logic; BEGIN PROCESS(cp_50M) BEGIN IF(cp_50Mevent and cp_50M=1) THEN if (tout1=100111000011) then tout1=000000000000;cp_1=1; else tout1=tout1+1;cp_1=0; end if; END IF; END PROCESS; PROCESS(cp_1) BEGI
7、N IF(cp_1event and cp_1=1) THEN tout2=tout2+1; END IF; cp=tout2(0); ss=tout2(3); END PROCESS; END behavior;2. 时基控制模块实现:输入10KHz信号;输出clr:清零;en:使能;lock:锁定。代码:timecontrolENTITY timecontrol IS PORT ( clk: in std_logic; -10khz clr: buffer std_logic; en: buffer std_logic; lock: buffer std_logic );END ENTIT
8、Y;ARCHITECTURE behave OF timecontrol IS signal count:std_logic_vector(13 downto 0); begin PROCESS(clk) begin if (clkevent and clk=1) then if (count=10111001111100) then count=00000000000000; clr=1;en=0;lock=0;-11900 elsif(count=00000011001000) then count=count+1; clr=0;en=0;lock=0;-200 elsif(count=0
9、0001100100000) then count=count+1; clr=1;en=0;lock=0;-800 elsif(count=00001111101000) then count=count+1; clr=1;en=1;lock=0;-1000 elsif(count=10101011111000) then count=count+1; clr=1;en=0;lock=0;-11000 elsif(count=10101111000000) then count=count+1; clr=1;en=0;lock=1;-11200 elsif(count=101110000110
10、00) then count=count+1; clr=1;en=0;lock=0;-11800 else count=count+1;clr=clr;en=en;lock=lock; end if; end if; end process;END behave;3. 频率计数模块实现:(1)模十计数器:ci:使能;nrest:清零;clk:计数脉冲。co:进位。qcnt:BCD码对应计数值。代码:cntm10ENTITY cntm10 is port ( ci : in std_logic; nreset : in std_logic; clk : in std_logic; co : ou
11、t std_logic; qcnt : buffer std_logic_vector(3 downto 0) );end cntm10;architecture behave of cntm10 is beginprocess (clk,nreset) begin if (nreset=0) then qcnt=0000;elsif (clkevent and clk=1) then if (ci=1) then if (qcnt=9) then qcnt=0000; co=1; else qcnt=qcnt+1; co=0; end if; end if;end if;end proces
12、s;end behave;(2)四位十进制计数:四个十进制计数器串联,clr、en是共同控制端,clk从最低位输入开始计数。得到输出的四位十进制数(BCD码)。代码:frequtestENTITY frequtest IS PORT ( ss :in std_logic; -in clk:in std_logic; -10khz clr:in std_logic; -set0 en :in std_logic; -2minite q3,q2,q1,q0:out std_logic_vector(3 downto 0) );END ENTITY;architecture behave of fr
13、equtest is component cntm10 port ( ci : in std_logic; nreset : in std_logic; clk : in std_logic; co : out std_logic; qcnt : buffer std_logic_vector(3 downto 0) );end component;signal co1,co2,co3,co4 :std_logic; BEGIN u0:cntm10 port map (en,clr,ss,co1,q0); u1:cntm10 port map (en,clr,co1,co2,q1); u2:c
14、ntm10 port map (en,clr,co2,co3,q2); u3:cntm10 port map (en,clr,co3,co4,q3);end behave;4. 锁存与译码显示模块实现:cp为扫频的10KHz脉冲,lock是锁存信号,q对应四位要显示得值。 Seg为显示得段码,scan为控制的显示位使屏幕动态改变。代码:displayENTITY display IS PORT ( cp: IN std_logic; - 10khz lock: IN std_logic; q3,q2,q1,q0:in std_logic_vector(3 downto 0); seg: OUT
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CPLD 数字频率计 设计 报告