综合实验:简易频率计设计、实验目的1、掌握多个数码管动态扫描显示的原理及设计方法。2、进一步了解时序电路的设计方法,掌握多位计数器相连的设计方法。3、掌握可编程设计的层次化设计方法,能熟练使用原理图方法从设计工程和库中调用元件,实现各元件的连接二、实验内容设计一个8位频率计,可以测量从1Hz到99999999Hz的信号频率。并将被测信号的频率在8个数码管上显示出来
综合实验: 简易频率计设计 设计一个8位频率计,可以测量从1Hz到99999999Hz的信号 频率。并将被测信号的频率在8个数码管上显示出来。 一、实验目的 二、实验内容 1、掌握多个数码管动态扫描显示的原理及设计方法。 2、进一步了解时序电路的设计方法,掌握多位计数器相连的 设计方法。 3、掌握可编程设计的层次化设计方法,能熟练使用原理图方 法从设计工程和库中调用元件,实现各元件的连接
三、实验原理采用一个标准的基准时钟,在单位时间(1秒)里对被测信号的脉冲数进行计数,即为信号的频率。整个系统分为5个模块:氵测频信号控制模块,计数模块,32位锁存器模块。(顶层框图待测信号显示模块计数锁存模块片选分频模块模块模块50MHZ时钟
整个系统分为5个模块:测频信号控制模块,计数模块,32 位锁存器模块。(顶层框图) 三、实验原理 采用一个标准的基准时钟,在单位时间(1秒)里对被测信号 的脉冲数进行计数,即为信号的频率。 50MHZ时钟 分 频 模 块 计数 模块 锁 存 模 块 显 示 模 块 待测信号 片选 模块
1FEN模块设计要求FEN功能模块fen将开发板的系统时钟5OMHZ进行分频得到0.5HZ的时钟频率,为计数模块提供clkclrq1s的闸门时间信号,时钟CLK为输入信号,分频后的结果Q输出。instCNT10功能模块2计数模块(CNT10)cnt10设计要求:十进制计数模块用于在单位时间中对输入信号的脉冲进行计数,该sigcq[3..0]clrcarry_out模块有一时钟使能端ENA,用于锁存计door数值。当高电平时计数允许,低电平时inst2禁止计数。(由8个CNT10组成)
1 FEN模块 设计要求 将开发板的系统时钟50MHZ进行分频得 到0.5HZ的时钟频率,为计数模块提供 1s的闸门时间信号,时钟CLK为输入信 号,分频后的结果Q输出。 FEN功能模块 2 计数模块 (CNT10) 设计要求:十进制计数模块用于在单位 时间中对输入信号的脉冲进行计数,该 模块有一时钟使能端ENA,用于锁存计 数值。当高电平时计数允许,低电平时 禁止计数。(由8个CNT10组成) sig clr door cq[3.0] carry _out cnt10 inst2 CNT10功能模块 clk clr q f en inst
LOCK功能模块(LOCK)3锁存模块lock设计要求:若已有32位BCD码存在于此模load块的输入口,在信号LOAD的下降沿即被锁dout[31..0]din[31..0]存到lock的内部,并由lock的输出端输出再由实验板上的7段译码器译成能在数码inst1管上显示输出的相应数值。sel4片选模块(SEL)clkdaout[3..0]设计要求:产生数码管的片选信号,将测rstcs[2..0]din[31..0]量值送到相应的数码管上显示。inst13(DISP)5显示模块dispd[3..0]q[6..0]设计要求:将计数值转换成相应的能在七段数码管上显示的值inst14
load din[31.0] dout[31.0] lock inst1 3锁存模块(LOCK) LOCK功能模块 设计要求:若已有32位BCD码存在于此模 块的输入口,在信号LOAD的下降沿即被锁 存到lock的内部,并由lock的输出端输出, 再由实验板上的7段译码器译成能在数码 管上显示输出的相应数值。 4片选模块(SEL) 设计要求:产生数码管的片选信号,将测 量值送到相应的数码管上显示。 clk rst din[31.0] daout[3.0] cs[2.0] sel inst13 5显示模块(DISP) 设计要求:将计数值转换成相应的能在七 段数码管上显示的值 d[3.0] q[6.0] disp inst14
部分代码如下elsif(clk'event and clk='i')then片选模块=if(sec=111")thensec<="000library ieee;elseuseieee.std logic1164.all;sec<=sec+1;use ieee.std logic unsigned.all;end if;end if:Hentity sel isend process;=port(process(sec,din(31 downto0))clk : in std logic;beginrst:in std logiccase sec isdin :in std logic vector(31 downto o);when "ooo"=>daout<=din(3 downto 0):when "oo1"=>daout<=din(7 downto4);daout: out std logic vector(3 downto 0);when "o1o"=>daout<=din(11 downto 8):cs:out stdlogicvector(2 downto0));when "011"=>daout<=din(15 downto 12);end sel;when "100"=>daout<=din(19 downto 16);when "101"=>daout<=din(23 downto 20);architecture behav of sel iswhen "110"=>daout<=din(27 downto24);signal sec : std logic vector(2 downto o);when"111"=>daout<=din(31 downto 28);beginwhen others=>daout<="xxxx";process(rst,clk)end case;beginend process;-if(rst='o')thenc3<=Seciend behav:sec<="000";
部分代码如下 1 片选模块