8位16进制频率计设计

合集下载

QuartusII实验

QuartusII实验

实验一用原理图输入法设计四位全加器一实验目的1熟悉利用Quartus II 的原理图输入方法设计简单组合电路.2掌握层次化设计的方法,并通过一个8位全加器的设计把握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。

二实验仪器电子计算机Quartus II三实验原理加法器是数字系统中的基本逻辑器件。

例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。

但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。

多位加法器的构成有两种方式:并行进位和串行进位方式。

并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。

通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。

四位全加器可对两个多位二进制数进行加法运算,同时产生进位。

当两个二进制数相加时,较高位相加时必须加入较低位的进位项(Ci),以得到输出为和(S)和进位(C0)。

四实验步骤(一)创建工程1、选择菜单file—New Project Wizard,选择保存位置,并命名工程名2、将设计文件加入工程。

3、选择仿真器和综合类型,目标芯片EP2C5T144C8。

4、设置相关参数(二)原理图设计1、在QuartusII操作环境中,单击工具栏“File”选择“new”中的“Device Design Files”建立新的原理图编辑窗口。

2、在编辑窗口右击选择Insert——Symbol,将相关元件调入原理图编辑窗口中,并连接好电路,在元件上双击后可以更改各输入引脚名。

3、保存到工程建立的目录文件夹4、将设计项目设置成可调用的文件。

在打开原理图文件的情况下,选择File—Create/Update —Create Symbol Files for Cureent File,即可将当前文件变成一个元件符号存盘,以待在高层次设计中调用。

EDA实训报告 8位16进制频率计

EDA实训报告 8位16进制频率计

《EDA技术》实训报告专业班级:学生姓名:学号:实训时间:指导教师:2018年12月实训成绩评定表学生姓名专业班级实训地点导教师指导教师:评语年月日引言 (1)一、实训目的 (6)二、实训内容 (6)三、实训要求 (6)四、实训原理 (7)4.1QuartusⅡ设计流程 (7)4.2频率测量方法 (8)4.3频率计工作原理 (9)五、方案及实现方法 (9)六、实训具体操作步骤 (11)6.1新建工程文件 (11)6.2各子模块的设计 (13)6.2.1测频控制模块设计 (13)6.2.232位计数模块设计 (17)6.2.332位锁存模块设计 (19)6.2.4顶层文件设计 (21)6.3模拟与仿真 (24)6.3.1对测频信号发生器文件进行仿真 (24)6.3.2对计数器文件仿真 (25)6.3.3对锁存器文件仿真 (26)6.3.4对顶层文件进行仿真 (26)七、实训总结 (28)EDA简介:在现代电子设计领域,电子产品更新换代的步伐越来越快,电子技术迅猛发展,高新技术日新月异。

传统的电子技术设计方法,以不能帮助我们更好的、高效的完成设计任务。

所以我们需要更好的工具来帮助我们完成设计任务。

在此环境下,促进了EDA的诞生。

EDA技术是指以计算机为工作平台,以EDA软件开发工具为开发环境,以硬件描述语言为设计语言,以ASIC(Application Specific Integrated Circuits)为实现载体的电子产品自动化设计过程。

其融合应用了电子技术、计算机技术、信息处理及智能化技术的等技术。

在EDA软件开发平台上,根据原理图或硬件描述语言(Hardware Description Language,HDL)完成的设计文件,对以硬件描述语言为逻辑描述手段完成设计的文件,自动地完成逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、布局布线、仿真、目标芯片的适配编译、逻辑映射、逻辑优化、仿真测试和编程下载等工作。

八位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 8位十六进制频率计设计

实验8 8位十六进制频率计设计

实验八8位十六进制频率计设计
一、实验目的
1. 设计8位十六进制频率计,学习较复杂数字系统设计方法。

2. 熟悉元件例化语句;
3. 熟悉包含多个文件的电路设计方法。

二、实验内容
运用Quartus II 集成环境下的图形设计方法设计一个8位的十六进制频率计。

进行波形仿真和分析。

三、实验步骤及参考程序
实验步骤:
1、编写测频控制器、32位锁存器、32位计数器并编译、仿真得到正确的波形;
2、编写顶层模块;
3、仿真并分析波形。

参考程序:

参考波形图:
四、实验扩展及思考
1、怎样设计4位或8位十进制频率计?
2、将顶层文件的设计用图形的方法实现。

3、将32位频率值用实验箱上的8个数码管显示出来。

电子设计自动化第六章

电子设计自动化第六章

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FREQTEST IS PORT(CLK1HZ:IN STD_LOGIC; FSIN: IN STD_LOGIC; DOUT: OUT STD_LOGIC_VECTOR(31 DOWNTO 0) ); END FREQTEST; ARCHITECTURE STRUC OF FREQTEST IS COMPONENT FTCTRL PORT (CLKK : IN STD_LOGIC; CNT_EN : OUT STD_LOGIC; RST_CNT : OUT STD_LOGIC; LOAD : OUT STD_LOGIC); END COMPONENT;
【例5-25】
LIBRARY IEEE; --32位锁存器 USE IEEE.STD_LOGIC_1164.ALL; ENTITY REG32B IS PORT ( LK : 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 IS BEGIN PROCESS(LOAD, DIN) BEGIN IF LK'EVENT AND LK='1' THEN DOUT<=DIN;--时钟到来时 ,锁存输入数据 END IF; END PROCESS; END behav;
本设计采用测频法,则必须提供一个T秒时间, 由计数器在T秒内计出被测信号发生了N此变 化,若T=1s,则被测信号的频率为fz=N. 测定信号的频率必须有一个脉宽为1秒的输入 信号脉冲计数允许的信号;1秒计数结束后, 计数值锁入锁存器的锁存信号并为下一测频计 数周期作准备的计数器清0信号。这3个信号可 以由一个测频控制信号发生器产生,即图526中的TFCTRL 。

EDA课程设计题目

EDA课程设计题目

1.数控分频器的设计2.8位16进制频率计设计3.数据采集电路和简易存储示波器设计利用FPGA直接控制0809对模拟信号进行采样,然后将转换好的8位二进制数据迅速存储到存储器中,在完成对模拟信号一个或数个周期的采样后,由外部电路系统(如单片机)将存储器中的采样数据读出处理。

4.8位移位相加硬件乘法器设计5.16阶数字滤波器的设计6.基于DSP Builder的FIR数字滤波器设计7.基于DSP Builder的IIR数字滤波器设计实验8. 基于FPGA的十字路口交通灯控制器9. 通用十进制加法器(动态扫描显示)设计一个双4 位的BCD码全加器,其框图如图1所示。

图中的“进位出”C即是本位的进位输出。

全加器的16个输入所对应的管脚同16位拨码开关相连,16个输入管脚是(被加数)A1(3..0)、(被加数)B1(3..0)和(被加数)A2(3..0)、(被加数)B2(3..0)。

相加的十进制结果经译码电路译为7段显示输出,和与进位的值。

要求显示器动态显示两位十进制相加的结果。

10、通用十进制减法器(动态扫描显示)设计一个双4 位的BCD码全减器,其框图如图2所示。

图中的“借位出”C即是本位的借位输出。

全减器的16个输入所对应的管脚同16位拨码开关相连,16个输入管脚是(被减数)A1(3..0)、(被减数)B1(3..0)和(减数)A2(3..0)、(减数)B2(3..0)。

相减的十进制差经译码电路译为7段显示输出,差与借位的值。

要求显示器动态显示两位十进制相减的结果。

11、六人抢答器抢答台数为6;具有抢答开始后20秒倒计时,20秒倒计时后六人抢答显示超时,并报警;能显示超前抢答台号并显示犯规报警;系统复位后进入抢答状态,当有一路抢答按键按下,该路抢答信号将其余各路抢答信号封锁,同时铃声响起,直至该路按键松开,显示牌显示该路抢答台号。

12、出租车计费器实现计费功能,计费标准为武汉起步3元,车行3公里后为1.4元/公里,当计费达到20元后,每公里加收50%的车费,车停止每3分钟增加0.7元。

8位十六进制频率计的设计

8位十六进制频率计的设计

实验二利用VHDL实现8位十六进制频率计一、实验目的1)掌握更复杂的原理层次化设计和数字系统设计方法;2)完成8位16进制频率计的设计。

二、实验内容在Quartus II上利用VHDL设计出一个8位的十六进制的频率计,分别设计出频率计的各个模块。

三、实验仪器1)计算机及操作系统;2)QuartusII软件。

四、实验原理根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉冲宽度为1秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号并为下一测频计数周期做准备的计数器清0信号。

这3个信号可以由一个测频控制信号发生器产生,即TESTCTL。

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

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

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

设置锁存器的好处是数据显示稳定,不会由于周期性的清0信号而不断闪烁。

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

数字频率计的关键组成部分包括一个测频控制信号发生器、一个计数器和一个锁存器,另外包含外电路的信号整形电路、脉冲发生器、译码驱动电路和显示电路。

工作原理:系统正常工作时,脉冲信号发生器输入1Hz的标准信号,经过测频控制信号发生器的处理,2分频后即可产生一个脉宽为1秒的时钟信号,以此作为计数闸门信号。

测量信号时,将被测信号通过信号整形电路,产生同频率的矩形波,输入计数器作为时钟。

当计数闸门信号高电平有效时,计数器开始计数,并将计数结果送入锁存器中。

设置锁存器的好处是显示的数据稳定,不会由于周期性的清零信号而不断闪烁。

最后将锁存的数值由外部的七段译码器译码并在数码管上显示。

「8位十六进制频率计设计」

「8位十六进制频率计设计」

「8位十六进制频率计设计」近年来,随着技术的不断进步和发展,计量仪器的设计和制造也越来越受到人们的关注。

其中,频率计作为一种常见的计量仪器,用于测量信号的频率,被广泛应用于电子、通信、无线电等领域。

本文将重点介绍一种8位十六进制频率计的设计方案。

这种频率计结构简单,具有较高的精度和稳定性,适用于较高频率范围内的信号测量。

在此设计中,采用了数字式频率测量的原理。

具体的设计方案如下:1.时钟信号发生器:首先,需要一个稳定的高频时钟信号来作为计数的基准。

可以采用晶体振荡器或PLL锁相环电路来生成高频稳定的时钟信号。

2.频率除法器:将输入信号经过频率除法器进行分频处理,将其频率降低到可以被下一步计数器接收的范围内。

这里可以选择合适的分频系数,使得被测信号的频率能够在计数器的输入范围内。

3.8位计数器:将分频后的信号输入到8位计数器中进行计数。

计数器可以选择使用CMOS或TTL逻辑芯片来实现,具有较高的计数速度和较低的功耗。

4.显示部分:计数器输出的二进制数据经过十六进制显示芯片进行转换,并通过LED数码管或LCD屏幕显示出来。

为了兼顾精度和显示效果,可以采用高亮度的LED数码管进行显示。

5.校准功能:为了确保频率计的精度和准确性,在设计中应该考虑加入校准功能。

可以通过输入已知频率的标准信号,并与频率计测得的结果进行比较,进行校准操作。

这种设计方案具有以下优点:1.精度较高:数字式频率计的测量精度受到分频比率和计数器位数的影响,通过合理选择这两个参数,可以达到较高的精度要求。

2.适用范围广:该设计方案适用于较高频率范围内的信号测量,可以满足大部分应用场合的需求。

3.结构简单:通过合理的功能模块划分和选择,使得整个频率计的结构简单,易于实现和维护。

4.显示直观:采用LED数码管或LCD屏幕进行显示,使得测量结果直观、清晰可见。

当然,这种设计方案也存在一些不足之处:1.精度受限:由于采用了分频处理和计数器,测量精度受到了一定的限制。

EDA实验报告 4位全加器,16位频率计数器

EDA实验报告 4位全加器,16位频率计数器

实验课程名称:EDA技术与应用实验项目名称4位全加器实验实验成绩实验者专业班级组别同组者实验日期一、实验目的1.进一步加深理解全加器的工作原理及电路组成,加深对EDA技术的掌握。

2.熟悉利用Quartus Ⅱ的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个四位全加器的设计把握原理图输入方式设计的详细流程。

二、实验内容实验内容1:按照书本4.5.1节完成半加器和1位全加器的设计,包括用原理图输入,编译,综合,适配,仿真,实验板上的硬件测试,并将此全加器电路设置成一个元件符号入库。

实验内容2:建立一个更高层次的原理图,利用以上获得的1位全加器构成4位全加器,并完成编译,综合,适配,仿真和硬件测试。

三、实验仪器1.计算器及操作系统2.Quartus II软件四、实验原理一个4位全加器可以由4个1位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相接。

1、半加器描述根据半加器真值表可以画出半加器的电路图。

a b so Co0 0 0 00 1 1 01 0 1 01 1 0 1表1半加器h_adder真值表图1 半加器h_adder电路图2、1位全加器描述一位全加器可以由两个半加器和一个或门连接而成,因而可以根据半加器的电路原理图或真值表写出1位全加器的VHDL 描述。

图2 1位全加器电路图3、4位全加器设计描述4位全加器可以看做四个1位全加器级联而成,首先采用基本逻辑门设计一位全加器,而后通过多个1位全加器级联实现4位全加器。

其中,其中cin 表示输入进位位,cout 表示输出进位位,输入A 和B 分别表示加数和被加数。

S 为输出和,其功能可用布尔代数式表示为:S=A+B+Ciii i i o ABC ABC ABC ABC C +++=首先根据一位全加器的布尔代数式应用基本逻辑门设计一位全加器,而后仿真验证一位全加器设计,准确无误后生成元件,供4位全加器设计用。

FPGA实验报告

FPGA实验报告

FPGA实验报告FPGA专业:电子信息科学与技术EDA实验一一(实验内容:用原理图输入法设计8位全加器,具体要求参见教材第六章“原理图输入设计方法“的实验与设计部分(6-1) 二(实验目的1、熟悉利用MAX+plus II的原理图输入方法设计简单组合电路,掌握层次化设计的方法;2、通过一个8位全加器的设计把握利用EDA软件进行电子线路设计的详细流程‘三(实验原理一个8位全加器可以由8个1一位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的低位进位输入信号cin相连。

四(实验内容1、设计一位半加器和一位全加器;2、根据1设计8位全加器。

五(实验过程及结果分析(1)半加器原理图如下:波形图如下:封装后如下:(2)一位全加器波形图如下:延迟分析:封装后如下:(3)八位全加器波形图延迟分析:六、总结1 仿真结果都比较理想。

2为了提高加法器的速度,可以采用流水线技术来进行设计以提高数字电路的整体运行速度。

流水线技术就是把在一个时钟周期内执行的操作分成几步较小的操作,并在多个较高速的时钟内完成。

EDA实验二一(实验内容:简单组合电路与时序电路的设计,具体要求参见教材第四章“VHDL设计初步”中的实验与设计(4-1,4-2)。

二(实验目的:熟悉MAX+plus2的VHDL文本设计流程全过程,学习组合电路的设计,多层次电路设计,仿真和硬件测试。

三(实验内容1:利用MAX+PLUS2完成2选1多路选择器的文本编辑输入和仿真测试等步骤。

实验内容2 :引脚锁定以及硬件下载测试。

四(实验报告:1(简单组合电路的设计(1)2选1多路选择器程序如下:波形如下:(2)波形如下:2(简单时序电路的设计 (1)实验内容一:设计触发器程序如下:(2)实验内容二:设计锁存器EDA实验三一(实验内容:8位十六进制频率计设计,具体要求参见教材第五章“VHDL设计进阶”中的实验与设计(5-5)。

8位数码显示频率计设计

8位数码显示频率计设计
always@ (posedge clkk)
begin
load<=!load;
en_cnt<=!en_cnt;
end
always@ (clkk or en_cnt or load)
begin
if(clkk==1'b0&en_cnt==1'b0&load==1'b1)
rst_cnt<=1'b1;
else
rst_cnt<=1'b0;
end
endmodule
module REG32(din,lk,cout);
input [31:0] din;
input lk;
output [31:0] cout;
reg [31:0] cout;
always@(posedge lk)
yima(cout[7:4],z1);
yima(cout[11:8],z2);
yima(cout[15:12],z3);
yima(cout[19:16],z4);
yima(cout[23:20],z5);
yima(cout[27:24],z6);
yima(cout[31:28],z7);
begin
cout<=din;
end
endmodule
module pinlv(clock,z0,z1,z2,z3,z4,z5,z6,z7);
input clock;
output[6:0] z0,z1,z2,z3,z4,z5,z6,z7;
wire clk,clkk,load,rst_cnt,en_cnt,lk;

8位数字频率计设计

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%,否则无效;报告以书面和光盘(一个班可刻录一张光盘)两种形式上交。

8位数码管动态显示的频率计

8位数码管动态显示的频率计

8位数码管动态显示的频率计第一篇:8位数码管动态显示的频率计一、课程设计要求设计一个8位数码管显示的频率计(频率分辨率为0.1Hz)。

二、总体结构框图系统时钟分频及控制待测频率计数数据锁存动态扫描数码管段选数码管位选数码管显示图1 总体结构框图三、课程设计原理在电子技术中,频率是最基本的参数之一,并且与许多点参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得尤为重要。

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

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

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

本次课程设计中使用的是直接测频法,即用计数器在计算机10s 内输入信号周期的个数,其测频范围为0Hz-9999999.9Hz。

四、器件的选择1、装有QuartusII软件的计算机一台。

2、芯片:使用altera公司生产的Cyclone系列芯片,本实验箱中为EP1C8Q208C8N芯片。

3、EDA实验箱一个。

4、下载接口是数字芯片的下载接口(JTAG)主要用于FPGA芯片的数据下载。

5、时钟源。

五、功能模块和信号仿真图以及源程序(1)系统时钟分频及控制的功能模块图及其源程序图2 功能模块图作用:将试验箱上的20MHz的晶振分频,输出CLOCK为数码管提供1kHz的动态扫描频率。

TSTEN输出为0.05s的信号,对频率计中的32位十进制计数器CNT10的ENA使能端进行同步控制,当TSTEN高电平时允许计数,低电平时停止计数,并保持其所计的脉冲数。

在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前一秒的计数值锁存进锁存器REG32B中,并由外部的十进制7段数码管显示计数值。

基于DE2的8位数码显示频率计verilog设计

基于DE2的8位数码显示频率计verilog设计

实验三 8位数码显示频率计设计一、实验目的:设计8位频率计,学习较复杂的数字系统的设计方法。

二、实验原理及内容:1、根据频率的定义和频率测量的基本原理。

2、测定信号的频率必须有一个脉宽为1秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值被锁入锁存器,计数器清零,为下一测频计数周期作好准备。

三、实验步骤:1.设计生成1秒时钟信号-- CLK2.设计测频控制信号发生器-- FTCTRL;3.设计1秒计数值锁存器-- REG32B;4.设计32位二进制计数器-- COUNTER32B5.设计十六进制7段译码器-- Decoder6.设计生成1KHz或10KHz待测信号-- Fin7.完成频率计设计、仿真和硬件实现。

四、实验程序:module pinlvji(clk,shu_0,shu_1,shu_2,shu_3,shu_4,shu_5,shu_6,shu_7); input clk;output [6:0]shu_0;output [6:0]shu_1;output [6:0]shu_2;output [6:0]shu_3;output [6:0]shu_4;output [6:0]shu_5;output [6:0]shu_6;output [6:0]shu_7;reg clkk;// 1'sreg [30:0]count;reg [30:0]count_1=0;//FTCTRLreg [31:0]count_2=0;//COUNTER32Breg [31:0]count_3=0;//REG32Breg load=1,rst_cnt=1,cnt_en=0;//FTCTRL shu chu reg [30:0]count_4=0;//ce shi ji shu qireg fin=0;always@(posedge clk)//ce shi xin haoif(count_4==30'd250000)beginfin=~fin;count_4<=0;endelsecount_4=count_4+1;always@(posedge clk)//sheng cheng 1s de shi zhong beginif(count==30'd2*******)beginclkk<=~clkk;count<=0;endelsecount<=count+1;endalways@(posedge clkk) //she ji FTCTRLbegincnt_en<=~cnt_en;load<=~load;endalways@(clkk,cnt_en,load)if(cnt_en==0&&load==1&&clkk==0)beginrst_cnt<=1;endelserst_cnt<=0;always@(posedge rst_cnt,posedge fin)//she ji COUNTER32B beginif(rst_cnt)begincount_2<=0;endelseif(cnt_en)count_2<=count_2+1;endalways@(posedge load)//she ji REG32Bbegincount_3<=count_2;endshuma a1(count_3[3:0],shu_0); shuma a2(count_3[7:4],shu_1); shuma a3(count_3[11:8],shu_2); shuma a4(count_3[15:12],shu_3); shuma a5(count_3[19:16],shu_4); shuma a6(count_3[23:20],shu_5); shuma a7(count_3[27:24],shu_6); shuma a8(count_3[31:28],shu_7);endmodulemodule shuma(a,b);input [3:0]a;output [6:0]b;reg [6:0]b;always@(a)case(a)4'b0000:b<=7'b0000001;4'b0001:b<=7'b1001111;4'b0010:b<=7'b0010010;4'b0011:b<=7'b0000110;4'b0100:b<=7'b1001100;4'b0101:b<=7'b0100100;4'b0110:b<=7'b1100000; 4'b0111:b<=7'b0001111; 4'b1000:b<=7'b0000000; 4'b1001:b<=7'b0001100; 4'b1010:b<=7'b0001000; 4'b1011:b<=7'b0000000; 4'b1100:b<=7'b0110001; 4'b1101:b<=7'b0000001; 4'b1110:b<=7'b0110000; 4'b1111:b<=7'b0111000; default : b=7'b0000001; endcaseendmodule。

FPGA实验——8位数码显示频率计设计

FPGA实验——8位数码显示频率计设计

哈尔滨理工大学软件学院实验报告课程FPGA题目8位数码显示频率计设计(4学时)班级集成12-2班专业集成电路设计与集成系统学生学号12140202272014年10月22日实验三8位数码显示频率计设计实验三8位数码显示频率计设计(4学时)实验目的^设计8位频率计,学习较复杂的数字系统的设计方法。

实验原理及内容二根据频率的定义和频率测量的基本原理。

测定信号的频率必换有一个脉宽为1秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值被锁入锁存器,计数器清零,为下一测频计数周期作好准备。

实验步骤:i设]十生成1秒时钟信号“CLK2 •设计测频控制信号发生器一3■设#1秒计磁值锁存器--4 •设计32位一进制计数器一彳设计十六进制7段译码器一FTCTRL; REG32B; COUNTER32B Decoder6 ■设计生成lKHz或lOKHz待测信号一Fin 7•気成频率计设计、仿真和妓件实现.频率计电路框图实验目的:LOAD FTCTRLCLKKRST_CWTCNT_ENJ32 1- jiCLR ENABLoourCOUNTER328F,n频率计测频控制器FTCTRL 测控时序图^-CLKK上斤泪fit 仔REG32BK _______ ™4Fin-o LOAD实验原理及内容:根据频率的定义和频率测量的基本原理。

测定信号的频率必须有一个脉宽为1秒的输入信号脉冲计数允许 的信号;1秒计数结束后,计数值被锁入锁存器,计数器清零, 为下 一测频计数周期作好准备。

实验步骤:1•设计生成1秒时钟信号-- 2•设计测频控制信号发生器-- 3•设计1秒计数值锁存器 --4•设计32位二进制计数器-- 5•设计十六进制7段译码器--6•设计生成1KHz 或10KHz 待测信号-- Fin7•完成频率计设计、仿真和硬件实现。

实验程序:CLK FTCTRL; REG32B; COUNTER32B Decodermodule frequenee (input output reg[31:0]freq_out //频率输出);reg [31:0] cnt1,num; //cnt1 ,分频作用,产生脉宽一秒基准时钟 // num,用来计算1s 内待测信号所发出的脉冲数用来计数/**** 产生占空比为50%,周期为2s 的单位脉冲sec ****/always @ (posedge clk) beginif(cnt 仁=50_000_000)// 50000000分频,产生脉宽1s 脉宽基准时钟(要基准时钟为 50M)begin cnt1<=0;inputCLK_X,// 待测信号rst , reg sec;//sec 用来产生周期为2s 脉宽1s 基准时钟reg state;// 和 sec 共同为使能信号sec<=~sec;endelsecnt1<=cnt1+1;end/**** 统计待测信号在单位时间1s 内产生的脉冲数****/always @ (posedge CLK_X )beginif (!rst)beginfreq_out<=0;num<=0;state<=1;endelsebeginif(sec) // sec为高电平期间(1s),统计待测信号产生的脉冲数beginnum<=num+1;state<=0;endelse // sec为低电平期间(1s),读取待测信号产生的脉冲数begincase(state)0: begin freq_out<=num; state<=1; end // 读取脉冲数(由于freq为reg型,在下一次sec低电平到来之前,会一直保持当前值不变)1: num<=0; // 将num 清零,为下一个sec高电平期间脉冲数的统计做准备//endcaseend//如果待测时钟频,比 1 秒脉宽的基准时钟还小,才会出现一只增数字的情况,即num未来的及清零endend endmodulemodule newclk(clk,reset,clk_out);input clk,reset;output clk_out;reg clk_out;reg[100:0] count;parameter N = 5000; //分频产生1K HZ 脉的时钟always @ (posedge clk)if(!reset)begincount <= 1'b0;clk_out <= 1'b0;endelseif ( count < N/2 -1)begincount <= count + 1'b1;endelsebeginend endmodulemodule shili(outputreg[6:0]h1,input [3:0]c,input clk); count <= 1'b0;clk_out <= ~clk_out;always@(c) begincase(c[3:0])4'b0000:h1<='b1000000;4'b0001:h1<='b1111001;4'b0010:h1<='b0100100;4'b0011:h1<='b0110000;4'b0100:h1<='b0011001;4'b0101:h1<='b0010010;4'b0110:h1<='b0000010;4'b0111:h1<='b1111000;4'b1000:h1<='b0000000;4'b1001:h1<='b0010000;4'b1010:h1<='b0001000;4'b1011:h1<='b0000011;4'b1100:h1<='b1000110;4'b1101:h1<='b0100001;4'b1110:h1<='b0000110;4'b1111:h1<='b0001110;default : h1<='b1000000;endcaseend endmodulemodule top_sevev( output [63:0]H, 须为wire 行变量input [31:0]freq, input clk);shili seven_0( H[7:0],freq[3:0],clk); 七段数码管的模块的实例化shiliseven_1( H[15:8],freq[7:4],clk);shiliseven_2( H[23:16],freq[11:8],clk);shiliseven_3( H[31:24],freq[15:12],clk);shiliseven_4( H[39:32],freq[19:16],clk);shiliseven_5( H[47:40],freq[23:20],clk);shili// H 必// 八个seven_6( H[55:48],freq[27:24],clk);shiliseven_7( H[63:56],freq[31:28],clk);en dmodule原理图:实验结果:1000Hz的测量结果100000Hz的测量结果。

数字逻辑与数字系统课程设计八位数字频率计

数字逻辑与数字系统课程设计八位数字频率计

数字逻辑与数字系统课程设计----八位数字频率计学院: 计算机学院专业: 计算机科学与技术班级: 计101—3姓名: 董梦学号: 201058501316指导教师: 沈春华2012年1月5日一,设计任务与要求1,实验说明2,实验要求二,总体框图1,结构的总体框图2,框图的说明3,设计思路4,方案设计三,功能模块及说明1,模8计数器的模块2,模10计数器的模块3,模32计数器的模块4, 8选1四位数据选择器的模块5,七段显示译码器的模块6,存储器的模块四,总体设计结构图1,总体原理五,总结,心得体会六,感谢语八位数字频率计一.设计任务与要求1.实验说明:采用一个标准的基准时钟,在单位时间(1s)里对被侧信号的脉冲数进行计数,即为信号的频率。

2.实验要求: 设计一个8位数字频率计:可以测量从1Hz到99 999 999Hz的信号频率并将被测信号的频率在8个数码管上显示出来。

二.总体框图1,结构的总体框图(电路的总体框图)2,框图的说明(1)说明:此电路由六部分组成(2)它们分别是8个模10计数器,模8计数器,模32计数器,寄存器,八选一四位数据选择器,七段显示译码器1 8个模10计数器是计数模块,它的输入端接待测频率。

2 模8计数器控制模块,它的输出端分别接八选一的地址端和8的数码显示管的选择端。

3 模32计数器是一个计时模块,它的输入端口接一个32Hz的频率,控制一秒的时间。

4 寄存器起到寄存作用,在一秒时将计数模块的结果寄存起来。

5 八选一将8个模10的芯片分别与8个数码显示管一一对应6 七段显示译码器决定了数码管的显示方式。

3,设计思路测频率就是测一秒内待测信号通过的脉冲数,既然这样,就必须有一个计时模块来控制一秒钟,所以可以设计一个模32的计数器其输入接32Hz的频率,输出端口co每32个脉冲输出1,因此co为一秒后由0变为1。

然后八位数码显示管都要可以从0显示到9,因此要把八个模10的计数器串联在一起并且与八个显示管建立关联,用模8计数器和八选一两个芯片来实现这个功能,把模8的输出三个端口一方面作为八选一的地址端输入,另一方面连接到8个数码显示管的选择端上。

8位频率计设计

8位频率计设计

8 位十六进制频率计设计一、实验名称8 位十六进制频率计设计二、实验目的设计8位16进制频率计,学习较复杂的数字系统设计方法。

三、实验原理根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为 1 秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值被锁入锁存器,计数器清0,为下一测频计数周期作好准备。

测频控制信号可以由一个独立的发生器来产生,即图7-57中的FTCTRL。

根据测频原理,测频控制时序可以如图7-58所示。

四、实验内容FTCTRL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计中的32位二进制计数器COUNTER32B(图7-57)的ENABL 使能端进行同步控制。

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

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

设置锁存器的好处是数据显示稳定,不会由于周期性的清0信号而不断闪烁。

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

实验内容1:分别仿真测试模块例7-7、例7-8 和例7-9,再结合例7-10 完成频率计的完整设计和硬件实现,并给出其测频时序波形及其分析。

建议选实验电路模式5;8个数码管以16进制形式显示测频输出;待测频率输入FIN由clock0 输入,频率可选4Hz、256HZ、3Hz...50MHz 等;1HZ 测频控制信号CLK1HZ 可由clock2 输入(用跳线选1Hz)。

注意,这时8个数码管的测频显示值是16进制的。

实验内容 2:参考例4-22,将频率计改为 8 位 10 进制频率计,注意此设计电路的计数器必须是 8 个 4 位的 10进制计数器,而不是1个。

此外注意在测频速度上给予优化。

实验内容3:用LPM模块取代例7-8和例7-9,再完成同样的设计任务。

数字钟&频率计设计

数字钟&频率计设计
1
1 10
秒,
1 100
秒)
设计方法:
对于8位数码管显示(hh,mm,ss,秒,秒)的24小时计时数字钟,可采 用如下办法:
1、P0为字形码输出口,同相驱动(原码输出), P2为字位码输出口,反相驱动(“0”亮“1”不亮), 2、设置CT0为10mS定时,工作方式1,使用中断。在f=12MHz条件下: TMOD=0000,0001B=01H,TC=65536-10,000/1=55,536=D8F0H 3、时间缓存单元TBUF: 地址为70H,71H,72H,73H单元,以BCD值存放时 间计数值。其中: (70H)为小时值计数单元;(71H)为分计数单元; (72H)为秒计数单元; 数规则进行工作。 4、显示缓存单元DBUF: 地址设置为78H/79H/7AH/7BH/7CH/7DH/7EH/7FH 单元,存放(时、分、秒、
;CT0中断服务程序入口地址
ORG MAIN: MOV MOV MOV SETB SETB SETB SETB ; MOV ; MOV MOV MOV
;CT0工作方式1,定时 ;20mS定时 ;设置CT0为高优先权 ;开放CT0中断 ;开放CPU中断 ;启动CT0 ; 20mS×50=1S ;设置时间显示的初始值11:59:55
17
① 端口检测与校时 端口检测与校时的硬件连接图:
18
端口检测与校时的软件设计框图
19
② 端口检测与中断校时 端口检测与中断校时的硬件连接图:
20
端口检测与中断校时的软件设计框图
21
③ 端口检测与逐位校时 • 端口检测与逐位校时的硬件连接图:
22
端口检测与逐位校时的软件设计框图
23
51单片机应用设计举例
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六:8位十六进制频率机设计
一实验目的:
设计8位16进制频率计,学习较复杂的数字系统设计方法。

二实验原理:
根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为 1 秒的输入信号脉冲计
数允许的信号;1秒计数结束后,计数值被锁入锁存器,计数器清0,为下一测频计数周期作好准备。

测频控制信号可以
由一个独立的发生器来产生,即图7-34中的FTCTRL。

根据测频原理,测频控制时序可以如图7-33所示。

设计要求是:FTCTRL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计中的32位二进制计数器
COUNTER32B(图7-34)的ENABL使能端进行同步控制。

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

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

设置锁存器的好处是数据显示稳定,不会由于周期性的清0信号而不断闪烁。

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

三实验内容:
1:分别仿真测试模块例7-7、例7-8和例7-9,再结合例7-10完成频率计的完整设计和硬件实现,并给出其测频时序波形及其分析。

建议选实验电路模式5;8个数码管以16进制形式显示测频输出;待测频率输入FIN由clock0输入,频率可选4Hz、256HZ、3Hz...50MHz等;1HZ测频控制信号CLK1HZ可由clock2输入(用跳线选1Hz)。

注意,这时8个数码管的测频显示值是16进制的。

2:参考例3-22,将频率计改为8位10进制频率计,注意此设计电路的计数器必须是8个4 位的10
进制计数器,而不是1个。

此外注意在测频速度上给予优化。

3:用LPM模块取代例7-8和例7-9,再完成同样的设计任务。

四实验步骤:
实验程序如下
1. 测频控制电路程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY FTCTRL IS
PORT (CLKK : IN STD_LOGIC; -- 1Hz
CNT_EN : OUT STD_LOGIC; -- 计数器时钟使能
RST_CNT : OUT STD_LOGIC; -- 计数器清零
Load : OUT STD_LOGIC ); -- 输出锁存信号
END FTCTRL;
ARCHITECTURE behav OF FTCTRL IS
SIGNAL Div2CLK : STD_LOGIC;
BEGIN
PROCESS( CLKK )
BEGIN
IF CLKK'EVENT AND CLKK = '1' THEN -- 1Hz时钟2分频
Div2CLK <= NOT Div2CLK;
END IF;
END PROCESS;
PROCESS (CLKK, Div2CLK)
BEGIN
IF CLKK='0' AND Div2CLK='0' THEN RST_CNT<='1';-- 产生计数器清零信号ELSE RST_CNT <= '0'; END IF;
END PROCESS;
Load <= NOT Div2CLK; CNT_EN <= Div2CLK;
END behav;
2. 32位锁存器程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY REG32B IS
PORT ( LK : 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 IS
BEGIN
PROCESS(LK, DIN)
BEGIN
IF LK'EVENT AND LK = '1' THEN DOUT <= DIN;
END IF;
END PROCESS;
END behav;
3. 32位计数器程序如下:
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY COUNTER32B IS
PORT (FIN : IN STD_LOGIC; -- 时钟信号
CLR : IN STD_LOGIC; -- 清零信号
ENABL : IN STD_LOGIC; -- 计数使能信号
DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); -- 计数结果END COUNTER32B;
ARCHITECTURE behav OF COUNTER32B IS
SIGNAL CQI : STD_LOGIC_VECTOR(31 DOWNTO 0);
BEGIN
PROCESS(FIN, CLR, ENABL)
BEGIN
IF CLR = '1' THEN CQI <= (OTHERS=>'0'); -- 清零
ELSIF FIN'EVENT AND FIN = '1' THEN
IF ENABL = '1' THEN CQI <= CQI + 1; END IF;
END IF;
END PROCESS;
DOUT <= CQI;
END behav;
4. 频率计顶层文件程序如下:
LIBRARY IEEE;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY FREQTEST IS
PORT ( CLK1HZ : IN STD_LOGIC;
FSIN : IN STD_LOGIC;
DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) );
END FREQTEST;
ARCHITECTURE struc OF FREQTEST IS
COMPONENT FTCTRL
PORT (CLKK : IN STD_LOGIC; -- 1Hz
CNT_EN : OUT STD_LOGIC; -- 计数器时钟使能
RST_CNT : OUT STD_LOGIC; -- 计数器清零
Load : OUT STD_LOGIC ); -- 输出锁存信号
END COMPONENT;
COMPONENT COUNTER32B
PORT (FIN : IN STD_LOGIC; -- 时钟信号
CLR : IN STD_LOGIC; -- 清零信号
ENABL : IN STD_LOGIC; -- 计数使能信号
DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); -- 计数结果
END COMPONENT;
COMPONENT REG32B
PORT ( LK : IN STD_LOGIC;
DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) );
END COMPONENT;
SIGNAL TSTEN1 : STD_LOGIC;
SIGNAL CLR_CNT1 : STD_LOGIC;
SIGNAL Load1 : STD_LOGIC;
SIGNAL DTO1 : STD_LOGIC_VECTOR(31 DOWNTO 0);
SIGNAL CARRY_OUT1 : STD_LOGIC_VECTOR(6 DOWNTO 0);
BEGIN
U1 : FTCTRL PORT MAP(CLKK =>CLK1HZ,CNT_EN=>TSTEN1,
RST_CNT =>CLR_CNT1,Load =>Load1);
U2 : REG32B PORT MAP( LK => Load1, DIN=>DTO1, DOUT => DOUT); U3 : COUNTER32B PORT MAP( FIN => FSIN, CLR => CLR_CNT1, ENABL => TSTEN1, DOUT=>DTO1 );
END struc;
五实验结果:
1.内容一:
仿真时, 1HZ 测频控制信号CLK1HZ用的是T=1ms,即频率为1000Hz 待测频率输入FIN用的是T=10us, 即频率为100000Hz
二者差100倍。

输出的8 个数码管的测频显示值是16 进制的。

故显示应为00000064,波形图如下:
2. 内容二:
频率计为8 位10 进制频率计,设计电路的计数器是8 个4 位的10 进制计数器,同理,
波形图如下:
3.内容三:
用LPM 模块取代例7-8 和例7-9,来完成设计原理图如下:。

相关文档
最新文档