八位十进制数字频率计基于eda课程设计
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:数码管显示。
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课程设计
目录目录 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专用集成电路为目标器件设计实现电路系统的一种技术。
eda频率计课程设计
eda频率计课程设计一、课程目标知识目标:1. 让学生理解EDA(电子设计自动化)的基本概念,掌握频率计的设计原理;2. 学会运用已学的电子元件和电路知识,设计并搭建一个简单的频率计;3. 掌握频率计在电子测量中的应用,了解其重要性和实际意义。
技能目标:1. 培养学生动手操作能力,能正确使用电子仪器和工具进行电路搭建;2. 提高学生问题解决能力,通过团队协作,设计和调试频率计电路;3. 培养学生运用EDA软件进行电路仿真和优化设计的能力。
情感态度价值观目标:1. 培养学生对电子设计的兴趣和热情,激发创新意识;2. 培养学生团队协作精神,学会倾听、沟通、分享和合作;3. 增强学生环保意识,了解电子产品的绿色设计和可持续发展。
分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 学生能独立完成频率计电路的设计和搭建;2. 学生能运用EDA软件进行电路仿真,优化设计方案;3. 学生在团队协作中,发挥个人特长,共同解决问题;4. 学生通过课程学习,增强对电子设计领域的认识和兴趣,培养良好的情感态度价值观。
二、教学内容根据课程目标,教学内容主要包括以下几部分:1. EDA基本概念与频率计原理- 介绍EDA的基本概念、作用及其在电子设计中的应用;- 讲解频率计的工作原理、分类及其在电子测量中的重要性。
2. 电子元件与电路知识- 复习已学的电子元件(如电阻、电容、二极管、晶体管等)及其特性;- 梳理相关电路知识(如放大电路、滤波电路等)在频率计设计中的应用。
3. 频率计设计与搭建- 分析频率计电路的设计方法,引导学生运用所学知识进行设计;- 实践操作,指导学生正确搭建频率计电路,并进行调试。
4. EDA软件应用与电路仿真- 介绍EDA软件的基本功能,教授学生如何进行电路仿真和优化设计;- 指导学生运用EDA软件完成频率计电路的仿真,提高设计效率。
5. 团队协作与问题解决- 培养学生团队协作能力,分工合作完成频率计设计任务;- 引导学生学会分析问题、解决问题,提高实际操作能力。
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。
eda课程设计数字频率计
eda课程设计 数字频率计一、课程目标知识目标:1. 学生能够理解并掌握数字频率计的基本原理,包括频率的概念、测量方法及其在电子工程中的应用。
2. 学生能够运用所学知识,分析并识别EDA(电子设计自动化)软件中与数字频率计相关的元件和模块。
3. 学生能够运用电子元件搭建简单的数字频率计电路,并描述其工作过程。
技能目标:1. 学生能够运用EDA软件进行数字频率计电路的设计、仿真和调试,具备实际操作能力。
2. 学生能够通过小组合作,解决在数字频率计设计过程中遇到的技术问题,提高团队协作和问题解决能力。
情感态度价值观目标:1. 学生能够认识到数字频率计在电子工程领域的重要性和实际应用价值,激发对电子工程的兴趣和热情。
2. 学生在课程学习中,培养严谨的科学态度,注重实验数据的真实性和准确性。
3. 学生通过小组合作,学会尊重他人意见,培养良好的沟通能力和团队精神。
本课程针对高中年级学生,结合电子工程学科特点,强调理论与实践相结合,注重培养学生的动手操作能力和实际应用能力。
课程目标具体、可衡量,旨在帮助学生和教师在课程结束后,能够清晰地了解学生在知识、技能和情感态度价值观方面的预期成果。
同时,将课程目标分解为具体的学习成果,便于后续的教学设计和评估。
二、教学内容本章节教学内容依据课程目标,紧密围绕数字频率计的设计与实现,确保内容的科学性和系统性。
具体教学内容如下:1. 理论知识学习:- 频率概念及其测量方法- 数字频率计的原理与分类- EDA软件的基本操作与使用方法2. 实践操作环节:- 数字频率计电路设计原理- EDA软件中数字频率计电路搭建与仿真- 实际电路搭建与调试3. 教学大纲安排:- 第一课时:介绍频率概念、测量方法及数字频率计的原理与分类,让学生了解课程背景和目标。
- 第二课时:讲解EDA软件的基本操作与使用方法,引导学生学习并掌握软件应用。
- 第三课时:分析数字频率计电路设计原理,指导学生进行电路设计和仿真。
eda数字频率计课程设计
eda数字频率计课程设计一、课程目标知识目标:1. 让学生理解数字频率计的基本原理,掌握EDA工具的使用方法;2. 使学生掌握数字频率计的电路设计,包括计数器、时钟分频器等关键部分;3. 让学生掌握数字频率计的仿真与调试方法,了解其在实际应用中的限制和改进措施。
技能目标:1. 培养学生运用EDA工具进行数字电路设计和仿真的能力;2. 培养学生独立分析问题、解决问题的能力,能够根据实际需求调整和优化数字频率计的设计;3. 培养学生团队合作意识,提高沟通与协作能力。
情感态度价值观目标:1. 激发学生对电子设计的兴趣,培养创新意识和探索精神;2. 培养学生严谨的科学态度,注重实验数据的真实性,遵循实验操作规范;3. 引导学生关注我国电子产业的发展,增强民族自豪感和使命感。
课程性质:本课程为实践性较强的电子设计课程,旨在通过数字频率计的设计与实现,让学生掌握电子设计的基本方法和技能。
学生特点:学生已具备一定的电子基础知识,具有较强的学习能力和动手能力,但对EDA工具的使用和数字电路设计尚较陌生。
教学要求:教师需结合学生特点,注重理论与实践相结合,引导学生主动参与课堂讨论和实践活动,培养其独立思考和解决问题的能力。
通过课程学习,使学生能够达到预定的学习成果,为后续相关课程的学习打下坚实基础。
二、教学内容根据课程目标,本章节教学内容主要包括以下几部分:1. 数字频率计原理介绍:使学生了解数字频率计的工作原理,掌握频率测量的基本方法。
- 相关教材章节:第五章“数字频率计”- 内容列举:频率计的基本原理、计数器原理、时钟分频器原理等。
2. EDA工具使用:培养学生运用EDA工具进行电路设计与仿真的能力。
- 相关教材章节:第三章“EDA工具的使用”- 内容列举:EDA工具的基本操作、原理图绘制、电路仿真等。
3. 数字频率计电路设计:使学生掌握数字频率计的电路设计方法,包括计数器、时钟分频器等关键部分。
- 相关教材章节:第四章“数字电路设计”- 内容列举:计数器设计、时钟分频器设计、数字频率计整体电路设计等。
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的文件。
八位十进制频率计数器
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程序的编译及各个模块的仿真, 虽然在实际操作过程中由于粗心造成了程序的缺失和错误,但都在老师和同学的帮助下一一解决了。
8位数字频率计设计
Shaanxi University of Technology通信工程专业课程设计Ⅱ题目数字频率计的设计学生姓名任莼学号07130240所在院(系)陕西理工学院电信工程系专业班级通信工程专业0 7 1 班指导教师魏瑞老师完成地点陕西理工学院电信工程系实验室2010年 3 月 19 日通信工程专业课程设计Ⅱ任务书院(系) 电信工程系专业班级通信工程专业071班学生姓名任莼一、课程设计Ⅱ题目8 位数字频率计的设计二、课程设计Ⅱ工作自 2010 年 3 月 1 日起至 2010 年 3 月 19 日止三、课程设计Ⅱ进行地点: 电信工程系实验室四、课程设计Ⅱ的内容要求:⑴采用EDA技术设计一个8位十进制数字频率计数器,可以测量1—99999999Hz的信号频率,并将被测信号的频率在8个数码管上显示出来。
可采用VHDL或原理图输入法,也可采用单片机等技术,设计一个数字频率计电路.结果应有仿真波形、流程图、并下载在EDA开发板上,测试验证无误。
⑵该数字频率计数器由一个测频控制信号发生器TF_CTROL、一个有时钟使能的十进制计数器COUNTER_8BCD、一个32位锁存器FLIP_LATCH、八个7段BCD码译码器组成。
TF_CTROL 产生一个1秒脉宽周期的计数使能信号CNT_EN,对频率计的计数ENB使能端进行同步控制。
当CNT_EN高电平时,允许计数;低电平时,停止计数,并保持其所计的数。
在停止计数期间,在锁存信号LOCK的上升沿将计数器在前1秒钟的计数值装载到32位锁存器FLIP_LATCH中,由外部的7段译码器译出并稳定显示。
其中信号CLR对计数器进行清零,为下1秒钟的计数做准备。
⑶同一方案,原则上不超过3人,并应分工负责.⑷课程设计报告采用计算机打印(A4纸-页边距:上3.2cm,下2.2cm,左3cm,右2.2cm,页眉1.5cm,页脚1.5cm;正文采用小四宋体),同组人员报告相同率不得超过30%,否则无效;报告以书面和光盘(一个班可刻录一张光盘)两种形式上交。
基于EDA的八位数字频率计的设计
频率是电子技术领域内的一个基本参数,同时也是一个非常重要的参数。
稳定的时钟在高性能电子系统中有着举足轻重的作用,直接决定系统性能的优劣。
伴随着集成电路(IC)技术的发展,电子设计自动化(EDA)逐渐成为重要的设计手段,已经广泛应用于模拟与数字电路系统等许多领域。
EDA的一个重要特征就是使用硬件描述语言(HDL)来完成的设计文件,它与电子技术、微电子技术的发展密切相关,它吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,促进了工程发展,在电子设计领域受到了广泛的接受。
本文首先综述了EDA技术的发展概况,FPGA/CPLD开发的流程、优缺点,VHDL语言,MAX+pLUS II简介;然后介绍了频率测量的一般原理,接着使用EDA技术,用VHDL语言完成了数字频率计系统的软件、硬件设计工作;最后介绍了EDA技术的前沿发展趋势及其展望。
关键词:电子设计自动化(EDA);GW48 EDA系统;FPGA/CPLD;VHDL语言;数字频率计;频率测量;数码管扫描显示;波形仿真Frequency is a basic parameter of electronics field,meanwhile.I t’s a very important parameter.Stable clock is very important in high performance electronics system,determining the syetem performance directly. Follows the integrated circuit (IC) technology development, the electronic design automation (EDA) is becoming the important design method gradually.The key character of EDA uses the design document which hardware description language (HDL) completes, has received widespread acceptance in the electronic design domain.This article first summarized the EDA technology development survey, the FPGA/CPLD development flow, the good and bad points, the VHDL language history, development step and merit.Then uses the EDA technology, has completed the digital frequency meter system's project work with the VHDL language;Finally briefed in the EDA technology front trend of development and system development several experiences.Keywords:Electronic design automation (EDA);GW48 EDA system;FPGA/CPLD; VHDL language;Digital cymometer; Frequency measurement;Nixietube scanning demonstration;Profile simulation;目录引言 (1)第1章、EDA的发展历程及其应用 (2)1.1电子设计自动化(EDA)发展概述 (2)1.1.1什么是电子设计自动化(EDA) (2)1.1.2 EDA的发展阶段及特点 (2)1.1.3、EDA的应用 (3)1.2基于EDA的FPGA/CPLD的开发 (4)1.2.1 FPGA/CPLD的介绍 (4)1.2.2基于EDA工具的FPGA/CPLD开发流程 (4)1.2.3用FPGA/CPLD开发的优缺点 (5)1.3 VHDL语言 (5)1.4 MAX+PLUS II介绍 (6)第2章、数字频率计的设计 (8)2.1频率计设计背影 (8)2.2频率计设计原理 (8)2.2.1直接测频法 (8)2.2.2多周期同步测频法 (9)2.3频率计发展现状 (10)2.4频率计的设计实现 (11)第3章、基于EDA的数字频率计软件设计 (12)3.1系统顶层模块设计 (12)3.2各模块设计及源程序 (13)3.2.1测频控制信号模块TESTCTL: (14)3.2.2十进制计数模块 CNT10 : (15)3.2.3 32位锁存模块REG32B: (16)3.2.4数码显示电路 (17)3.3各系统仿真时序波形图 (18)第四章、基于EDA的数字频率计硬件设计 (20)4.1硬件实现 (20)4.2实验结果分析 (21)第五章结论 (22)第六章展望 (23)参考文献 (24)谢辞 (25)引言在电子设计领域中,EDA 技术是以大规模可编程逻辑器件为设计载体 ,以硬件语言为系统逻辑描述的主要方式 ,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具 ,通过有关的开发软件 ,自动完成用软件设计的电子系统到硬件系统的设计 ,最终形成集成电子系统或专用集成芯片的一门新技术。
基于EDA与VHDL语言的8位数字频率计的课程设计报告概要
湖南人文科技学院课程设计报告课程名称:VHDL语言与EDA课程设计设计题目:数字频率计的设计系别:物理与电子信息系专业:电子信息工程班级: 11级电信三班学生姓名: 唐凯李海标学号: 11409310 11409321 起止日期: 2014年6月3日~ 2014年6月13日指导教师:姚毅成继中教研室主任:候周国摘要数字频率计是直接用十进制数字来显示被测信号频率的一种测量装置。
它不仅可以测量正弦波、方波、三角波、尖脉冲信号和其他具有周期特性的信号的频率,而且还可以测量它们的周期。
经过改装,可以测量脉冲宽度,做成数字式脉宽测量仪;可以测量电容做成数字式电容测量仪;在电路中增加传感器,还可以做成数字脉搏仪、计价器等。
因此数字频率计在测量物理量方面应用广泛。
本设计用VHDL在CPLD器件上实现数字频率计测频系统,能够用十进制数码显示被测信号的频率,能够测量正弦波、方波和三角波等信号的频率,而且还能对其他多种物理量进行测量。
具有体积小、可靠性高、功耗低的特点。
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
采用VDHL编程设计实现的数字频率计,除被测信号的整形部分、键输入部分和数码显示部分以外,其余全部在一片FPGA芯片上实现,整个系统非常精简,而且具有灵活的现场可更改性。
在不更改硬件电路的基础上,对系统进行各种改进还可以进一步提高系统的性能。
该数字频率计具有高速、精确、可靠、抗干扰性强和现场可编程等优点。
关键字:FPGA芯片、VHDL语言、数字频率计、数字频率计原理图、Max+plusII 软件、EDA技术目录1、方案论证与对比 (1)2、技术性能指标 (1)3、频率计的设计原理 (2)3.1、频率计测量频率的设计原理 (2)3.1.1、频率计测量频率的原理 (2)3.1.2、频率计测量频率的原理图 (2)3.2、频率计测量周期的原理 (2)3.2.1、频率计测量周期的原理 (2)3.2.2、频率计测量周期的原理图 (3)4、频率计测量频率的层次化设计方案 (3)4.1、8位十进制计数器模块 (3)4.1.1、十进制计数器元件的设计 (4)4.1.2、8位十进制计数器的顶层设计 (5)4.2、控制模块设计 (6)5、频率计测量频率的顶层设计和仿真 (10)6、总结与致谢 (11)6.1、总结 (11)6.2、致谢 (11)附录、管脚配置 (12)参考文献 (12)数字频率计的设计1、方案论证与对比数字式频率计的测量原理有两类:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法即测周期法,如周期测频法。
电气工程及其自动化EDA课程设计报告8位数字频率计设计.讲解
《电气工程及其自动化EDA课程设计》课程设计报告题目:数字频率计的设计院(系):机电与自动化学院专业班级:学生姓名:学号:指导教师:2014年1月6日至2014年1月10日华中科技大学武昌分校《电气工程及其自动化EDA课程设计》设计任务书目录第一章绪论 (1)1.1 设计背景 (1)1.2 设计意义 (1)1.3 本文的主要工作 (2)第二章 EDA技术原理与概述 (3)2.1 可编程逻辑器件基本原理 (3)2.2 硬件描述语言 (4)2.3 集成开发软件 (5)第三章数字频率计的系统分析 (10)3.1 8位十进制数字频率计系统设计的原理 (10)3.1.1 数字频率计的基本原理 (10)3.1.2 系统总体框架图 (10)3.2 8位十进制数字频率计设计任务与要求 (11)3.3 目标芯片FLEX10K (11)第四章各功能模块基于VHDL的设计与仿真 (13)4.1 8位十进制数字频率计的电路逻辑图 (13)4.2 测频控制信号发生器的功能模块及仿真 (14)4.3系统时钟分频的功能模块及仿真 (15)4.4 32位锁存器的功能模块及仿真 (16)4.4.1 锁存器 (16)4.4.2 锁存器的功能模块及仿真 (17)4.5 数码管扫描的功能模块及仿真 (18)4.6 数码管译码显示的功能模块及仿真 (19)4.7 十进制计数器的功能模块及仿真 (21)4.7.1 计数器 (21)4.7.2 十进制计数器的功能模块及仿真 (21)4.8 8位十进制数字频率计的仿真 (23)第五章结束语 (30)参考文献 (31)第一章绪论1.1设计背景数字频率计[1]是电子测量与仪表技术最基础的电子仪表类别之一,数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器,而且它是数字电压必不可少的部件。
当今数字频率计不仅是作为电压表,计算机,天线电广播通讯设备,工艺过程自动化装置、多种仪表仪器与家庭电器等许多电子产品中的数据信息输出显示器反映到人们眼帘。
EDA课程设计报告__频率计
课程设计报告一、设计目的和要求1.课程设计目的(1).熟悉CPLD的开发软件的基本使用。
(2).理解频率计的测量原理。
(3).掌握CPLD逻辑电路设计方法。
(4).掌握虚拟数字频率计的软件设计。
2.课程设计的基本要求在CPLD中设计一个数字频率计电路,设计要求为:测量范围:1Hz~1MHz。
3.课程设计类型Vhdl程序设计二、仪器和设备1.电脑2.max+plus2软件三、设计过程1.设计内容和要求在CPLD中设计一个数字频率计电路,设计要求为:测量范围:1Hz~1MHz。
2.设计方法和开发步骤3.设计思路下图是8位十进制数字频率计的电路逻辑图,它由1个测频控制信号发生器TESTCTL、8个有时钟使能的十进制计数器的CNT10、1个32位锁存器REG32B组成。
常熟理工学院课程设计报告1)测频控制信号发射器的设计频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。
这就要求TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。
当TSTEN高电平时,允许计数;低电平时,停止计数,并保持其所计的数。
在停止计数期间,首先需要一个锁存信号LOAD 的上跳沿将计数器在前1秒钟的计数值锁存进32位锁存器REG32B 中,由外部的7段译码器译出并稳定显示,锁存信号之后必须有一清零信号CLR_CNT对计数器进行清零,为下一秒的计数操作作准备。
测频控制信号发生器是先建立一个由D触发器构成的二分频物理与电子工程学院EDA实验室器,再在每次时钟CLK上沿到来时其值翻转。
其中,控制信号时钟CLK的频率取1Hz,而信号TSTEN的脉宽恰好是1s,可以用做闸门信号。
此时,根据测频的时序要求,可得出信号LOAD和CLR_CNT的逻辑描述。
在计数完成后,即计数使能信号TSTEN在1s的高电平后,利用其反相值的上跳沿产生一个锁存信号LOAD,0.5秒后,CLR_CNT产生一个清零信号上跳沿。
八位十进制数字频率计
EDA课程设计报告书题目:8位十进制数字频率计的设计姓名:学号:所属学院:专业年级:指导教师:完成时间:8位十进制数字频率计的设计一、设计介绍数字频率计是采用数字电路制做成的能实现对周期性变化信号频率测量的仪器。
频率计主要用于测量正弦波、矩形波、三角波和尖脉冲等周期信号的频率值。
其扩展功能可以测量信号的周期和脉冲宽度。
通常说的,数字频率计是指电子计数式频率计。
频率计主要由四个部分构成:输入电路、时基(T)电路、计数显示电路以及控制电路。
在电子技术领域,频率是一个最基本的参数。
数字频率计作为一种最基本的测量仪器以其测量精度高、速度快、操作简便、数字显示等特点被广泛应用。
许多物理量,例如温度、压力、流量、液位、PH值、振动、位移、速度等通过传感器转换成信号频率,可用数字频率计来测量。
尤其是将数字频率计与微处理器相结合,可实现测量仪器的多功能化、程控化和智能化.随着现代科技的发展,基于数字式频率计组成的各种测量仪器、控制设备、实时监测系统已应用到国际民生的各个方面。
二、设计目的(1)熟悉Quatus 11软件的基本使用方法。
(2)熟悉EDA实验开发系统的使用方法。
(3)学习时序电路的设计、仿真和硬件设计,进一步熟悉VHDL设计技术。
三、数字频率计的基本原理数字频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。
闸门时间也可以大于或小于一秒。
闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长。
闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。
数字频率计的主要功能是测量周期信号的频率。
频率是单位时间(1S)内信号发生周期变化的次数。
如果我们能在给定的1S时间内对信号波形计数,并将计数结果显示出来,就能读取被测信号的频率。
数字频率计首先必须获得相对稳定与准确的时间,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计数器计算这一段时间间隔内的脉冲个数,将其换算后显示出来。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录目录 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专用集成电路为目标器件设计实现电路系统的一种技术。
而EDA技术的发展又以计算机科学、微电子技术的发展为基础,并且融合了应用电子技术、智能技术以及计算机图形学、拓扑学、计算数学等众多最新成果发展而来的。
1.2 EDA技术的发展从20世纪70年代,人们就已经开始基于计算机开发出一些软件工具帮助设计者完成电路系统的设计任务,以替代传统的手工设计的方法,随着计算机软件和硬件技术水平的提高,EDA技术也不断进步,大致经历了下面三个发展阶段:(1)CAD阶段:20世纪70年代至80年代初,由于电子技术软件的功能较弱和个人计算机的普及度不高,人们主要借助于计算机对所设计的电路的性能进行模拟和预测;完成简单的版图绘制和PCB布局。
这是EDA技术发展的早起阶段。
(2)CAE阶段:20世纪80年代至90年代初,由于人们在设计方法学、设计工具集成优化方面取得了长足的进步,使得集成电路规模逐渐扩大,电子系统设计也逐步复杂,与CAD相比,又增加了电路功能设计和结构设计、工程设计、原理图输入、逻辑仿真、电路分析、自动布局布线、PCB后分析等功能。
由此EDA进入CAE阶段。
(3)EDA阶段:20世纪90年代以来,由于微电子工艺的显著发展,促进了电子设计工具的不断改善。
尤其是进入21世纪以后,EDA技术得到了更快的发展。
使得EDA技术广泛应用于各个领域,IP核的SoC设计技术日趋成熟、SoPC技术步入实用化阶段、高速DSP实现成为了可能、复杂电子系统的设计和验证更加高效。
1.3 EDA技术的发展趋势随着人们对设备功能和成本要求的越来越苛刻,EDA技术也在不断改进,就目前而言,EDA技术有以下三个大的发展趋势。
(1)高性能的EDA工具将得到进一步发展随着市场的需求增长,超大规模集成技术不断提高,超深亚微米(VDSM)工艺已经走向成熟;IC生产线的投资更为巨大,可编程逻辑器件开始进入传统的ASIC市场;电子系统成本降低,系统体积减小,设计效率提高,EDA工具盒IP核广泛应用;自动化和智能化程度不断提高,计算机硬件平台性能的不断提高为SoC设计提供了物质基础。
(2) EDA技术将促使ASIC和FPGA逐步走向融合随着系统开发对EDA技术的目标器件各种性能指标要求的提高,ASIC和FPGA将更大程度地相互融合。
这是因为虽然标准逻辑ASIC芯片尺寸小、功能强、耗电省,胆设计复杂,并且有批量生产要求;可编程逻辑器件的开发费用低廉,能现场编程,胆体积大、功耗大。
因此,FPGA和ASIC正在走到一起,两者之间正在诞生一种“杂交”产品,互相融合,取长补短,以满足成本和上市速度的要求。
例如,将可编程逻辑器件嵌入到标准单元。
(3)EDA技术的应用领域将越来越广泛从目前的EDA技术来看,其特点就是使用普及、应用广泛、工具多样、软件功能强大。
在ASIC和PLD器件方面,向高速度、高密度、低功耗、低电压方向发展。
EDA技术发展迅速,可以用日新月异来描述。
EDA技术的广泛应用,现已涉及各行各业。
EDA水平不断提高,设计工具不断趋于完善。
然而,目前人们对更低成本、更低功耗的无止境追求和越来越短的产品上市压力为当代EDA工具和设计方法带来了不少新的挑战与机会。
例如,如何在工艺上防止模拟电路与数字电路之间的干扰;现有的大部份EDA工具最多只能处理百万门级设计规模,随着IC设计向千万门级以上规模发展,现有EDA工具和方法必须进行升级。
2、总体方案设计2.1设计内容要求设计一个八位十进制频率计,该频率计的测频范围为0到99999999HZ,测频的原理采用直接测频法,利用计数器在单位时间(通常是1s)内对被测得脉冲进行计数,计数的结果就是被测脉冲的频率,直接测频法的好处是可以通过改变门控信号的周期,从而提高测量的精度和频率的测量范围。
计数的结果通过锁存器来锁存并通过译码电路译码,然后用七段数码管对被测频率值进行动态显示。
2.2设计方案比较方案一:基于单片机实现八位十进制频率计字功能利用AT89C51的内部定时计数器来对外部输入信号进行计数,从而达到测频的目的,这种方案,结构简单容易掌握,各部分电路实现起来都非常容易。
其原理框图如图2-1所示:图2-1单片原理实现框图方案二:基于CPLD 技术实现八位十进制频率计通过Verilog HDL 硬件描述语言编写代码的方式来实现八位十进制频率计数器功能。
其框图如图2-2:图2-2基于CPLD 实现频率测量的框图AT89C51锁存器译码显示电源供电电时钟电路被测信号 CPLD 芯片分频器八位十进制计锁存器译码器动态显示电路系统时电源电下载电七段数码管2.3方案论证(1)方案一:使用单片机设计成的系统外围电路相对较少,硬件搭建相对容易。
51单片机的价格低廉,性能可靠。
但是,单片机的管脚十分有限,计算速度相对CPLD 慢,内部数据存储器为字节存储,难以满足八位十进制计数器的存储需要。
(2)方案二:采用CPLD来设计八位十进制计数器,测量精度高,运行速度快,采用verilog语言模块化编程,大大缩减了外围的硬件电路,节约了硬件资源,而且方便进行软件调试。
2.4方案选择由于本次课程设计题目为八位十进制频率计,要求可测的频率范围为0到100MHZ,所以运算速度快、精度高、性能可靠、可将外围器件通过编程来代替的CPLD 芯片更符合要求。
综合比较结合各方面的优劣势,并参考本次课程设计要求,我选择了基于CPLD器件来实现八位十进制频率计的设计方案。
3、单元模块设计本设计由复杂可编程逻辑器件(CPLD)作为控制芯片,通过Vreilog HDL硬件描述语言设计,运用自顶而下的设计思想,按功能逐层分割实现层次化的设计。
总体设计方案为由晶振电路提供时钟信号。
然后对系统时钟分频产生控制信号如秒脉冲tgate,锁存信号ale,译码控制信号的dclk和显示使能信号d_en,位选信号lclk。
在控制信号作用下,被测脉冲mclk通过八位十进制bcd加法计数器计数,计数值通过锁存器锁存,然后经过七段显示译码器译码后用数码管实现动态显示。
下面介绍主要模块的功能及作用。
3.1分频模块在分频模块中,系统时钟s_clk设定为2ms,经过1000分频后便可以产生周期为2s的闸门信号tgate,锁存信号ale,译码信号dclk,显示使能信号d_en,同时对系统时钟经过60分频便可以得到周期为125ms的位选切换信号。
3.1.1分频模块波形仿真图图3-1-1分频模块功能仿真图3.1.2分频模逻辑综合图图3-1-2分频模块逻辑综合图3.1.3分频模块verilog源代码module div(tgate,s_clk,ale,dclk,d_en,lclk,);input s_clk;output tgate,ale,dclk,d_en,lclk;reg tgate,ale,dclk,lclk,d_en;integer i,j;always @(posedge s_clk)beginif(i==499)begin tgate=~tgate;ale=~ale;dclk=~dclk;d_en=~d_en;i=0;endelse i=i+1;endalways @(posedge s_clk)if(j==30)begin lclk=~lclk;j=0;endelse j=j+1;endendmodule3.2计数模块该计数模块为十位八进制bcd加法计数器,clrn为清零信号,高电平有效,q为计数值,tgate为高电平为1s的门控信号,仿真中设定被测脉冲周期为40ms,对其在1s钟内进行计数,计数结果q值显示为25。
符合理论计算结果。
3.2.1计数模块功能仿真波形图3-2-1计数模块功能仿真图3.2.2计数模块逻辑综合图图3-2-2分频模块逻辑综合图3.2.3计数模块verilog源代码module counter(clrn,mclk,q,tgate,cunt);input clrn,mclk,tgate;output [15:0]q,cunt;reg [15:0]q;always @(posedge mclk )beginif(!clrn) q[15:0]=0;else if(tgate)beginif(q[15:0]==16'H9999) q[15:0]=0;else if(q[11:0]==12'H999) q[15:0]=q[15:0]+12'H667;else if(q[ 7:0]== 8'H99) q[15:0]=q[15:0]+8'H67;else if(q[ 3:0]== 4'H9) q[15:0]=q[15:0]+4'H7; //十六进制转换为十进制。