八位十进制数字频率计的设计
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进制频率计设计
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:数码管显示。
FPGA八位十进制数字频率计
数字系统设计与VHDL课程设计任务书一、题目:基于FPGA的八位十进制数字频率计的设计与仿真二、主要内容本次设计是运用FPGA(现场可编程门阵列)芯片来实现一个八位十进制数字频率计,输入信号频率通过数码管来显示。
设计中采用Verilog HDL语言编程,运用QUARTUS Ⅱ软件实现。
三、基本要求1. 查阅相关原始资料,书写文献综述,英文资料翻译。
2. 理解相关的资料,确定系统功能、性能指标,选择系统组成方案。
3. 选择系统方案,运用Verilog HDL编程,采用QUARTUS Ⅱ集成开发环境进行编辑、综合测试,并进行引脚锁定。
4. 采用MagicSOPC实验开发平台,以FPGA为核心器件,主控芯片为EP2C35F672C8器件并下载到试验箱中进行验证,最终实现所需的八位十进制数字频率计,并在数码管上显示。
5. 撰写研究报告及结果分析,书写课程设计论文。
四、时间安排五、教材及参考书[1] 潘松, 王国栋. VHDL实用教程[M].西安:电子科技大学出版社,2007.[2] 黄智伟. FPGA系统设计与实践[M].北京:电子工业出版社,2005.[3] 包明. 赵明富.EDA技术与数字系统设计[M].北京:北京航空航天大学出版社,2001.[4] 莫琳,基于FPGA的频率计的设计与实现[J].现代电子技术,2004[5] EDA修改稿基于FPGA的八位十进制数字频率计学生姓名:学院:专业班级:专业课程:指导教师:2014 年6 月15 日一、系统设计1.系统设计要求(1)频率测量范围:1-99.999999MHZ。
(2)测量误差<5%。
2.方案设计使用现场可编程逻辑器件(FPGA)制作,利用Verilog HDL硬件描述语言编程进行控制,然后下载烧写实现。
对于八位十进制数字频率计的设计,本方案采用的是现场可编程逻辑器件来实现, 它的优点是所有电路集成在一块芯片上,此方案所需的外围电路简单,这样它的体积就减少了,同时还提高了系统的稳定度,还可以用软件QuartusⅡ软件进行仿真和调试等,可以充分利用verilog HDL硬件描述语言方便的编程,提高开发效率,缩短研发周期,降低研发成本;而且易于进行功能的扩展,实现方法灵活,调试方便,修改容易。
八位十进制数字频率计的设计..
2012~2013学年第二学期《数字系统设计》课程设计报告题目:数字频率计的设计班级:10电子信息(1)姓名:鲍学贵李闯王群卢军张力付世敏凌玲尹凡指导教师:周珍艮电气工程系2013年6月《数字系统设计》任务书摘要数字频率计是用数字显示被测信号频率的仪器,被测信号可以是正弦波、方波或其它周期性变化的信号。
数字频率计广泛应用于科研机构、学校、实验室、企业生产车间等场所。
研究数字频率计的设计和开发,有助于频率计功能的不断完善、性价比的提高和实用性的加强。
本文介绍了一种自顶向下分层设计多功能数字频率计的设计方法。
该频率计采用VHDL 硬件描述语言编程,以QuartusII为开发环境,极大地减少了硬件资源的占用。
数字频率计模块划分的设计具有相对独立性,可以对模块单独进行设计、调试和修改,缩短了设计周期。
所设计的VHDL语言通过仿真能够较好的测出所给频率并且满足数字频率计的自动清零和自动测试的功能要求,具有理论与实践意义。
关键词:VHDL ;数字频率计; EDA; QuartusII目录第一章绪论 (1)1.1 设计背景 (1)1.2 设计意义 (1)1.3 本文的主要工作 (2)第二章数字频率计的系统分析 (3)2.1 8位十进制数字频率计系统设计的原理 (3)2.1.1 数字频率计的基本原理 (3)2.1.2 系统总体框架图 (3)2.2 8位十进制数字频率计设计任务与要求 (4)2.3 目标芯片FLEX10K (4)第三章各功能模块基于VHDL的设计与仿真 (6)3.1 8位十进制数字频率计的电路逻辑图 (6)3.2 测频控制信号发生器的功能模块及仿真 (6)3.3系统时钟分频的功能模块及仿真 (8)3.4 32位锁存器的功能模块及仿真 (9)3.4.1 锁存器 (9)3.4.2 锁存器的功能模块及仿真 (9)3.5 数码管扫描的功能模块及仿真 (10)3.6 数码管译码显示的功能模块及仿真 (12)3.7 十进制计数器的功能模块及仿真 (14)3.7.1 计数器 (14)3.7.2 十进制计数器的功能模块及仿真 (14)3.8 8位十进制数字频率计的仿真 (16)第四章结束语 (23)参考文献 (24)答辩记录及评分表 (25)第一章绪论1.1设计背景数字频率计[1]是电子测量与仪表技术最基础的电子仪表类别之一,数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器,而且它是数字电压必不可少的部件。
8位十进制频率计的设计
8位十进制频率计的设计1.设计原理频率计的设计原理基于信号计数和数码显示。
通过对输入信号进行计数,并将计数结果转换为十进制形式进行显示,从而实现对频率的测量。
2.电路构成输入电路负责对输入信号进行放大、滤波和适配等处理,以保证输入信号的准确性和稳定性。
计数电路负责对输入信号进行计数和计数结果的存储。
显示电路负责将计数结果转换为十进制形式,并驱动数码显示器进行显示。
控制电路负责对电路的各个模块进行协调控制和时序控制。
3.工作过程当输入信号到达频率计时,输入电路将信号进行处理,并传递给计数电路。
计数电路对输入信号进行计数,并将计数结果存储在计数寄存器中。
当达到指定的计数时间后,控制电路将计数寄存器中的数值传递给显示电路。
显示电路将计数结果进行解码转换,并驱动数码显示器进行显示。
4.性能优化为了提高8位十进制频率计的性能和精度,可以采取以下几种优化措施。
a)输入电路的设计应具有较高的增益和较好的滤波特性,以保证输入信号的准确性和稳定性。
b)计数电路的设计应具有较高的计数速度和较大的计数范围,以适应不同频率信号的计数需求。
c)显示电路的设计应具有较高的解码精度和较好的驱动能力,以保证数码显示器的准确显示。
d)时序控制应合理设计,以保证各个模块之间的协调和同步,避免时序冲突和干扰。
e)程序算法的优化也是提高频率计性能的关键,可以通过优化计数算法和数据处理方式等方面来提高系统的效率和响应速度。
总之,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。
基于VHDL八位频率计设计
SIGNAL TSTEN:STD_LOGIC; SIGNAL CLR_CNT:STD_LOGIC; SIGNAL LOAD:STD_LOGIC; SIGNAL CARRY1:STD_LOGIC; SIGNAL CARRY2:STD_LOGIC; SIGNAL CARRY3:STD_LOGIC; SIGNAL CARRY4:STD_LOGIC; SIGNAL CARRY5:STD_LOGIC; SIGNAL CARRY6:STD_LOGIC; SIGNAL CARRY7:STD_LOGIC; SIGNAL CARRY8:STD_LOGIC; SIGNAL DIN:STD_LOGIC_VECTOR(31 DOWNTO 0); SIGNAL DOUT:STD_LOGIC_VECTOR(31 DOWNTO 0);
• • • • • • • • • • • • •
ELSIF CLK'EVENT AND CLK= '1' THEN IF ENA= '1' THEN IF CQI<9 THEN CQI<=CQI+1; ELSE CQI<=0;END IF; --大于9,则计数器清零 END IF; END IF; END PROCESS; PROCESS (CQI) BEGIN IF CQI=9 THEN CARRY_OUT<= '1'; --进位输出 ELSE CARRY_OUT<= '0';END IF; END PROCESS; CQ<=CQI;
• 频率测量的基本原理是计算每秒钟内待测信号的 脉冲个数。这就要求TESTCTL的计数使能信号 TSTEN能产生一个1秒脉宽的周期信号,并对频率 计的每一计数器CNT10的ENA使能端进行同步控 制。当TSTEN高电平时,允许计数;低电平时,停止 计数,并保持其所计的数。在停止计数期间,首先需 要一个锁存信号LOAD的上跳沿将计数器在前1秒 钟的计数值锁存进32位锁存器REG32B中,并由外 部的7段译码器译出并稳定显示。锁存信号之后, 必须有一清零信号CLR_CNT对计数器进行清零, 为下1秒钟的计数操作作准备。为了产生这个时序 图,需首先建立一个由D触发器构成的二分频器,在 每次时钟CLK上沿到来时其值翻转。
基于VHDL的8位十进制频率计设计
基于VHDL的8位十进制频率计设计目录目录 (1)摘要 (2)1.设计目的 (2)2.设计要求 (2)3.设计思路 (2)4.频率计设计原理 (3)4.1频率计的组成部分 (3)4.2频率计工作原理 (3)4.3频率计各模块介绍 (3)5.频率计仿真 (7)5.1FCTRL控制模块仿真 (7)5.2REGESTER寄存器模块仿真 (7)5.3SELTIME扫描模块仿真 (7)5.4DELED显示模块仿真 (8)5.5CNT10计数器模块仿真 (8)5.6总电路仿真 (8)6.频率计各模块程序 (9)7.频率计下载到实验箱现象 (13)8.设计体会 (14)9.参考资料 (14)[ 摘要]使用VHDL 语言来设计数字频率计, 给出了原理图和仿真图形, 所设计的电路通过硬件仿真, 下载到目标器件上运行, 能够满足测量频率的要求, 具有理论与实践意义, 实现了电子电路自动化(EDA)的过程。
[ 关键词] VHDL; EDA; 仿真; FPGA; 频率计1.设计目的1.1熟悉Max+plusII 10.2的软件的基本使用方法。
1.2理解频率计的测量原理。
1.3掌握VHDL语言的编写方法。
1.4掌握虚拟数字频率计的软件设计。
2.设计要求在Max+plusII中设计一个数字频率计电路,设计要求为:测量范围:1Hz~100MHz,数码管动态扫描显示所测的频率。
3.设计思路方案一:采用周期法。
通过测量待测信号的周期并求其倒数,需要有标准倍的频率,在待测信号的一个周期内,记录标准频率的周期数,这种方法的计数值会产生最大为±1个脉冲误差,并且测试精度与计数器中记录的数值有关,为了保证测试精度,测周期法仅适用于低频信号的测量。
方案二:采用直接测频法。
直接测频法就是在确定的闸门时间内,记录被测信号的脉冲个数。
由于闸门时间通常不是待测信号的整数倍,这种方法的计数值也会产生最大为±1个脉冲误差。
进一步分析测量准确度:设待测信号脉冲周期为Tx,频率为Fx,当测量时间为T=1s时,测量准确度为&=Tx/T=1/Fx。
8位十进制频率计的设计
1. 实验目的设计8位十进制频率计,学习较复杂的数字系统设计方法。
学习VHDL编码例花语句的使用。
2. 实验内容在SmartSOPC试验箱上实现8位十进制频率计的设计,被测信号从freq_input引脚(FPGA的13脚位于QuickSOPC核心板的左上角)输入,经过检测后测得的频率值用数码管1~8显示。
被测的频率信号由测频内部产生并输出到外部引脚,其频率对应关系图表 3.12所示。
引脚频率值/Hz 引脚频率值/Hz20 24000000 42 75000021 12000000 43 37500023 6000000 44 18750039 3000000 45 9375041 1500000 46 46875 3. 实验原理跟据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器,并为下一测频率计数周期做准备的计数器清零。
计数器在这里是由8个十进制数器级连组成,如图3.58所示是频率计的计数结构图,从图中可以看出十进制模块之间是由进位链级连而成的。
图3.58频率计计数器结构图4. 实验步骤1.启动QuartusⅡ建立一个空白工程,然后命名为PLJ 。
2.源程序文件命名为PLJ,并选择器件为Altera公司Cyclone系列的EPIC12Q240C8芯片,如图1—1图1—13.新建VHDL源程序文件,输入程序代码并保存。
再进行综合编译,若发现编译过程中有错误,则找出并更正错误,直到编译成功为止。
如图1—2(1)就表示编译成功了(warings可以不考虑)。
图1—2(1)4.对引脚进行锁定。
通过选择[Assignments]下的[pins]。
分配好管脚如图1—3所示。
图1—35.将未使用的管脚设置为三输入。
以防止损坏芯片如图1—4所示。
图1—46.拿出Altera ByteBlasterⅡ下载电缆,并将此电缆的两端分别接到PC机的打印机并口和QuickSOPC核芯板上的JTAG下载口上,打开电源,执行下载命令,把程序下载到FPGA器件中。
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位十进制数字频率计设计
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。如果没有,可以从其它信号分频得到。
数字电子技术
八位十进制频率计数器
Hefei UniversityEDA技术课程设计:八位十进制频率计数器专业: 13电子(1)班姓名:学号:指导老师:一、题目分析1、设计一个八位十进制的数字频率计:(1)、能对方波测频率(2)、能用数码管显示2、频率计设计原理及总设计框图(1)、频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。
通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为2秒。
闸门时间也可以大于或小于一秒。
闸门时间越长,得到的频率值就越准确,但闸门时间越长则每次测量一次频率的间隔越长。
闸门时间越短,测得频率值刷新就越快,但测得的频率精度就受影响。
本次的课程设计设计的频率计是测频法设计的八位十进制频率计,他有一个测频控制信号发生器,八个有时钟使能的十进制计数器,一个锁存器组成。
二、选择方案顶层文件用原理图连接,底层文件用VHDL语言。
这样整个设计清晰明了,结构直观。
三、细化框图(1)、测频率控制信号发生器测频测量的基本原理是计算每秒钟内待测信号的脉冲个数。
这就要求测频率控制信号发生器的计数使能信号EN能产生一个1秒的脉宽的周期信号,并对频率计的每一个计数器CNT10的EN 使能端进行同步测控。
当TSTEN高电平时,允许计数;低电平时,停止计数,并保持其所计的数。
在停止计数期间,首先需要一个所存信号LOAD的上升沿将计数器在前一秒中的计数值所存进锁存器中,并由外部的7段译码器译出并稳定显示。
所存信号之后,必须有一个清零的信号对计数器进行清零,为下一秒的计数做准备。
(2)、计数模块该十进制计数模块有八个一位十进制计数器组成,计数器的特殊之处是:有一个时钟使能输入端EN,用于锁定计数器。
当高电平时计数允许,低电平时计数禁止。
该测频的八位十进制频率计的计数模块,先通过VHDL语言编写一位十进制计数器,再将其元件例化后搭建一个八位十进制计数模块。
(3)、所存模块所存模块是由锁存器构成的,主要是数据的稳定显示,不会由于周期性的清零信号而不断的闪烁。
EDA实验八位十进制数字频率计的设计1
实验四 数字频率计的设计作 者:杨环宇学 号:11401701312所属学校:湖南工业大学完成时间:2013年10月28日1、实验目的1.掌握VHDL语言的基本结构。
2.掌握VHDL层次化的设计方法。
3.掌握VHDL基本逻辑电路的综合设计应用。
二、实验内容设计并调试好一个8位十进制数字频率计。
要求编写上述8位十进制数字频率计逻辑图中的各个模块的VHDL语言程序,并完成8位十进制数字频率计的顶层设计,然后利用开发工具软件对其进行编译和仿真,最后通过实验开发系统对其进行硬件验证。
三、实验条件1.计算机一台;2.Max+PlusII和Quartus II开发工具软件;3.EDA实验开发箱一台;4.编程器件:EP1K30TC144-3。
四、实验步骤1.根据测频控制信号发生器的基本原理编写TESTCTL模块的VHDL 程序,并对其进行编译和仿真,初步验证设计的正确性。
2.编写十进制计数器CNT10模块的VHDL程序,并对其进行编译和仿真,初步验证设计的正确性。
3.编写寄存器REG32B模块的VHDL程序,并对其进行编译和仿真,初步验证设计的正确性。
4.完成8位十进制数字频率计的顶层设计,并对其进行编译和仿真,初步验证设计的正确性。
5.利用开发工具软件,选择所用可编程逻辑器件,并对8位十进制数字频率计进行管脚配置。
6.通过下载电缆将编译后的*.pof文件下载到目标器件之中,并利用实验开发装置对其进行硬件验证。
五、实验原理图1是8位十进制数字频率计的电路逻辑图,它由一个测频控制信号发生器TESTCTL、8个有时钟使能的十进制计数器CNT10、一个32位锁存器REG32B组成。
以下分别叙述频率计各逻辑模块的功能与设计方法。
图1 8位十进制数字频率计逻辑图(2)十进制寄存器的源程序: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 15;CARRY_OUT:OUT STD_LOGIC);END ENTITY CNT10;ARCHITECTURE ART OF CNT10 ISSIGNAL CQI :INTEGER RANGE 0 TO 15;BEGINPROCESS(CLK,CLR,ENA)ISBEGINIF CLR= '1' THEN CQI<= 0;ELSIF CLK'EVENT AND CLK= '1' THENIF ENA='1' THENIF CQI<9 THEN CQI<=CQI+1;ELSE CQI<=0; END IF;END IF;END IF;END PROCESS;PROCESS (CQI) ISBEGINIF CQI=9 THEN CARRY_OUT<= '1';ELSE CARRY_OUT<= '0';END IF;END PROCESS;CQ<=CQI;END ARCHITECTURE ART;32位锁存器的源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B ISPORT(CLK: IN STD_LOGIC;D: IN STD_LOGIC_VECTOR(31 DOWNTO 0);Q: OUT STD_LOGIC_VECTOR(31 DOWNTO 0 ));END ENTITY REG32B;ARCHITECTURE ART OF REG32B ISBEGINPROCESS(CLK,D) ISBEGINIF (CLK'EVENT AND CLK='1') THENQ<=D;END IF;END PROCESS;END ARCHITECTURE测频控制信号发生器源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TESTCTL ISPORT(CLK:IN STD_LOGIC; --1 Hz测频控制时钟 TSTEN:OUT STD_LOGIC; --计数器时钟使能CLR_CNT:OUT STD_LOGIC; --计数器清零LOAD:OUT STD_LOGIC); --输出锁存信号END ENTITY TESTCTL; ARCHITECTURE ART OF TESTCTL ISSIGNAL DIV2CLK :STD_LOGIC;BEGINPROCESS ( CLK ) ISBEGINIF CLK'EVENT AND CLK= '1' THEN --1HZ 时钟二分频DIV2CLK<=NOT DIV2CLK;END IF;END PROCESS;PROCESS ( CLK,DIV2CLK ) ISBEGINIF CLK= '0' AND DIV2CLK = '0' THEN --产生计数器清零信号CLR_CNT<= '1';ELSE CLR_CNT<= '0'END IF;END PROCESS;LOAD<=NOT DIV2CLK; TSTEN<=DIV2CLK;END ARCHITECTURE ART;数字频率计的源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FREQ ISPORT(FSIN:IN STD_LOGIC;CLK:IN STD_LOGIC;DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0));END ENTITY FREQ;ARCHITECTURE ART OF FREQ8 ISCOMPONENT CNT10 IS --待调用的有时钟使能的十进制计数器端口定义PORT(CLK,CLR,ENA:IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CARRY_OUT:OUT STD_LOGIC);END COMPONENT CNT10;COMPONENT REG32B IS --待调用的32位锁存器端口定义PORT(LOAD:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0));END COMPONENT REG32B;COMPONENT TESTCTL IS --待调用的测频控制信号发生器端口定义PORT(CLK:IN STD_LOGIC;TSTEN:OUT STD_LOGIC;CLR_CNT:OUT STD_LOGIC;LOAD:OUT STD_LOGIC);END COMPONENT TESTCTL;SIGNAL SE,SC,SL:STD_LOGIC;SIGNAL S1,S2,S3,S4,S5,S6,S7,S8:STD_LOGIC;SIGNAL SD:STD_LOGIC_VECTOR(31 DOWNTO 0);BEGINU0:TESTCTL PORT MAP(CLK=>CLK,TSTEN=>SE, CLR_CNT=>SC,LOAD=>SL); U1:CNT10 PORT MAP(CLK=>FSIN,CLR=>SC,ENA=>SE,CQ=>SD (3 DOWNTO 0),CARRY_OUT=>S1); --名字关联U2:CNT10 PORT MAP(CLK=>S1,CLR=>SC,ENA=>SE,CQ=>SD (7 DOWNTO 4),CARRY_OUT=>S2);U3:CNT10 PORT MAP(S2,SC,SE,SD (11 DOWNTO 8 ),S3); --位置关联U4:CNT10 PORT MAP(S3,SC,SE,SD (15 DOWNTO 12),S4);U5:CNT10 PORT MAP(S4,SC,SE,SD (19 DOWNTO 16),S5);U6:CNT10 PORT MAP(S5,SC,SE,SD (23 DOWNTO 20),S6);U7:CNT10 PORT MAP(S6,SC,SE,SD (27 DOWNTO 24),S7);U8:CNT10 PORT MAP(S7,SC,SE,SD (31 DOWNTO 28),S8);U9:REG32B PORT MAP(LOAD=>SL,DIN=>SD(31 DOWNTO 0),DOUT=>DOUT); END ARCHITECTURE ART;6、 仿真波形设置T10仿真结果如下2. 32位锁存器仿真结果如下3.测频控制信号发生器仿真结果如下4.数字频率计仿真结果如下七、设计结论与总结:通过这次对EDA课程设计的进一步操作,能更好的在 Quartus II 上进行VHDL程序的编译及各个模块的仿真, 虽然在实际操作过程中由于粗心造成了程序的缺失和错误,但都在老师和同学的帮助下一一解决了。
八位十进制频率计
图10.2是8位十进制数字频率计的电路逻辑图,它由一个测频控制信号发生器TESTCTL、8个有时钟使能的十进制计数器CNT10、一个32位锁存器REG32B组成。
以下分别叙述频率计各逻辑模块的功能与设计方法。
图10.2 8位十进制数字频率计逻辑图1) 测频控制信号发生器设计频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。
这就要求TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA 使能端进行同步控制。
当TSTEN高电平时,允许计数;低电平时,停止计数,并保持其所计的数。
在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进32位锁存器REG32B中,并由外部的7段译码器译出并稳定显示。
锁存信号之后,必须有一清零信号CLR_CNT对计数器进行清零,为下1秒钟的计数操作作准备。
测频控制信号发生器的工作时序如图6.3所示。
为了产生这个时序图,需首先建立一个由D触发器构成的二分频器,在每次时钟CLK上沿到来时其值翻转。
其中控制信号时钟CLK的频率取1 Hz,而信号TSTEN的脉宽恰好为1 s,可以用作闸门信号。
此时,根据测频的时序要求,可得出信号LOAD和CLR_CNT的逻辑描述。
由图10.3可见,在计数完成后,即计数使能信号TSTEN在1 S的高电平后,利用其反相值的上跳沿产生一个锁存信号LOAD,0.5 s后,CLR_CNT产生一个清零信号上跳沿。
图10.3 测频控制信号发生器工作时序高质量的测频控制信号发生器的设计十分重要,设计中要对其进行仔细的实时仿真(TIMING SIMULA TION),防止可能产生的毛刺。
其VHDL程序设计如下:-- TESTCTL.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALLENTITY TESTCTL ISPORT (CLK:IN STD_LOGIC;--1 Hz测频控制时钟TSTEN:OUT STD_LOGIC;--计数器时钟使能CLR_CNT:OUT STD_LOGIC;--计数器清零LOAD:OUT STD_LOGIC);--输出锁存信号END ENTITY TESTCTL;ARCHITECTURE ART OF TESTCTL ISSIGNAL DVI2CLK :STD_LOGIC;BEGINPROCESS ( CLK ) ISBEGINIF CLK’EVENT AND CLK= ‘1’ THEN --1 HZ时钟二分频DIV2CLK<=NOT DIV2CLK;END IF ;END PROCESS;PROCESS ( CLK,DIV2CLK ) ISBEGINIF CL K= ‘0’ AND DIV2CLK = ‘0’ THEN --产生计数器清零信号CLR_CNT<= ‘1’;ELSE CLR_CNT<= ‘0’ ;END IF;END PROCESS;LOAD<=NOT DIV2CLK;TSTEN<=DIV2CLK;END ARCHITECTURE ART;2) 寄存器REG32B设计设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
八位十进制数字频率计设计报告
主控单元设计
MCU选型 1
选择功能强大、低功耗的ARM Cortex-M处理器
时钟电路 2
采用高精度晶振提供稳定的系统时钟
外围接口 3
包括GPIO、ADC、定时器、串口等外设接口
电源管理 4
整合电源调节电路以提供稳定电源 主控单元是该频率计的核心,负责采集、处理和显示数据。我们采用性能强劲、功耗低的ARM Cortex-M系列MCU作为主控芯片,并设计高精度时钟电路, 同时集成丰富的外设接口和电源管理电路,以确保系统的稳定运行。
对设计、制造、使用环境等各个环节进行全面的可靠性分析 和评估。
识别可能出现的失效模式,并采取相应的防范措施。
3 加速寿命测试
通过加速寿命试验,预测产品的实际使用寿命。
4 环境适应性
评估产品在不同环境条件下的性能和可靠性表现。
成本分析
主要原材料成本 制造成本 研发成本 营销及管理成本
占总成本64% 占总成本25% 占总成本5% 占总成本6%
关键元器件选型
集成电路
根据系统功能需求,选择合适的微控 制器、放大器、逻辑门电路等集成电 路器件。
无源元件
选用合适的电阻、电容、电感等无源 元件,满足电路的电压、电流和频率 需求。
显示模块
根据显示内容和环境选择合适的LCD 、LED或OLED显示器件。
电源模块
选用适合的变压器、稳压器、开关电 源等电源系统元件。
系统可以在相对湿度10%至95%的环 境中稳定运行,确保设备在潮湿环境中 也能可靠使用。
海拔适应
设计可在海拔0-5000米的高度环境中 正常工作,适应不同地理环境的使用需 求。
振动测试
系统通过严格的振动测试,能够承受5500Hz范围内的随机振动,抗击震能力 强。
八位十进制数字频率计
EDA课程设计报告书题目:8位十进制数字频率计的设计姓名:学号:所属学院:专业年级:指导教师:完成时间:8位十进制数字频率计的设计一、设计介绍数字频率计是采用数字电路制做成的能实现对周期性变化信号频率测量的仪器。
频率计主要用于测量正弦波、矩形波、三角波和尖脉冲等周期信号的频率值。
其扩展功能可以测量信号的周期和脉冲宽度。
通常说的,数字频率计是指电子计数式频率计。
频率计主要由四个部分构成:输入电路、时基(T)电路、计数显示电路以及控制电路。
在电子技术领域,频率是一个最基本的参数。
数字频率计作为一种最基本的测量仪器以其测量精度高、速度快、操作简便、数字显示等特点被广泛应用。
许多物理量,例如温度、压力、流量、液位、PH值、振动、位移、速度等通过传感器转换成信号频率,可用数字频率计来测量。
尤其是将数字频率计与微处理器相结合,可实现测量仪器的多功能化、程控化和智能化.随着现代科技的发展,基于数字式频率计组成的各种测量仪器、控制设备、实时监测系统已应用到国际民生的各个方面。
二、设计目的(1)熟悉Quatus 11软件的基本使用方法。
(2)熟悉EDA实验开发系统的使用方法。
(3)学习时序电路的设计、仿真和硬件设计,进一步熟悉VHDL设计技术。
三、数字频率计的基本原理数字频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。
闸门时间也可以大于或小于一秒。
闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长。
闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。
数字频率计的主要功能是测量周期信号的频率。
频率是单位时间(1S)内信号发生周期变化的次数。
如果我们能在给定的1S时间内对信号波形计数,并将计数结果显示出来,就能读取被测信号的频率。
数字频率计首先必须获得相对稳定与准确的时间,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计数器计算这一段时间间隔内的脉冲个数,将其换算后显示出来。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2012~2013学年第二学期《数字系统设计》课程设计报告题目:数字频率计的设计班级:10电子信息(1)姓名:鲍学贵李闯王群卢军张力付世敏凌玲尹凡指导教师:周珍艮电气工程系2013年6月《数字系统设计》任务书摘要数字频率计是用数字显示被测信号频率的仪器,被测信号可以是正弦波、方波或其它周期性变化的信号。
数字频率计广泛应用于科研机构、学校、实验室、企业生产车间等场所。
研究数字频率计的设计和开发,有助于频率计功能的不断完善、性价比的提高和实用性的加强。
本文介绍了一种自顶向下分层设计多功能数字频率计的设计方法。
该频率计采用硬件描述语言编程,以为开发环境,极大地减少了硬件资源的占用。
数字频率计模块划分的设计具有相对独立性,可以对模块单独进行设计、调试和修改,缩短了设计周期。
所设计的语言通过仿真能够较好的测出所给频率并且满足数字频率计的自动清零和自动测试的功能要求,具有理论与实践意义。
关键词:;数字频率计; ;目录第一章绪论 (1)1.1 设计背景 (1)1.2 设计意义 (1)1.3 本文的主要工作 (2)第二章数字频率计的系统分析 (3)2.1 8位十进制数字频率计系统设计的原理 (3)2.1.1 数字频率计的基本原理 (3)2.1.2 系统总体框架图 (3)2.2 8位十进制数字频率计设计任务与要求 (4)2.3 目标芯片10K (4)第三章各功能模块基于的设计与仿真 (6)3.1 8位十进制数字频率计的电路逻辑图 (6)3.2 测频控制信号发生器的功能模块及仿真 (6)3.3系统时钟分频的功能模块及仿真 (8)3.4 32位锁存器的功能模块及仿真 (9)3.4.1 锁存器 (9)3.4.2 锁存器的功能模块及仿真 (9)3.5 数码管扫描的功能模块及仿真 (10)3.6 数码管译码显示的功能模块及仿真 (12)3.7 十进制计数器的功能模块及仿真 (14)3.7.1 计数器 (14)3.7.2 十进制计数器的功能模块及仿真 (14)3.8 8位十进制数字频率计的仿真 (16)第四章结束语 (23)参考文献 (24)答辩记录及评分表 (25)第一章绪论1.1设计背景数字频率计[1]是电子测量与仪表技术最基础的电子仪表类别之一,数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器,而且它是数字电压必不可少的部件。
当今数字频率计不仅是作为电压表,计算机,天线电广播通讯设备,工艺过程自动化装置、多种仪表仪器与家庭电器等许多电子产品中的数据信息输出显示器反映到人们眼帘。
集成数字频率计由于所用元件少、投资少、体积小、功耗低,且可靠性高、功能强、易于设计和研发,使得它具有技术上的实用性和应用的广泛性。
不论从我们用的彩色电视机、电冰箱、还有我们现在家庭常用到的数字电压表数字万用表等等都包含有频率计。
现在频率计已是向数字智能方向发展,即可以很精确的读数也精巧易于控制。
数字频率计已是现在频率计发展的方向,它不仅可以很方便的读数。
而且还可以使频率的测量范围和测量准确度上都比较先进.而且频率计的使用已设计到很多的方面,数字卫星,数字通讯等高科技的领域都有应用,今天数字频率计的发展已经不仅仅是一个小电子产品的发展也是整个民族乃至整个国家的发展,所以频率计的发展是一个整体的趋势。
而从民族产业上来说,我们在这种产业中还落后于西方发达国家,这将会关系到民族产业的兴衰。
所以我们必须很重视当前的情况,学习发达国家的先进技术来发展本国的电子信息产业。
1.2设计意义我国的频率计其实不是落后发达国家太多的,我国在这个领域的发展是极其迅速的,现在的技术实际已是多年来见证。
我国现阶段电子产品的市场特点,电子数字化发展很快。
在我国和发达国家的发展情况是趋于一致的,数字频率计已经应用于高科技等产品上面,可以不无夸张的说没有不包含有频率计的电子产品。
我国的、、和数字音响广播等新技术已开始大量进入市场。
而在今天这些行业中都必须用到频率计。
频率计已开始并正在向智能,精细方向的发展。
国外的发展比我国要早,所以在这些行业中还领先于我们,我国还是缺少开发和研发的资金投入,很多的电子企业都不太乐意去花大量的时间,资金和精力去研究和开发,这也就使得我国在这方面的人力和资金都不充足,也就无法于发达国家相比,不能够形成一个量产的效果。
从而很多的企业没有竞争力,这也和我国其他的民族产业存在相同的情况,这也正是我国在高速发展后的今天很少有自己的民族品牌的原因,所以我国应该大力的支持自己的民族品牌,不仅仅是要在资金和人才的投入,还要有具体的实际行动并起到一定的保护作用。
1.3本文的主要工作本文的主要工作为:(1)首先分析了8位十进制数字频率计的基本原理。
(2)对设计工具进行了介绍,对设计中使用的语言[2-3]进行介绍。
(3)对数字频率计的各个模块功能的分析,进行了功能仿真测试,得出仿真波形图。
本文的安排如下:第一章介绍数字频率计的设计背景,设计意义,第二章介绍技术原理与概述,本论文是以技术为基础编写的所以对技术的要求比较高,对语言的编写以及的运用都要比较熟练。
介绍了可编程逻辑器件和硬件描述语言,第三章是对数字频率计的基本原理以及对设计的要求进行概述,对目标芯片的介绍等,第四章介绍各个功能模块的基本功能以及语言的分析,将各部分进行仿真并对其进行仿真分析,测出所给频率。
对该设计的数字频率计的仿真进行理论值与实验值的验证,第五章是本文的结束语。
第二章数字频率计的系统分析2.18位十进制数字频率计系统设计的原理2.1.1数字频率计的基本原理数字频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。
闸门时间也可以大于或小于一秒。
闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长。
闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。
数字频率计的主要功能是测量周期信号的频率。
频率是单位时间(1S)内信号发生周期变化的次数。
如果我们能在给定的1S时间内对信号波形计数,并将计数结果显示出来,就能读取被测信号的频率。
数字频率计首先必须获得相对稳定与准确的时间,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计数器计算这一段时间间隔内的脉冲个数,将其换算后显示出来。
这就是数字频率计的基本原理。
2.1.2 系统总体框架图图2.1 系统总体框架图总体框图设计思路:由50系统时钟分频得到0.5的基准时钟。
在基准时钟的1S 高电平期间计被测频率的脉冲个数,1S高电平结束时计数结束,所记录的脉冲个数是被测信号的频率,为了在数码管上显示计数结果需要锁存器将所计的数锁存,因此,在基准时钟下降沿来的时候锁存器实现锁存功能。
为了下次计数必须将本次计数的结果清零,所以在基准时钟低电平期间对计数器清零。
被测频率从计数器的是中端输入实现频率的测试。
将锁存器锁存的数据输入扫描器,通过译码器将锁存的二进制数译成十进制然后显示到数码管上,最终被读出来。
2.28位十进制数字频率计设计任务及要求用测频法设计一个八位十进制的数字频率器,测频范围是1到49999999。
(1)测量范围信号:方波、正弦波;幅度:0.5V~5V;频率:1~4999999。
(2)测量范围信号:脉冲波;幅度:0.5V~5V;脉冲宽度≥100μs.测量误差≤1%。
(3)显示器:十进制数字显示,显示刷新时间1~10秒连续可调,对上述三种测量功能分别用不同颜色的发光二极管指示。
(4)具有自校功能,时标信号频率为1。
2.3 目标芯片10K目标芯片[11]选用公司生产的产品10K系列[9]中的84-4,10K是公司研制的第一个嵌入式的可编程逻辑器件系列。
它具有高密度、低成本、低功率等特点,利用10K 系列可编程逻辑器件的可在系统中实现逻辑功能和存贮功能。
10K是公司研制的第一个嵌入式的,它具有高密度、低成本、低功率等特点,是当今中应用前景最好的器件系列之一。
它采用了重复可构造的工艺,并把连续的快速通道互连与独特的嵌入式阵列结构相结合,同时可结合众多可编程器件来完成普通门阵列的宏功能。
每一个10K器件均包括一个嵌入式阵列和一个逻辑阵列,因而设计人员可轻松地开发集存贮器、数字信号处理器及特殊逻辑等强大功能于一身的芯片。
采用可编程的查找表()结构。
是可编程的最小逻辑单元,大部分采用基于的查找表逻辑形式结构,用来构成逻辑函数发生器。
内部结构如图3.2所示。
图2.2 内部芯片结构第三章各功能模块基于的设计与仿真3.18位十进制数字频率计的电路逻辑图8位十进制数字频率计的电路逻辑图,它由一个测频控制信号发生器、8个有时钟使能的十进制计数器10、一个32位锁存器32B [8]组成。
以下分别叙述频率计各逻辑模块的功能与设计方法。
8位十进制数字频率计的电路逻辑如图4.18所示。
图3.1 8位十进制数字频率计的电路逻辑图3.2测频控制信号发生器的功能模块及仿真(1)测频控制信号发生器的功能模块如图4.2所示。
图3.2 测频控制信号发生器的功能模块图(2)源程序如下:;1164;;( ; 1 测频控制时钟; 计数器时钟使能; 计数器清零); 输出锁存信号;2 ;( )' '1' 1 时钟二分频2< 2;;;( 2 )'0' 2 = '0' 产生计数器清零信号<= '1';<= '0' ; ;;< 2; <2;;频率计的关键是设计一个测频率控制信号发生器,产生测量频率的控制时序。
控制时钟信号取为1,2分频后即可产生一个脉宽为1秒的时钟,以此作为计数闸门信号。
当为高电平时,允许计数;当由高电平变为低电平(下降沿到来)时,应产生一个锁存信号,将计数值保存起来;锁存数据后,还要在下次上升沿到哦来之前产生零信号,将计数器清零,为下次计数作准备,如图3.3所示为测频控制信号仿真图。
图3.3 测频控制信号仿真图3.3系统时钟分频的功能模块及仿真(1)系统时钟分频的分频功能模块如图3.4所以。
图3.4 系统时钟分频的功能模块图(2)源程序如下:;1164;;1(;);1;10 500000;:;()' '1'500<=0;< ; <1; ; ; <; ; ;该模块由系统时钟分频模块[12]为的计数能使信号产生一个1S 脉宽的周期信号,并对频率计中的32 位十进制计数器10的使能端进行同步控制。
高电平时允许计数;当低电平时停止计数,并保持其所计的脉冲数。
在停止计数期间,从仿真图3.5中可以看出,一个锁存信号的上跳沿将计数器在前一秒的计数值锁存进锁32B 中,并由外部的十进制7 段数码管显示计数值。