数字频率计设计VHDL_第1页
数字频率计设计VHDL_第2页
数字频率计设计VHDL_第3页
数字频率计设计VHDL_第4页
数字频率计设计VHDL_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、实验十八数字频率计实验目的在MagicSOPC实验箱上实现8位十进制频率计的设计。被测信号从CLOCKO (数字信号时钟源)输入,经过检测后测得的频率值用数码管18显示。实验器材1、SOPC实验箱2、计算机(装有 Quartus II 7.0软件)实验预习1、了解数字频率计设计原理各主要模块的设计方法。2、 提前预习,编写好主模块的 VHDL程序。实验原理频率即信号1s内振动次数,因此测定信号的频率必须有一个脉宽为1秒的输入信号作为计数允许的信号;1秒计数结束后,计数值锁入锁存器,并为下一测频计数周期作准备的计数器清零。数字频率计框图如图18.1所示。由控制、计数、锁存、译码显示四部分组成。工

2、作原理为:控制信号产生电路对系统时钟分频后产生0.5Hz的门控信号gate,锁存允许信号 LE,清零信号MR。当gate为高电平时,计数器对被测信号 cin进行计数;1s后gate变为低电平, 计数器停止计数;当 gate为低电平、LE上升沿这两个条件同时满足时,锁存电路将32位计数结果锁存送译码显示电路;当gate为低电平、MR上升沿这两个条件同时满足时,计数器清零,为下一次计数做准备。各信号之间的时序关系见图18.2所示。系统时钟显示码(8位)数码管选通信号GateCin*控制信号产生电路8 位)1匸 /铀君.锁存电路4进位MR (清零)十进制 计数器1十进制 计数器2图18.1数字频率计

3、框图十进制 计数器81控制信号产生电路:根据选定的输入时钟信号设定分频系数,要求输出0.5Hz门控信号gate、1Hz锁存允许信号LE和1Hz清零信号MR。这几个信号控制整个系统的工作,非常 关键,要求先锁存后清零,否则计数结果可能丢失,参考时序图18.2所示。2、 计数模块:定义十进制计数器元件,有cp (时钟输入)、MR (清零输入,上升沿有效)、 gate (门控信号)三个个输入引脚, Q0Q3、co (进位)5个输出引脚。功能定义为 gate为 高电平时在cp上升沿计数;gate为低MR为高时清零。利用元件调用的方法组成 8位十进 制计数器3、 锁存电路:设计一 32位锁存器,定义ga

4、te (门控信号)、LE (锁存允许,上升沿有效) d0d31共34个输入引脚;Q0Q31共32个输出引脚。功能定义为gate为低时在LE上升沿 锁存。图18.2各信号之间的时序关系程序模块设计十进制模块Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_ un sig ned.all;En tity coun ter10 ISPORT(clk,rst:in std_logic;bcd:out std_logic_vector(3 dow nto 0); up:out std_logic);END en tity cou nt

5、er10;Architecture bhv of cou nter10 ISsig nal bcd_r:std_logic_vector(3 dow nto 0);sig nal up_r:std_logic;BeginProcess(clk,rst)BeginIF rst=1 THENbcd_r0);up_r=0:ELSIF clkEVENT AND clk=1 THENIF bcd_r=1001 THENbcd_r0);up_r=1;ELSE bcd_r=bcd_r+1;up_r=0;END IF;END IF;END PROCESS;bcd=bcd_r;up=up_r;END bhv;信

6、号控制模块Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;ENTITY kongzhi ISPORT(rst_in,sys_clk:in std_logic;gate,lock,rst:out std_logic);END ENTITY;Architecture one of kongzhi ISsignal count:std_logic_vector(25 downto 0);BeginPROCESS(sys_clk,rst_in)BeginIF rst_in=0 THEN count0);g

7、ate=0;lock=0;rst=0;ELSIF sys_clkEVENT AND sys_clk=1 THENIF count=10110111000110110000000011THEN count=00000000000000000000000000; gate=1;lock=0;rst=0;ELSIF count=10110111000110110000000010THEN gate=0;lock=0;rst=1; count=count+1;ELSIF count=10110111000110110000000001THEN gate=0;lock=1;rst=0; count=co

8、unt+1;ELSIF count=10110111000110110000000000THEN gate=0;lock=0;rst=0; count=count+1;ELSE count=count+1; gate=1;lock=0;rst=0;END IF;END IF;END PROCESS;END one;锁存模块Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;ENTITY suocun ISPort(lock:in std_logic;data_in:in std_logic_vecto

9、r(31 downto 0); data_out:out std_logic_vector(31 downto 0);END entity suocun;Architecture one of suocun ISsignal data_out_r:std_logic_vector(31 downto 0);BeginProcess(lock)BeginIF lock=1 THENdata_out_r=data_in;END IF;END PROCESS;data_out=data_out_r;END one;数码管显示译码模块LIBRARY IEEE;USE IEEE.STD_LOGIC_11

10、64.ALL;USE IEEE.STD_LOGIC_Arith.ALL;USE IEEE.STD_LOGIC_Unsigned.ALL;ENTITY xianshi ISPORT(clk:IN STD_LOGIC;datain:IN STD_LOGIC_VECTOR(31 DOWNTO 0); dig,seg:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END ENTITY;ARCHITECTURE one OF xianshi ISSIGNAL counter: std_logic_vector(2 DOWNTO 0);SIGNAL display: std_log

11、ic_vector(3 DOWNTO 0);SIGNAL seg_r: std_logic_vector(7 DOWNTO 0);SIGNAL dig_r: std_logic_vector(7 DOWNTO 0);BEGINAAA:PROCESS(clk)BEGINIF clkEVENT AND clk=1 THEN counter dig_r dig_r dig_r dig_r dig_r dig_r dig_r dig_rNULL;END CASE;END PROCESS BBB;CCC:PROCESS(counter,datain)BEGINCASE counter ISWHEN 000 = display display display display display display display displayNULL;END CASE;END PROCESS CCC;DDD:PROCESS(display)

温馨提示

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

最新文档

评论

0/150

提交评论