四位十进制频率计_第1页
四位十进制频率计_第2页
四位十进制频率计_第3页
四位十进制频率计_第4页
四位十进制频率计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、一、 设计任务与要求1. 设计4位十六进制频率计,学习较复杂的数字系统设计方法;2. 深入学习数字系统设计的方法与步骤;3. 用元件例化语句写出频率计的顶层文件;4. 用VHDL硬件描述语言进行模块电路的设计;5. 设计硬件要求:PC机,操作系统为Windows2000/XP,本课程所用系统均为max+plus II 5.1设计平台,GW48系列SOPC/EDA实验开发系统。二、总体框图2.1工作原理以及方案原理工作说明:根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计

2、数器清0信号。这3个信号可以由一个测频控制信号发生器产生,即图(a)中的TESTCTL,它的设计要求是,TESTCTL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT4B的ENA使能端进行同步控制。当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要产生一个锁存信号LOAD,在该信号上升沿时,将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,必须有一清零信号RST_CNT对计数器进行清零

3、,为下1秒钟的计数操作作准备。其工作时序波形如图(a)。图(a) 频率计测频控制器TESTCTL测控时序图2.2选择的设计方案:1. 根据频率计的工作原理,将电路划分成控制器、计数器、锁存器和LED显示几个模块, 控制器产生1秒脉宽的计数允许信号、锁存信号和计数器清零信号计数器对输入信号的脉冲数进行累计锁存器锁存测得的频率值LED显示将频率值显示在数码管上2. 根据图(a)、(b)及(1)(2)描述的4位十进制频率计的工作原理,利用max+ plusII 5.1对以上三者的程序进行文本编辑输入和仿真测试并根据图(b),写出频率计的顶层文件,并给出其测频时序波形,及其分析。3. 频率计设计硬件验

4、证。编译、综合和适配频率计顶层设计文件,并编程下载进入目标器件中。本实验目标器件是EP1K30TC144-3,实验电路选择模式0,4个数码管(数码4-1:PIO31-PIO16)显示测频输出;待测频率输入FIN由clock0输入,频率可选4Hz、256HZ . . .或更高;1HZ测频控制信号F1HZ可由clock2输入(用电路帽选选1Hz)。2.3、总体框图三、 选择器件1. 装有Quartus II软件的微型计算机。计算机的硬件尽可能高,至少可以实现Quartus II软件的使用。2. 硬件实现的芯片为PFGA/CPLD,芯片管脚的数量要保证足够设计的程序所要使用的数量,并且使其所有管脚都

5、有可分配的管脚,可以实现Quartus II上综合、适配的程序下载后可以顺利实现。四、 功能模块(1)、十六进制计数LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT4B IS PORT (CLK : IN STD_LOGIC; RST : IN STD_LOGIC; ENA : IN STD_LOGIC; OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT4B;ARCHITECTURE

6、 behav OF CNT4B IS SIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINP_REG: PROCESS(CLK, RST, ENA) BEGIN IF RST = '1' THEN CQI <= "0000" ELSIF CLK'EVENT AND CLK = '1' THEN IF ENA = '1' THEN CQI <= CQI + 1; END IF; END IF; OUTY <= CQI ; END PROCESS P_REG ;

7、-进位输出 COUT<=CQI(0) AND CQI(1) AND CQI(2) AND CQI(3);END behav;仿真图(2)扫描仪模块-seltimelibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity seltime is port(clk1,reset:in std_logic;D1,D2,D3,D4:in std_logic_vector(3 downto 0);daout:out std_logic_vec

8、tor(3 downto 0);sel:out std_logic_vector(2 downto 0);end seltime;architecture fun of seltime is signal count:std_logic_vector(2 downto 0);beginsel<=count;process(clk1,reset)beginif(reset='0')thencount<="000"elsif(clk1 'event and clk1='1')thenif(count>="011

9、")thencount<="000"else count<=count+1;end if;end if;case count is when"000"=>daout<=D1;when"001"=>daout<=D2;when"010"=>daout<=D3;when"011"=>daout<=D4;when others=>NULL;end case;end process;end fun;仿真图(3)、四位锁存libr

10、ary ieee; use ieee.std_logic_1164.all;entity reg4b is port ( load : in std_logic; din : in std_logic_vector(3 downto 0); dout : out std_logic_vector(3 downto 0) );end reg4b;architecture behav of reg4b isbegin process(load, din)begin if load'event and load = '1' then dout <= din; end i

11、f; end process;end behav;仿真图(4)、测频控制器library ieee; -use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity testctl is port ( clkk : in std_logic; cnt_en,rst_cnt,load : out std_logic); end testctl;architecture behav of testctl is signal div2clk : std_logic;begin process( clkk ) begin if c

12、lkk'event and clkk = '1' then div2clk <= not div2clk; end if; end process; process (clkk, div2clk) begin if clkk='0' and div2clk='0' then rst_cnt <= '1' else rst_cnt <= '0' end if; end process; load <= not div2clk ; cnt_en <= div2clk;end beh

13、av;仿真图(5)、七段数码显示-deled 模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity deled isport(num:in std_logic_vector(3 downto 0);led:out std_logic_vector(6 downto 0);end deled;architecture fun of deled isbeginled<="1111110"when num="0000"else "011

14、0000"when num="0001"else "1101101"when num="0010"else "1111001"when num="0011"else "0110011"when num="0100"else "1011011"when num="0101"else "1011111"when num="0110"else "1110000&q

15、uot;when num="0111"else "1111111"when num="1000"else "1111011"when num="1001"else "1110111"when num="1010"else "0011111"when num="1011"else "1001110"when num="1100"else "0111101"wh

16、en num="1101"else "1001111"when num="1110"else "1000111"when num="1111"end fun;仿真图(6)、3_8译码器模块-decode3-8library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity decode3_8 isport(sel:in std_logic_vector(2 downto 0);q:out std_log

17、ic_vector(7 downto 0); end decode3_8;architecture a of decode3_8 isbeginq<="11111110"when sel=0 else "11111101"when sel=1 else "11111011"when sel=2 else "11110111"when sel=3 else -"11101111"when sel=4 else - "11011111"when sel=5 else &qu

18、ot;11111111"end a;仿真图(7)、分频器模块-div_clk1library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity div_clk1 isport(clk_in:in std_logic;div_out:out std_logic;div_clk2:out std_logic);end div_clk1;architecture a of div_clk1 issignal fre_n:integer range 0 to 100000;signal clk_tmp:std_logic;signal

温馨提示

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

评论

0/150

提交评论