8位十进制频率计_EDA课程设计报告

合集下载

eda 实验8位10进制频率计设计

eda 实验8位10进制频率计设计

1)测控时序电路设计程序:library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity ftctrl isport(clkk:in std_logic;cnt_en:out std_logic;rst_cnt:out std_logic;load:out std_logic); end ftctrl;architecture behave of ftctrl is signal div2clk:std_logic; beginprocess(clkk)beginif clkk'event and clkk='1' thendiv2clk<=not div2clk;end if;end process;process(clkk,div2clk)beginif clkk='0' and div2clk='0' thenrst_cnt<='1';elserst_cnt<='0';end if;end process;load<=not div2clk;cnt_en<=div2clk;end behave;(2)顶层中的SCAN_LED模块是改进后带输入数据锁存功能的7段动态扫描显示译码器,其参考程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SCAN_LED ISPORT (CLK : IN STD_LOGIC;LK:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(31DOWNTO 0);SG: OUT STD_LOGIC_VECTOR(6DOWNTO 0);BT: OUT STD_LOGIC_VECTOR(2DOWNTO 0) );END;ARCHITECTURE one OF SCAN_LED ISSIGNAL CNT8 : STD_LOGIC_VECTOR(2DOWNTO 0);SIGNAL DOUT: STD_LOGIC_VECTOR(31DOWNTO 0);SIGNAL A : STD_LOGIC_VECTOR(3DOWNTO 0);BEGINP1:PROCESS(LK,DIN) BEGINIF LK'EVENT AND LK='1' THEN DOUT<=DIN; END IF; END PROCESS P1;P2:PROCESS( CNT8 ) BEGIN CASE CNT8 ISWHEN "000" => BT <= "000" ; A <= DOUT(3 DOWNTO 0);WHEN "001" => BT <= "001" ; A <= DOUT(7 DOWNTO 4);WHEN "010" => BT <= "010" ; A <= DOUT(11 DOWNTO 8);WHEN "011" => BT <= "011" ; A <= DOUT(15 DOWNTO 12);WHEN "100" => BT <= "100" ; A <= DOUT(19 DOWNTO 16);WHEN "101" => BT <= "101" ; A <= DOUT(23 DOWNTO 20);WHEN "110" => BT <= "110" ; A <= DOUT(27 DOWNTO 24);WHEN "111" => BT <= "111" ; A <= DOUT(31 DOWNTO 28);WHEN OTHERS => NULL ;END CASE;END PROCESS P2; P3: PROCESS(CLK)BEGINIF CLK'EVENT AND CLK = '1' THEN CNT8 <= CNT8 + 1;END IF;END PROCESS P3;P4: PROCESS( A )BEGINCASE A ISWHEN "0000" => SG <= "0111111";WHEN "0001" => SG <= "0000110";WHEN "0010" => SG <= "1011011";WHEN "0011" => SG <= "1001111";WHEN "0100" => SG <= "1100110";WHEN "0101" => SG <= "1101101";WHEN "0110" => SG <= "1111101";WHEN "0111" => SG <= "0000111";WHEN "1000" => SG <= "1111111";WHEN "1001" => SG <= "1101111";WHEN "1010" => SG <= "1110111";WHEN "1011" => SG <= "1111100";WHEN "1100" => SG <= "0111001";WHEN "1101" => SG <= "1011110";WHEN "1110" => SG <= "1111001";WHEN "1111" => SG <= "1110001";WHEN OTHERS => NULL ;END CASE ;END PROCESS P4;END;(3)CNT10_8是8位10进制计数器,其底层是由8个10进制计数器串接而成,电路图如下所示:(4)利用以上各功能模块生成封装,产生频率计的顶层原理图,如下:(1)重新设计FTCTRL模块,完成8位10进制频率计设计。

八位十进制数字频率计

八位十进制数字频率计

EDA课程设计报告书题目:8位十进制数字频率计的设计姓名:学号:所属学院:专业年级:指导教师:完成时间:8位十进制数字频率计的设计一、设计介绍数字频率计是采用数字电路制做成的能实现对周期性变化信号频率测量的仪器。

频率计主要用于测量正弦波、矩形波、三角波和尖脉冲等周期信号的频率值。

其扩展功能可以测量信号的周期和脉冲宽度。

通常说的,数字频率计是指电子计数式频率计。

频率计主要由四个部分构成:输入电路、时基(T)电路、计数显示电路以及控制电路。

在电子技术领域,频率是一个最基本的参数。

数字频率计作为一种最基本的测量仪器以其测量精度高、速度快、操作简便、数字显示等特点被广泛应用。

许多物理量,例如温度、压力、流量、液位、PH值、振动、位移、速度等通过传感器转换成信号频率,可用数字频率计来测量。

尤其是将数字频率计与微处理器相结合,可实现测量仪器的多功能化、程控化和智能化.随着现代科技的发展,基于数字式频率计组成的各种测量仪器、控制设备、实时监测系统已应用到国际民生的各个方面。

二、设计目的(1)熟悉Quatus 11软件的基本使用方法。

(2)熟悉EDA实验开发系统的使用方法。

(3)学习时序电路的设计、仿真和硬件设计,进一步熟悉VHDL设计技术。

三、数字频率计的基本原理数字频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,通常情况下计算每秒待测信号的脉冲个数,此时我们称闸门时间为1秒。

闸门时间也可以大于或小于一秒。

闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长。

闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。

数字频率计的主要功能是测量周期信号的频率。

频率是单位时间(1S)信号发生周期变化的次数。

如果我们能在给定的1S时间对信号波形计数,并将计数结果显示出来,就能读取被测信号的频率。

数字频率计首先必须获得相对稳定与准确的时间,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计数器计算这一段时间间隔的脉冲个数,将其换算后显示出来。

八位16进制、八位10进制频率计设计

八位16进制、八位10进制频率计设计

EDA综合实习报告一李爱20111154006 电子科学与技术2011级1.数字频率计的设计(1)8位16进制频率计①.主程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MAIN ISPORT (A,clk1,CLK: IN STD_LOGIC;O:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);P: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END;ARCHITECTURE HEAD OF MAIN ISCOMPONENT CEPINPORT (CLK1:IN STD_LOGIC;CNT: OUT STD_LOGIC;RST:OUT STD_LOGIC;LOAD:OUT STD_LOGIC);END COMPONENT;COMPONENT JISHUPORT (CLR:IN STD_LOGIC;EN:IN STD_LOGIC;FIN:IN STD_LOGIC;COUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0) );END COMPONENT;COMPONENT SUOCUNPORT( LK :IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR (31 DOWNTO 0);QDOUT: OUT STD_LOGIC_VECTOR (31 DOWNTO 0));END COMPONENT;COMPONENT XIANSHIPORT (clk: in std_logic;Q:IN STD_LOGIC_VECTOR(31 DOWNTO 0);T:buffer STD_LOGIC_VECTOR(2 DOWNTO 0);Y:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END COMPONENT;SIGNAL NET1,NET2,NET3:STD_LOGIC;SIGNAL NET4,NET5 :STD_LOGIC_VECTOR(31 DOWNTO 0);BEGINU1:CEPIN PORT MAP (CLK1=>CLK,CNT=>NET1,RST=>NET2,LOAD=>NET3);U2:JISHU PORT MAP (CLR=>NET2,EN=>NET1,FIN=>A,COUT=>NET4);U3:SUOCUN PORT MAP (LK=>NET3,DIN=>NET4,QDOUT=>NET5);U4:XIANSHI PORT MAP (clk=>clk1,Q=>NET5,Y=>P,T=>O);END HEAD;②.测频LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cepin ISPORT (CLK1:IN STD_LOGIC;CNT: OUT STD_LOGIC;RST:OUT STD_LOGIC;LOAD:OUT STD_LOGIC);END ;ARCHITECTURE one OF cepin ISSIGNAL M: STD_LOGIC;BEGINPROCESS (CLK1)BEGINIF CLK1 'EVENT AND CLK1='1' THENM<= NOT M;END IF;END PROCESS;PROCESS (CLK1,M)BEGINIF CLK1='0' AND M='0' THEN RST<='1';ELSE RST <='0';END IF;END PROCESS;LOAD <= NOT M;CNT <=M;END one;③.计数LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JISHU ISPORT (CLR:IN STD_LOGIC;EN:IN STD_LOGIC;FIN:IN STD_LOGIC;COUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0));END ;ARCHITECTURE two OF JISHU ISSIGNAL Q: STD_LOGIC_VECTOR(31 DOWNTO 0);BEGINPROCESS (CLR,EN,FIN) BEGINIF CLR='1' THEN Q <= (OTHERS=>'0');ELSIF FIN 'EVENT AND FIN='1' THENIF EN='1' THEN Q <= Q+1;END IF;END IF;END PROCESS;COUT <=Q;END two;④.锁存LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SUOCUN ISPORT( LK :IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR (31 DOWNTO 0);qDOUT: OUT STD_LOGIC_VECTOR (31 DOWNTO 0)); END ;ARCHITECTURE three OF SUOCUN ISBEGINPROCESS (LK,DIN)BEGINIF LK 'EVENT AND LK='1' THEN qDOUT <=DIN;END IF;END PROCESS;END three;⑤显示LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY XIANSHI ISPORT (clk: in std_logic;Q:IN STD_LOGIC_VECTOR(31 DOWNTO 0);T:buffer STD_LOGIC_VECTOR(2 DOWNTO 0);Y:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END ;ARCHITECTURE four OF XIANSHI ISBEGINPROCESS(Q,clk,T)V ARIABLE Q1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF clk'event and clk='1' THENQ1:=Q1+'1';END IF;if Q1="0001" thenCASE Q(3 downto 0) ISWHEN "0000"=>T<="000";Y<="0111111";WHEN "0001"=>T<="000";Y<="0000110";WHEN "0010"=>T<="000";Y<="1011011";WHEN "0011"=>T<="000";Y<="1001111";WHEN "0100"=>T<="000";Y<="1100110";WHEN "0101"=>T<="000";Y<="1101101";WHEN "0110"=>T<="000";Y<="1111101";WHEN "0111"=>T<="000";Y<="0000111";WHEN "1000"=>T<="000";Y<="1111111";WHEN "1001"=>T<="000";Y<="1101111";WHEN "1010"=>T<="000";Y<="1110111";WHEN "1011"=>T<="000";Y<="1111100";WHEN "1100"=>T<="000";Y<="0111001";WHEN "1101"=>T<="000";Y<="1011110";WHEN "1110"=>T<="000";Y<="1111011";WHEN "1111"=>T<="000";Y<="1110001";WHEN OTHERS=> NULL;END CASE;elsif Q1="0010" thenCASE Q(7 downto 4) ISWHEN "0000"=>T<="001";Y<="0111111"; WHEN "0001"=>T<="001";Y<="0000110"; WHEN "0010"=>T<="001";Y<="1011011"; WHEN "0011"=>T<="001";Y<="1001111"; WHEN "0100"=>T<="001";Y<="1100110"; WHEN "0101"=>T<="001";Y<="1101101"; WHEN "0110"=>T<="001";Y<="1111101"; WHEN "0111"=>T<="001";Y<="0000111"; WHEN "1000"=>T<="001";Y<="1111111"; WHEN "1001"=>T<="001";Y<="1101111"; WHEN "1010"=>T<="001";Y<="1110111"; WHEN "1011"=>T<="001";Y<="1111100"; WHEN "1100"=>T<="001";Y<="0111001"; WHEN "1101"=>T<="001";Y<="1011110"; WHEN "1110"=>T<="001";Y<="1111011"; WHEN "1111"=>T<="001";Y<="1110001"; WHEN OTHERS=> NULL;END CASE;elsif Q1="0011"thenCASE Q(11 downto 8) ISWHEN "0000"=>T<="010";Y<="0111111"; WHEN "0001"=>T<="010";Y<="0000110"; WHEN "0010"=>T<="010";Y<="1011011"; WHEN "0011"=>T<="010";Y<="1001111"; WHEN "0100"=>T<="010";Y<="1100110"; WHEN "0101"=>T<="010";Y<="1101101"; WHEN "0110"=>T<="010";Y<="1111101"; WHEN "0111"=>T<="010";Y<="0000111"; WHEN "1000"=>T<="010";Y<="1111111"; WHEN "1001"=>T<="010";Y<="1101111"; WHEN "1010"=>T<="010";Y<="1110111"; WHEN "1011"=>T<="010";Y<="1111100"; WHEN "1100"=>T<="010";Y<="0111001"; WHEN "1101"=>T<="010";Y<="1011110"; WHEN "1110"=>T<="010";Y<="1111011"; WHEN "1111"=>T<="010";Y<="1110001"; WHEN OTHERS=> NULL;END CASE;elsif Q1="0100" thenCASE Q(15 downto 12) ISWHEN "0001"=>T<="011";Y<="0000110"; WHEN "0010"=>T<="011";Y<="1011011"; WHEN "0011"=>T<="011";Y<="1001111"; WHEN "0100"=>T<="011";Y<="1100110"; WHEN "0101"=>T<="011";Y<="1101101"; WHEN "0110"=>T<="011";Y<="1111101"; WHEN "0111"=>T<="011";Y<="0000111"; WHEN "1000"=>T<="011";Y<="1111111"; WHEN "1001"=>T<="011";Y<="1101111"; WHEN "1010"=>T<="011";Y<="1110111"; WHEN "1011"=>T<="011";Y<="1111100"; WHEN "1100"=>T<="011";Y<="0111001"; WHEN "1101"=>T<="011";Y<="1011110"; WHEN "1110"=>T<="011";Y<="1111011"; WHEN "1111"=>T<="011";Y<="1110001"; WHEN OTHERS=>NULL;END CASE;elsif Q1="0101" thenCASE Q(19 downto 16) ISWHEN "0000"=>T<="100";Y<="0111111"; WHEN "0001"=>T<="100";Y<="0000110"; WHEN "0010"=>T<="100";Y<="1011011"; WHEN "0011"=>T<="100";Y<="1001111"; WHEN "0100"=>T<="100";Y<="1100110"; WHEN "0101"=>T<="100";Y<="1101101"; WHEN "0110"=>T<="100";Y<="1111101"; WHEN "0111"=>T<="100";Y<="0000111"; WHEN "1000"=>T<="100";Y<="1111111"; WHEN "1001"=>T<="100";Y<="1101111"; WHEN "1010"=>T<="100";Y<="1110111"; WHEN "1011"=>T<="100";Y<="1111100"; WHEN "1100"=>T<="100";Y<="0111001"; WHEN "1101"=>T<="100";Y<="1011110"; WHEN "1110"=>T<="100";Y<="1111011"; WHEN "1111"=>T<="100";Y<="1110001"; WHEN OTHERS=> NULL;END CASE;elsif Q1="0110" thenCASE Q(23 downto 20) ISWHEN "0000"=>T<="101";Y<="0111111"; WHEN "0001"=>T<="101";Y<="0000110";WHEN "0011"=>T<="101";Y<="1001111"; WHEN "0100"=>T<="101";Y<="1100110"; WHEN "0101"=>T<="101";Y<="1101101"; WHEN "0110"=>T<="101";Y<="1111101"; WHEN "0111"=>T<="101";Y<="0000111"; WHEN "1000"=>T<="101";Y<="1111111"; WHEN "1001"=>T<="101";Y<="1101111"; WHEN "1010"=>T<="101";Y<="1110111"; WHEN "1011"=>T<="101";Y<="1111100"; WHEN "1100"=>T<="101";Y<="0111001"; WHEN "1101"=>T<="101";Y<="1011110"; WHEN "1110"=>T<="101";Y<="1111011"; WHEN "1111"=>T<="101";Y<="1110001"; WHEN OTHERS=> NULL;END CASE;elsif Q1="0111" thenCASE Q(27 downto 24) ISWHEN "0000"=>T<="110";Y<="0111111"; WHEN "0001"=>T<="110";Y<="0000110"; WHEN "0010"=>T<="110";Y<="1011011"; WHEN "0011"=>T<="110";Y<="1001111"; WHEN "0100"=>T<="110";Y<="1100110"; WHEN "0101"=>T<="110";Y<="1101101"; WHEN "0110"=>T<="110";Y<="1111101"; WHEN "0111"=>T<="110";Y<="0000111"; WHEN "1000"=>T<="110";Y<="1111111"; WHEN "1001"=>T<="110";Y<="1101111"; WHEN "1010"=>T<="110";Y<="1110111"; WHEN "1011"=>T<="110";Y<="1111100"; WHEN "1100"=>T<="110";Y<="0111001"; WHEN "1101"=>T<="110";Y<="1011110"; WHEN "1110"=>T<="110";Y<="1111011"; WHEN "1111"=>T<="110";Y<="1110001"; WHEN OTHERS=> NULL;END CASE;elsif Q1="1000" thenCASE Q(31 downto 28) ISWHEN "0000"=>T<="111";Y<="0111111"; WHEN "0001"=>T<="111";Y<="0000110"; WHEN "0010"=>T<="111";Y<="1011011"; WHEN "0011"=>T<="111";Y<="1001111";WHEN "0101"=>T<="111";Y<="1101101";WHEN "0110"=>T<="111";Y<="1111101";WHEN "0111"=>T<="111";Y<="0000111";WHEN "1000"=>T<="111";Y<="1111111";WHEN "1001"=>T<="111";Y<="1101111";WHEN "1010"=>T<="111";Y<="1110111";WHEN "1011"=>T<="111";Y<="1111100";WHEN "1100"=>T<="111";Y<="0111001";WHEN "1101"=>T<="111";Y<="1011110";WHEN "1110"=>T<="111";Y<="1111011";WHEN "1111"=>T<="111";Y<="1110001";WHEN OTHERS=> NULL;END CASE;end if; END PROCESS;END four;⑥引脚:A:测频端口CLK:1Hz输入频率CLK1:2048Hz的刷新频率O:三八译码器选择端口P:数码管显示(2)8位10进制频率计①主程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MAIN ISPORT (CLK1,FSIN:IN STD_LOGIC;CLK:IN STD_LOGIC; E:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);DOUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END ;ARCHITECTURE HEAD OF MAIN ISCOMPONENT JISHUPORT(CLK,RST,EN:IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT :OUT STD_LOGIC);END COMPONENT;COMPONENT CEPINPORT (CLK:IN STD_LOGIC;TSTEN:OUT STD_LOGIC;CLR_CNT:OUT STD_LOGIC;LOAD:OUT STD_LOGIC);END COMPONENT;COMPONENT SUOCUNPORT(LOAD:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT :OUT STD_LOGIC_VECTOR(31 DOWNTO 0));END COMPONENT;COMPONENT XIANSHIPORT (clk: in std_logic;Q:IN STD_LOGIC_VECTOR(31 DOWNTO 0);T:buffer STD_LOGIC_VECTOR(2 DOWNTO 0);Y:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END COMPONENT;SIGNAL TSTEN:STD_LOGIC;SIGNAL CLR_CNT:STD_LOGIC;SIGNAL LOAD:STD_LOGIC;SIGNAL C1:STD_LOGIC;SIGNAL C2:STD_LOGIC;SIGNAL C3:STD_LOGIC;SIGNAL C4:STD_LOGIC;SIGNAL C5:STD_LOGIC;SIGNAL C6:STD_LOGIC;SIGNAL C7:STD_LOGIC;SIGNAL C8:STD_LOGIC;SIGNAL DIN,S:STD_LOGIC_VECTOR(31 DOWNTO 0);BEGINU0:CEPIN PORT MAP(CLK=>CLK,TSTEN=>TSTEN,CLR_CNT=>CLR_CNT,LOAD=>LOAD);U1:JISHU PORT MAP(CLK=>FSIN,RST=>CLR_CNT,EN=>TSTEN,CQ=>DIN(3 DOWNTO 0),COUT=>C1);U2:JISHU PORT MAP(CLK=>C1,RST=>CLR_CNT,EN=>TSTEN,CQ=>DIN(7 DOWNTO 4),COUT=>C2);U3:JISHU PORT MAP(CLK=>C2,RST=>CLR_CNT,EN=>TSTEN,CQ=>DIN(11 DOWNTO 8),COUT=>C3);U4:JISHU PORT MAP(CLK=>C3,RST=>CLR_CNT,EN=>TSTEN,CQ=>DIN(15 DOWNTO 12),COUT=>C4);U5:JISHU PORT MAP(CLK=>C4,RST=>CLR_CNT,EN=>TSTEN,CQ=>DIN(19 DOWNTO 16),COUT=>C5);U6:JISHU PORT MAP(CLK=>C5,RST=>CLR_CNT,EN=>TSTEN,CQ=>DIN(23 DOWNTO 20),COUT=>C6);U7:JISHU PORT MAP(CLK=>C6,RST=>CLR_CNT,EN=>TSTEN,CQ=>DIN(27 DOWNTO 24),COUT=>C7);U8:JISHU PORT MAP(CLK=>C7,RST=>CLR_CNT,EN=>TSTEN,CQ=>DIN(31 DOWNTO 28),COUT=>C8);U9:SUOCUN PORT MAP(LOAD=>LOAD,DIN=>DIN(31 DOWNTO 0),DOUT=>S);U10:XIANSHI PORT MAP(CLK=>CLK1,Q=>S,T=>E,Y=>DOUT);END HEAD;②测频LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CEPIN ISPORT (CLK:IN STD_LOGIC;TSTEN:OUT STD_LOGIC;CLR_CNT:OUT STD_LOGIC;LOAD:OUT STD_LOGIC);END ;ARCHITECTURE TWO OF CEPIN ISSIGNAL DIV2CLK :STD_LOGIC;BEGINPROCESS(CLK)BEGINIF CLK'EVENT AND CLK='1' THENDIV2CLK<=NOT DIV2CLK;END IF;END PROCESS;PROCESS(CLK,DIV2CLK)BEGINIF CLK='0' AND DIV2CLK='0' THENCLR_CNT<='1';ELSE CLR_CNT<='0';END IF;END PROCESS;LOAD<=NOT DIV2CLK;TSTEN <=DIV2CLK;END TWO;③计数LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JISHU ISPORT(CLK,RST,EN:IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END ;ARCHITECTURE ONE OF JISHU ISBEGINPROCESS(CLK,RST,EN)V ARIABLE CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST='1' THEN CQI:=(OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1' THENIF EN='1' THENIF CQI<"1001" THENCQI:=CQI+1;ELSE CQI:=(OTHERS=>'0');END IF;END IF;END IF;IF CQI="1001" THEN COUT<='1';ELSE COUT<='0';END IF;CQ<=CQI;END PROCESS;END ONE;④所存LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SUOCUN ISPORT(LOAD:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT :OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); END ;ARCHITECTURE THREE OF SUOCUN ISBEGINPROCESS(LOAD,DIN)BEGINIF LOAD'EVENT AND LOAD='1' THEN DOUT<=DIN;END IF;END PROCESS;END THREE;⑤显示LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY XIANSHI ISPORT (clk: in std_logic;Q:IN STD_LOGIC_VECTOR(31 DOWNTO 0);T:buffer STD_LOGIC_VECTOR(2 DOWNTO 0);Y:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END ;ARCHITECTURE four OF XIANSHI ISBEGINPROCESS(Q,clk,T)V ARIABLE Q1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF clk'event and clk='1' THENQ1:=Q1+'1';END IF;if Q1="0001" thenCASE Q(3 downto 0) ISWHEN "0000"=>T<="000";Y<="0111111";WHEN "0001"=>T<="000";Y<="0000110";WHEN "0010"=>T<="000";Y<="1011011";WHEN "0011"=>T<="000";Y<="1001111";WHEN "0100"=>T<="000";Y<="1100110";WHEN "0101"=>T<="000";Y<="1101101";WHEN "0110"=>T<="000";Y<="1111101";WHEN "1000"=>T<="000";Y<="1111111"; WHEN "1001"=>T<="000";Y<="1101111"; WHEN OTHERS=> NULL;END CASE;elsif Q1="0010" thenCASE Q(7 downto 4) ISWHEN "0000"=>T<="001";Y<="0111111"; WHEN "0001"=>T<="001";Y<="0000110"; WHEN "0010"=>T<="001";Y<="1011011"; WHEN "0011"=>T<="001";Y<="1001111"; WHEN "0100"=>T<="001";Y<="1100110"; WHEN "0101"=>T<="001";Y<="1101101"; WHEN "0110"=>T<="001";Y<="1111101"; WHEN "0111"=>T<="001";Y<="0000111"; WHEN "1000"=>T<="001";Y<="1111111"; WHEN "1001"=>T<="001";Y<="1101111"; WHEN OTHERS=> NULL;END CASE;elsif Q1="0011"thenCASE Q(11 downto 8) ISWHEN "0000"=>T<="010";Y<="0111111"; WHEN "0001"=>T<="010";Y<="0000110"; WHEN "0010"=>T<="010";Y<="1011011"; WHEN "0011"=>T<="010";Y<="1001111"; WHEN "0100"=>T<="010";Y<="1100110"; WHEN "0101"=>T<="010";Y<="1101101"; WHEN "0110"=>T<="010";Y<="1111101"; WHEN "0111"=>T<="010";Y<="0000111"; WHEN "1000"=>T<="010";Y<="1111111"; WHEN "1001"=>T<="010";Y<="1101111"; WHEN OTHERS=> NULL;END CASE;elsif Q1="0100" thenCASE Q(15 downto 12) ISWHEN "0000"=>T<="011";Y<="0111111"; WHEN "0001"=>T<="011";Y<="0000110"; WHEN "0010"=>T<="011";Y<="1011011"; WHEN "0011"=>T<="011";Y<="1001111";WHEN "0101"=>T<="011";Y<="1101101"; WHEN "0110"=>T<="011";Y<="1111101"; WHEN "0111"=>T<="011";Y<="0000111"; WHEN "1000"=>T<="011";Y<="1111111"; WHEN "1001"=>T<="011";Y<="1101111"; WHEN OTHERS=>NULL;END CASE;elsif Q1="0101" thenCASE Q(19 downto 16) ISWHEN "0000"=>T<="100";Y<="0111111"; WHEN "0001"=>T<="100";Y<="0000110"; WHEN "0010"=>T<="100";Y<="1011011"; WHEN "0011"=>T<="100";Y<="1001111"; WHEN "0100"=>T<="100";Y<="1100110"; WHEN "0101"=>T<="100";Y<="1101101"; WHEN "0110"=>T<="100";Y<="1111101"; WHEN "0111"=>T<="100";Y<="0000111"; WHEN "1000"=>T<="100";Y<="1111111"; WHEN "1001"=>T<="100";Y<="1101111"; WHEN OTHERS=> NULL;END CASE;elsif Q1="0110" thenCASE Q(23 downto 20) ISWHEN "0000"=>T<="101";Y<="0111111"; WHEN "0001"=>T<="101";Y<="0000110"; WHEN "0010"=>T<="101";Y<="1011011"; WHEN "0011"=>T<="101";Y<="1001111"; WHEN "0100"=>T<="101";Y<="1100110"; WHEN "0101"=>T<="101";Y<="1101101"; WHEN "0110"=>T<="101";Y<="1111101"; WHEN "0111"=>T<="101";Y<="0000111"; WHEN "1000"=>T<="101";Y<="1111111"; WHEN "1001"=>T<="101";Y<="1101111"; WHEN OTHERS=> NULL;END CASE;elsif Q1="0111" thenCASE Q(27 downto 24) ISWHEN "0000"=>T<="110";Y<="0111111"; WHEN "0001"=>T<="110";Y<="0000110"; WHEN "0010"=>T<="110";Y<="1011011";WHEN "0100"=>T<="110";Y<="1100110";WHEN "0101"=>T<="110";Y<="1101101";WHEN "0110"=>T<="110";Y<="1111101";WHEN "0111"=>T<="110";Y<="0000111";WHEN "1000"=>T<="110";Y<="1111111";WHEN "1001"=>T<="110";Y<="1101111";WHEN OTHERS=> NULL;END CASE;elsif Q1="1000" thenCASE Q(31 downto 28) ISWHEN "0000"=>T<="111";Y<="0111111";WHEN "0001"=>T<="111";Y<="0000110";WHEN "0010"=>T<="111";Y<="1011011";WHEN "0011"=>T<="111";Y<="1001111";WHEN "0100"=>T<="111";Y<="1100110";WHEN "0101"=>T<="111";Y<="1101101";WHEN "0110"=>T<="111";Y<="1111101";WHEN "0111"=>T<="111";Y<="0000111";WHEN "1000"=>T<="111";Y<="1111111";WHEN "1001"=>T<="111";Y<="1101111";WHEN OTHERS=> NULL;END CASE;end if; END PROCESS;END four;⑥引脚:FSIN:待测频率输入CLK:1Hz输入频率CLK1:2048Hz的刷新频率E:三八译码器选择端口DOUT:数码管显示。

8位十进制频率计_EDA课程设计报告

8位十进制频率计_EDA课程设计报告

目录一、设计目的 (2)二、设计要求 (2)三、设计思路 (3)四、设计原理 (3)五、设计仿真 (3)六、实验现象 (4)七、设计源码 (4)八、总结 (9)参考书目 (9)引言数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件教多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。

随着现场可编程阵列FPGA的应用,以EDA 工具作为开发手段,运用VHDL等硬件描述语言语言,将使整个系统大大简化,提高了系统的整体性能和可靠性。

一、课程设计目的1)巩固和加深对“EDA技术”、“数字电子技术”的基本知识的理解,提高综合运用本课程所学知识的能力。

2)培养学生根据课题需要选学参考书籍、查阅手册、图表和文献资料的自学能力。

通过独立思考,深入钻研相关问题,学会自己分析解决问题的方法。

3)培养硬件设计、软件设计及系统软、硬件调试的基本思路、方法和技巧,并能熟练使用当前较流行的一些有关电路设计与分析的软件和硬件。

二、课程设计要求1)脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为,f为被测信号的频率,N为计数器所累积的脉冲个数,T为产生N个脉冲所需的时间。

所以,在1秒时间内计数器所记录的结果,就是被测信号的频率。

2)被测频率信号取自实验箱晶体振荡器输出信号,加到主控室的输入端。

3)再取晶体振荡器的另一标准频率信号,经分频后产生各种时基脉冲:1ms,10ms,0.1s,1s等,时基信号的选择可以控制,即量程可以改变。

4)时基信号经控制电路产生闸门信号至主控门,只有在闸门信号采样期间内(时基信号的一个周期),输入信号才通过主控门。

5)f=N/T,改变时基信号的周期T,即可得到不同的测频范围。

6)当主控门关闭时,计数器停止计数,显示器显示记录结果,此时控制电路输出一个置零信号,将计数器和所有触发器复位,为新一次采样做好准备三、课程设计思路频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。

八位十进制数字频率计基于eda课程设计

八位十进制数字频率计基于eda课程设计

目录目录 01、EDA技术发展及介绍 (2)1.1 EDA技术的介绍 (2)1.2 EDA技术的发展 (2)1.3 EDA技术的发展趋势 (2)2、总体方案设计 (3)2.1设计内容 (3)2.2设计方案比较 (3)2.3方案论证 (5)2.4方案选择 (5)3、单元模块设计 (5)3.1分频模块 (5)3.1.1分频模块波形仿真图 (5)3.1.2分频模逻辑综合图 (6)3.1.3分频模块verilog源代码 (6)3.2计数模块 (7)3.2.1计数模块功能仿真波形 (7)3.2.2计数模块逻辑综合图 (8)3.2.3计数模块verilog源代码 (8)3.3锁存模块 (9)3.3.1锁存模块功能仿真波形 (9)3.3.2锁存模块逻辑综合图 (9)3.3.1锁存模块verilog源代码 (10)3.4七段译码模块 (10)3.4.1七段一码模块功能仿真波形 (10)3.4.2七段译码模块逻辑综合图 (11)3.4.3七段一码模块代码源程序 (11)3.5数码管显示模块 (12)3.5.1数码管显示模块功能仿真波形图 (13)3.5.2数码管显示模块综合图 (13)3.5.3数码管显示模块源代码 (14)4、软件实现 (15)4.1软件实现方法 (15)4.1.1 软件实现步骤框图 (15)4.2软件设计 (15)4.2.1 顶层模块程序如下: (15)4.2.2 顶层模块结构图 (17)5、系统仿真及调 (17)5.1顶层模块仿真及调试 (17)6、总结 (18)6.1设计小结 (18)6.2设计收获 (19)6.3设计改进 (19)6.4 致谢 (19)7 、参考文献 (19)1、EDA技术发展及介绍1.1 EDA技术的介绍EDA是Electronic Design Automation的缩写,中文译为电子设计自动化,是现代电子设计技术的有力工具。

迄今为止,EDA技术没有精确的定义,我们可以这样来认识,EDA技术就是以计算机为工作平台,以EDA软件工具为开发环境,以PLD器件或者ASIC专用集成电路为目标器件设计实现电路系统的一种技术。

8位十进制显示数字频率计(带周期)设计报告

8位十进制显示数字频率计(带周期)设计报告

EDA期末考试设计报告设计题目:8位十进制显示数字频率计(带周期测量) 学校:梧州学院系别:电子信息工程系班别:09电本2班姓名:陈迪学号:5组员:刘芸云王缉俭指导老师:黄玉健一、设计内容:8位十进制显示数字频率计(带周期测量)。

二、设计目的与要求:1、设计电路实现测量1~Hz方波信号的频率以及其周期,并以十进制的方式显示。

2、要求其数值用七段LED数码管或液晶屏显示。

3、在实验系统上硬件测试,验证此设计的功能。

4、画出实体图,设计原理图,要求用Protel设计出具体的电路原理图。

三、设计原理:8位十进制显示数字频率计(带周期测量)是由8位十进制频率计、8位十进制周期测量器和带锁存功能的64选32数据选择器构成。

频率计基准信号采用8Hz的方波信号,而周期测量采用基准信号为50MHz的方波信号。

其中,频率计和周期测量由相同的32位数据锁存器和8位十进制计数器及不同的测频控制电路构成。

为使电路设计更加简单快捷,且方便阅读与理解,本电路使采用模块化的设计思想,先由VHDL源程序对各个模块进行独立编写、测试,然后封装,再用原理图方式进行连接、整合与波形和硬件仿真。

例如将用CLOCK5、CLOCK2输入标准频率,CLOCK0输入被测频,用数码管显示频率和周期。

Protel 设计原理图:11223344DDCCBBA ADig0Dig0Dig0Dig0Dig0Dig0Dig0Dig064选32数据选择器测频控制(频率)8位十进制计数器32位数据锁存器A32位数据锁存器B测频控制(周期)8位十进制计数器FCLKFINSENPCLK选通信号锁存信号8Hz 标准信号50MHz 标准信号测试信号32位数据32位数据32位数据32位数据32位数据锁存信号锁存信号清零信号清零信号使能信号使能信号选通灯锁存灯7段数码管显示8位十进制频率计(带测周期)09电本2本 陈迪 刘芸云 王缉俭1、频率测量的基本原理:根据频率的定义,若某一信号在T时间内重复变化N次,则可知该信号的频率为:f =N/T 对此可采用数字逻辑电路中的门电路来实现,如图:在与门端加入被测信号,另一端加宽度为T1的控制信号(称闸门信号),输出端仅能在T1时间内有波形的出现,然后送入计数器计数,得N*T2=T1所以f =N/T1。

8位十进制频率计设计 EDA技术与Verilog HDL实验报告

8位十进制频率计设计 EDA技术与Verilog HDL实验报告

8位十进制频率计设计一.实验目的熟悉在QuartusII下设计2位和8位十进制频率计。

二.实验内容在QuartusII下设计2位和8位十进制频率计,并编译、仿真验证其功能。

三.程序清单频率计顶层文件设计:(1)2位十进制频率计Conter8.bdf图形输入:tf_ctro.bdf图形输入:ft_top.bdf图形输入:conter100.v文本输入:module conter100(CLK,CLR,EN,cout,ge,shi); input CLK,EN,CLR;output [3:0]ge;output [3:0]shi ;output cout;reg cout;reg [3:0]ge;reg [3:0]shi;always @(posedge CLK )if (!CLR)beginge<=0;shi<=0;cout<=0;endelse if((ge==9)&&(shi==9))beginge<=0;shi<=0;cout<=1;endelse if (ge==9)beginge<=0;shi<=shi+1;cout<=0;endelsebeginge<=ge+1;shi<=shi;cout<=0;endendmoduletf_ctro.v文本输入:module tf_ctro (clk,en,clr,lock);input clk;output en,clr,lock;reg en,clr,lock;integer d=0; always @(posedge clk) begind<=d+1;if (d==1)beginen<=0;lock<=0;clr<=0; end else if(d==2)beginlock<=1;en<=0;clr<=0;endelse if (d==3)beginlock<=0;clr<=0;en<=0;endelse if (d==6)beginlock<=0;clr<=1;en<=0;endelse if (d==7)beginlock<=0;clr<=0;en<=0;endelse if(d==8)beginlock<=0;clr<=0;en<=1;endelse if(d==16)begind<=0;en<=0;lock<=0;clr<=0;endendendmodule74374锁存器文本输入: module octal(clk,en,d_in,q_in );input clk,en;input [3:0] d_in;output [3:0] q_in;reg [3:0] Q;assign q_in=Q;always @(posedge clk)if(!en)beginQ<=d_in;endendmodule(2)8位十进制频率计ft_top.bdf图形输入:四.实验步骤1、新建一个名称为CTR10的工程,并在该文件夹中新建一个CTR10.bdf的文件,在工程文件夹中新建一个counter8.bdf的文件。

8位十进制数字频率计设计

8位十进制数字频率计设计
ห้องสมุดไป่ตู้
1.5 时序控制器设计
图11-9 7493真值表
图11-10 74154真值表
1.5 时序控制器设计
图11-11 图11-8电路的仿真波形
1.6 顶层电路设计与测试
图11-12 频率计顶层电路原理图
1.6 顶层电路设计与测试
图11-13 频率计工作时序波形
1.7 在FPGA中完成硬件实测
实测的内容有2项: 1. 能否完成正常的测频工作,即输入信号的频率与显示的数据是
1.2 设计一个两位十进制计数器
图11-5 图11-3电路的仿真波形
1.3 8位十进制计数器的设计
图11-6 8位十进制计 数器电路:
CNT32B.bdf
1.4 32位寄存器设计
图11-7 由4个74374构成的32位寄存器电路:LOCK32.bdf
1.5 时序控制器设计
图11-8 频率计测频时序控制器电路
数字电子技术
8位十进制数字频率计设计
1.1 测频原理
图11-1 频率计模型框图
1.1 测频原理
图11-2 测频时序
1.2 设计一个两位十进制计数器
图11-3 两位十进制计数器电路图:COUNTER10.bdf
11.1 8位十进制数字频率计设计
1.2 设计一个两位十进制计数器
图11-4 74390的真值表
否一致,稳定性是否好; 2. 被测信号能达到的频率上限是多少,与计算机的时序分析结果
的一致性如何。需要注意的是,实测时CLK1的频率必须是 8Hz。如果没有,可以从其它信号分频得到。
数字电子技术
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

EDA课程设计报告名称:8位十进制频率计学号:姓名:年级专业:2011级电子信息工程学院:物电学院指导老师:日期:2014年6月2日安徽师范大学物理与电子信息学院College of Physics and Electronic Information, Anhui Normal University目录一、设计目的 (2)二、设计要求 (2)三、设计思路 (3)四、设计原理 (3)五、设计仿真 (3)六、实验现象 (4)七、设计源码 (4)八、总结 (9)参考书目 (9)引言数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件教多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。

随着现场可编程阵列FPGA的应用,以EDA工具作为开发手段,运用VHDL等硬件描述语言语言,将使整个系统大大简化,提高了系统的整体性能和可靠性。

一、课程设计目的1)巩固和加深对“EDA技术”、“数字电子技术”的基本知识的理解,提高综合运用本课程所学知识的能力。

2)培养学生根据课题需要选学参考书籍、查阅手册、图表和文献资料的自学能力。

通过独立思考,深入钻研相关问题,学会自己分析解决问题的方法。

3)培养硬件设计、软件设计及系统软、硬件调试的基本思路、方法和技巧,并能熟练使用当前较流行的一些有关电路设计与分析的软件和硬件。

二、课程设计要求1)脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为,f为被测信号的频率,N 为计数器所累积的脉冲个数,T为产生N个脉冲所需的时间。

所以,在1秒时间内计数器所记录的结果,就是被测信号的频率。

2)被测频率信号取自实验箱晶体振荡器输出信号,加到主控室的输入端。

3)再取晶体振荡器的另一标准频率信号,经分频后产生各种时基脉冲:1ms,10ms,0.1s,1s等,时基信号的选择可以控制,即量程可以改变。

4)时基信号经控制电路产生闸门信号至主控门,只有在闸门信号采样期间内(时基信号的一个周期),输入信号才通过主控门。

5)f=N/T,改变时基信号的周期T,即可得到不同的测频范围。

6)当主控门关闭时,计数器停止计数,显示器显示记录结果,此时控制电路输出一个置零信号,将计数器和所有触发器复位,为新一次采样做好准备三、课程设计思路频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。

这就要求TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。

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

在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进32位锁存器REG32B中,并由外部的7段译码器译出并稳定显示。

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

寄存器REG32B设计要求是:若已有32位BCD码存在于此模块的输入口,在信号LOAD的上升沿后即被锁存到寄存器REG32B内部,并由REG32B的输出端输出,然后由7段译码器译者成能在数码管上显示输出的相应数值。

计数器CNT10设计要求:有一时钟使能输入端,用于锁定计数值。

当高电平时计数允许,低电平时禁止计数。

这次设计能通过实验箱下载验证,将第一全局时钟CLK接实验箱1Hz频率信号,第二全局时钟CLK2作为待测频率输入,输出接6个数码管显示所测的频率值。

四、课程设计原理在电子技术中,频率是最基本得参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。

测量频率的方法有很多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。

数字式频率计的测量原理有两类:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法即周期法,如周期测频法。

直接测频法适用于高频信号的频率测量,通常采用计数器、数据锁存器及控制电路实现,并通过改变计数器阀门的时间长短在达到不同的测量精度;间接测频法适用于低频信号的频率测量。

本次设计中使用的就是直接测频法,即用计数器在计算机1S内输入信号周期的个数,其测频范围为1Hz~999999Hz。

五、设计电路的顶层结构及仿真图这次设计有三个模块组成,测频控制信号发生器TESTCTL八个有时钟时能功能的十进制计数器CNT10和一个32位锁存器REG32B,如图:顶层结构图测频控制信号发生器TESTCTL仿真效果图六、实验现象从时钟源TJ4~TJ6输入一方波信号,数码管则将显示该信号的频率值,输入信号频率范围为1Hz~100MHz,频率高时有误差。

另外,可从GCLK2端输入外部数字信号,进行测量。

七、设计源码十进制计数器CNT10程序:library ieee;use ieee.std_logic_1164.all;entity cnt10 isport(clk: in std_logic;clr: in std_logic;ena: in std_logic;cq : out integer range 0 to 9;carry_out: out std_logic);end cnt10;architecture behav of cnt10 issignal cqi: integer range 0 to 9;beginprocess(clr,clk,ena)beginif(clr='1') thencqi<=0;elsif(clk'event and clk='1') thenif(ena='1') thenif(cqi=9) thencqi<=0;carry_out<='1';elsecqi<=cqi+1;carry_out<='0';end if;end if;end if;end process;cq<=cqi;end behav;作用:实现十进制计数功能。

当第一个CNT10计数输出CQ=9时,下一秒时钟上升沿到来时,将产生一个CARRY_OUT信号作为下一个CNT10的时钟信号,同时CQ清零。

依次递推到8个CNT10。

32位锁存器REG32B程序:library ieee;use ieee.std_logic_1164.all;entity reg32b isport( load : in std_logic;rst: in std_logic;din: in std_logic_vector(31 downto 0);dout:out std_logic_vector(31 downto 0));end reg32b;architecture behav of reg32b issignal data:std_logic_vector(31 downto 0);beginprocess(rst,load)beginif rst='1' thendata<=(others=>'0');elsif(load'event and load='1') thendata<=din;end if;dout<=data;end process;end behav;实现方式:复位信号RST为高电平时复位,为低电平时LOAD信号上升沿到来时将对输入到内部的CNT10计数信号进行锁存。

作用:锁存信号,并将结果输出给SELTIME。

测频控制信号发生器TESTCTL程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity testctl isport(clk : in std_logic;tsten : out std_logic;clr_cnt : out std_logic;load : out std_logic);end testctl;architecture behav of testctl issignal div2clk : std_logic;beginprocess(clk)beginif(clk'event and clk='1') thendiv2clk<=not div2clk;end if;end process;process(clk,div2clk)beginif(clk='0' and div2clk='0') thenclr_cnt<='1';elseclr_cnt<='0';end if;end process;load<=not div2clk;tsten<=div2clk;end behav;作用:对8个CNT10产生同步使能信号TSTEN;产生一个清零信号CLR_CNT,计数完成时对8个CNT10清零;产生一个锁存信号LOAD对锁存器RED32B,对CNT10产生的信号进行锁存。

数码管译码显示DELED的程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DELED ISPORT(S: IN STD_LOGIC_VECTOR(3 DOWNTO 0);A,B,C,D,E,F,G,H: OUT STD_LOGIC);END DELED;ARCHITECTURE BEHAV OF DELED ISSIGNAL DATA:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL DOUT:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINDATA<=S;PROCESS(DATA)BEGINCASE DATA ISWHEN "0000"=>DOUT<="00111111";WHEN "0001"=>DOUT<="00000110";WHEN "0010"=>DOUT<="01011011";WHEN "0011"=>DOUT<="01001111";WHEN "0100"=>DOUT<="01100110";WHEN "0101"=>DOUT<="01101101";WHEN "0110"=>DOUT<="01111101";WHEN "0111"=>DOUT<="00000111";WHEN "1000"=>DOUT<="01111111";WHEN "1001"=>DOUT<="01101111";WHEN "1010"=>DOUT<="01110111";WHEN "1011"=>DOUT<="01111100";WHEN "1100"=>DOUT<="00111001";WHEN "1101"=>DOUT<="01011110";WHEN "1110"=>DOUT<="01111001";WHEN "1111"=>DOUT<="01110001";WHEN OTHERS=>DOUT<="00000000";END CASE;END PROCESS;H<=DOUT(7);G<=DOUT(6);F<=DOUT(5);E<=DOUT(4);D<=DOUT(3);C<=DOUT(2);B<=DOUT(1);A<=DOUT(0);END BEHAV;作用:将实验结果使用数码管直观的显示出来。

相关文档
最新文档