四位十进制频率计.docx

上传人:b****6 文档编号:6759497 上传时间:2023-01-10 格式:DOCX 页数:13 大小:334.32KB
下载 相关 举报
四位十进制频率计.docx_第1页
第1页 / 共13页
四位十进制频率计.docx_第2页
第2页 / 共13页
四位十进制频率计.docx_第3页
第3页 / 共13页
四位十进制频率计.docx_第4页
第4页 / 共13页
四位十进制频率计.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

四位十进制频率计.docx

《四位十进制频率计.docx》由会员分享,可在线阅读,更多相关《四位十进制频率计.docx(13页珍藏版)》请在冰豆网上搜索。

四位十进制频率计.docx

四位十进制频率计

一、设计任务与要求

1.设计4位十六进制频率计,学习较复杂的数字系统设计方法;

2.深入学习数字系统设计的方法与步骤;

3.用元件例化语句写出频率计的顶层文件;

4.用VHDL硬件描述语言进行模块电路的设计;

5.设计硬件要求:

PC机,操作系统为Windows2000/XP,本课程所用系统均为max+plusII5.1设计平台,GW48系列SOPC/EDA实验开发系统。

二、总体框图

2.1工作原理以及方案

原理工作说明:

根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清0信号。

这3个信号可以由一个测频控制信号发生器产生,即图(a)中的TESTCTL,它的设计要求是,TESTCTL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT4B的ENA使能端进行同步控制。

当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。

在停止计数期间,首先需要产生一个锁存信号LOAD,在该信号上升沿时,将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。

设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。

锁存信号之后,必须有一清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作作准备。

其工作时序波形如图(a)。

图(a)频率计测频控制器TESTCTL测控时序图

2.2选择的设计方案:

1.根据频率计的工作原理,将电路划分成控制器、计数器、锁存器和LED显示几个模块,

控制器——产生1秒脉宽的计数允许信号、锁存信号和计数器清零信号

计数器——对输入信号的脉冲数进行累计

锁存器——锁存测得的频率值

LED显示——将频率值显示在数码管上

2.根据图(a)、(b)及

(1)

(2)描述的4位十进制频率计的工作原理,利用max+plusII5.1对以上三者的程序进行文本编辑输入和仿真测试并根据图(b),写出频率计的顶层文件,并给出其测频时序波形,及其分析。

3.频率计设计硬件验证。

编译、综合和适配频率计顶层设计文件,并编程下载进入目标器件中。

本实验目标器件是EP1K30TC144-3,实验电路选择模式0,4个数码管(数码4-1:

PIO31-PIO16)显示测频输出;待测频率输入FIN由clock0输入,频率

可选4Hz、256HZ...或更高;1HZ测频控制信号F1HZ可由clock2输入(用电路帽选选1Hz)。

2.3、总体框图

 

三、选择器件

1.装有QuartusII软件的微型计算机。

计算机的硬件尽可能高,至少可以实现QuartusII软件的使用。

2.硬件实现的芯片为PFGA/CPLD,芯片管脚的数量要保证足够设计的程序所要使用的数量,并且使其所有管脚都有可分配的管脚,可以实现QuartusII上综合、适配的程序下载后可以顺利实现。

四、功能模块

 

(1)、十六进制计数

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNT4BIS

PORT(CLK:

INSTD_LOGIC;

RST:

INSTD_LOGIC;

ENA:

INSTD_LOGIC;

OUTY:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

COUT:

OUTSTD_LOGIC);

ENDCNT4B;

ARCHITECTUREbehavOFCNT4BIS

SIGNALCQI:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

P_REG:

PROCESS(CLK,RST,ENA)

BEGIN

IFRST='1'THENCQI<="0000";

ELSIFCLK'EVENTANDCLK='1'THEN

IFENA='1'THENCQI<=CQI+1;

ENDIF;

ENDIF;

OUTY<=CQI;

ENDPROCESSP_REG;--进位输出

COUT<=CQI(0)ANDCQI

(1)ANDCQI

(2)ANDCQI(3);

ENDbehav;

仿真图

(2)扫描仪模块

--seltime

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

useieee.std_logic_arith.all;

entityseltimeis

port(

clk1,reset:

instd_logic;

D1,D2,D3,D4:

instd_logic_vector(3downto0);

daout:

outstd_logic_vector(3downto0);

sel:

outstd_logic_vector(2downto0));

endseltime;

architecturefunofseltimeis

signalcount:

std_logic_vector(2downto0);

begin

sel<=count;

process(clk1,reset)

begin

if(reset='0')then

count<="000";

elsif(clk1'eventandclk1='1')then

if(count>="011")then

count<="000";

else

count<=count+1;

endif;

endif;

casecountis

when"000"=>daout<=D1;

when"001"=>daout<=D2;

when"010"=>daout<=D3;

when"011"=>daout<=D4;

whenothers=>NULL;

endcase;

endprocess;

endfun;

仿真图

(3)、四位锁存

libraryieee;

useieee.std_logic_1164.all;

entityreg4bis

port(load:

instd_logic;

din:

instd_logic_vector(3downto0);

dout:

outstd_logic_vector(3downto0));

endreg4b;

architecturebehavofreg4bis

begin

process(load,din)

begin

ifload'eventandload='1'thendout<=din;

endif;

endprocess;

endbehav;

仿真图

(4)、测频控制器

libraryieee;-

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitytestctlis

port(clkk:

instd_logic;

cnt_en,rst_cnt,load:

outstd_logic);

endtestctl;

architecturebehavoftestctlis

signaldiv2clk:

std_logic;

begin

process(clkk)

begin

ifclkk'eventandclkk='1'thendiv2clk<=notdiv2clk;

endif;

endprocess;

process(clkk,div2clk)

begin

ifclkk='0'anddiv2clk='0'thenrst_cnt<='1';

elserst_cnt<='0';endif;

endprocess;

load<=notdiv2clk;cnt_en<=div2clk;

endbehav;

仿真图

(5)、七段数码显示

--deled模块

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitydeledis

port(num:

instd_logic_vector(3downto0);

led:

outstd_logic_vector(6downto0));

enddeled;

architecturefunofdeledis

begin

led<="1111110"whennum="0000"else

"0110000"whennum="0001"else

"1101101"whennum="0010"else

"1111001"whennum="0011"else

"0110011"whennum="0100"else

"1011011"whennum="0101"else

"1011111"whennum="0110"else

"1110000"whennum="0111"else

"1111111"whennum="1000"else

"1111011"whennum="1001"else

"1110111"whennum="1010"else

"0011111"whennum="1011"else

"1001110"whennum="1100"else

"0111101"whennum="1101"else

"1001111"whennum="1110"else

"1000111"whennum="1111";

endfun;

仿真图

(6)、3_8译码器模块

--decode3-8

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitydecode3_8is

port(sel:

instd_logic_vector(2downto0);

q:

outstd_logic_vector(7downto0)

);

enddecode3_8;

architectureaofdecode3_8is

begin

q<="11111110"whensel=0else

"11111101"whensel=1else

"11111011"whensel=2else

"11110111"whensel=3else

--"11101111"whensel=4else

--"11011111"whensel=5else

"11111111";

enda;

仿真图

(7)、分频器模块

--div_clk1

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitydiv_clk1is

port(clk_in:

instd_logic;

div_out:

outstd_logic;

div_clk2:

outstd_logic

);

enddiv_clk1;

architectureaofdiv_clk1is

signalfre_n:

integerrange0to100000;

signalclk_tmp:

std_logic;

signalfre_n1:

integerrange0to125;

signalclk_tmp1:

std_logic;

begin

div_out<=clk_tmp;

process(clk_in)

begin

iffalling_edge(clk_in)then

iffre_n>=99999then

fre_n<=0;

clk_tmp<=notclk_tmp;

else

fre_n<=fre_n+1;

endif;

endif;

endprocess;

div_clk2<=clk_tmp1;

process(clk_tmp)

begin

iffalling_edge(clk_tmp)then

iffre_n1>=124then

fre_n1<=0;

clk_tmp1<=notclk_tmp1;

else

fre_n1<=fre_n1+1;

endif;

endif;

endprocess;

enda;

仿真图

五、总体设计电路图

5.1顶层电路原理图

5.2总体模块仿真图

5.3管脚分配图

 

 

六、参考文献

1.曹昕燕,周凤臣,聂春燕。

EDA技术实验和课程设计。

北京:

清华大学出版社,2006。

2.潘松,黄继业。

EDA技术实用教程(第三版)。

北京:

科学出版社,2006。

3.谭会生。

EDA技术综合应用实例和分析。

西安:

西安电子科技大学出版社,2004。

欢迎您的下载,资料仅供参考!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 哲学历史

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1