基于VHDL语言的频率计设计_第1页
基于VHDL语言的频率计设计_第2页
基于VHDL语言的频率计设计_第3页
基于VHDL语言的频率计设计_第4页
基于VHDL语言的频率计设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录一、 课程设计任务:2二、 课程设计原理:2三、 课程设计所需仪器:2四、 课程设计使用的硬件资源及原理框图:2五、 设计过程及操作:31、 FTCTRL测频控制模块:32、 计数器模块:33、 REG32B锁存器模块34、 DECL7S译码器模块45、 分频器模块46、 MUX多路选择器模块。47、 器件连接:48、 操作过程:4六、 设计各个模块代码:51:FTCTRL模块52:CNT_10计数器模块53:REG32B锁存器模块64:DECL7S译码器模块65:any_10 10分频器模块76:any_5 5分频器模块77:any_16 16分频模块88:MUX多路选择器模块99:顶层

2、例化代码9七、总电路:12八、管脚配置:13九、设计结果:14151、 课程设计任务:设计8位十进制频率计2、 课程设计原理: 根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清0信号。这清0个信号可以由一个测频控制信号发生器TESTCTL产生,它的设计要求是,TESTCTL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的EN使能端进行同步控制。当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止

3、计数期间,首先需要一个锁存信号LOAD 的上跳沿将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,必须有一清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作作准备。 3、 课程设计所需仪器:Altrea DE2-115实验箱;quartusII 12.1;modelsim仿真软件。4、 课程设计使用的硬件资源及原理框图:1、50MHz时钟源两个2、拨动开关3、7段数码管/液晶显示屏5、 设计过程及操作:1、FTCTRL测频控制模块: 频率计的核心控制部分为F

4、TCTRL,该模块的技术是能信号CNT_EN能产生一个1s脉宽的周期信号(由于实验箱提供的是50MHz的高频信号,所以需要通过分频器获得1s脉宽信号),并对频率计中的计数器的EN使能端进行同步测控。当CNT_EN高电平时允许计数;低电平时停止计数,并保持其所设计的脉冲数。在停止计数期间,首先需要一个锁存信号LOAD的上升沿将计数器在前一秒钟的计数器的计数值锁存进锁存器REG32B中,并由外部的十六进制7段译码器译出,显示计数值。锁存信号后,必须有一清零信号RST_CNT对计数器清零,为下一秒的计数操作做准备。2、 计数器模块: 由于设计要求为8位十进制输出,所以采用的是十进制加法带进位的计数器

5、级联的形式完成计数功能,每个单独的计数器有4位的十进制DOUT(3 DOWNTO 0)输出和一个进位COUT输出,输入的RST复位端、EN使能端和计数信号CLK端。级联时,将被测信号接入第一个各位的CNT_10计数器的CLK端,并且将每上一个的进位端与下一个的计数器CNT_10的计数CLK相连。3、REG32B锁存器模块 锁存器为32位,包括一个锁存信号LK,32位的输入和输出。4、 DECL7S译码器模块因为每个计数器输出的是二进制数,所以转化到七段数码管上需要通过4-7译码器译码。实验箱的数码管为共阳极。需要8个数码管同时显示,所以需要8个译码器。5、 分频器模块由于实验箱只提供50MHz

6、的信号,所以需要分频得到1Hz的信号以及不同的频率进行测试,所以需要分频器。本设计分频器采用的是5分频器any_5、10分频器any_10和16分频器any_16。6、 MUX多路选择器模块。由于实验箱提供的信号源有限,所以要进行测试,必须使用多路选择器来进行对不同的分频信号进行测试来验证频率计的功能是否完成。本次设计采用的是4选1多路选择器。7、 器件连接:以上各部份器件已经完善。需要将这些器件连接起来完成最终的设计,所以本次设计采取了元件例化,用例化语句将各个器件连接起来。顶层文件见代码段。8、 操作过程: A建立项目 B选择器件: 器件系列(Device Family) Cyclone

7、IV E 器件型号(Available Devices) EP4CE115F29C7 C建立设计文档,new vhdl file,并编辑保存。 D点击按键栏(或Processing菜单中)的Start compilation 进行编译 E编译正确完成后,点击按键栏(或Assignments菜单中)的Pin Planner进行引脚锁定 F双击Location栏,在下拉菜单中选择需要锁定的引脚(EP4C115F芯片引脚分布详见附录) G再次编译项目 H连接实验箱 I 程序下载 点击按键栏(或Tools菜单)的Programmer,此时没有添加硬件,点击Hardware Setup选择硬件。在Cur

8、rently selected hardware下拉菜单中选择USB-Blaster后,点击Close,回到Programmer页面。在Hardware Setup栏中可看到USB-Blaster。注意Mode为缺省的JTAG接口硬件选择完毕。点击Start开始下载。Progress进度完成后下载完毕。6、 设计各个模块代码:1:FTCTRL模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FTCTRL ISPORT ( CLKK :IN STD_LOGIC; CNT_EN,RST

9、_CNT :OUT STD_LOGIC; LOAD: OUT STD_LOGIC );END FTCTRL;ARCHITECTURE behav of FTCTRL ISSIGNAL DIV2CLK :STD_LOGIC :='0'BEGINPROCESS (CLKK) BEGINIF CLKK 'EVENT AND CLKK='1' THEN DIV2CLK<=NOT DIV2CLK;END IF;END PROCESS;PROCESS (CLKK,DIV2CLK) BEGINIF CLKK='0' AND DIV2CLK=

10、9;0' THEN RST_CNT<='1'ELSE RST_CNT<='0'END IF;END PROCESS;LOAD <=NOT DIV2CLK;CNT_EN <=DIV2CLK;END behav;2:CNT_10计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 IS PORT( RST ,EN,CLK: IN STD_LOGIC; COUT :OUT STD_LOGIC; DOUT :OU

11、T STD_LOGIC_VECTOR(3 DOWNTO 0);END CNT10;ARCHITECTURE BHV OF CNT10 ISBEGINPROCESS(CLK,RST,EN)VARIABLE Q1 :STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN IF RST='1' THEN Q1:=( OTHERS =>'0');ELSIF CLK'EVENT AND CLK='1' THEN IF EN='1' THEN IF Q1<9THEN Q1:=Q1+1; ELSE Q1:=(O

12、THERS=>'0'); END IF; END IF;END IF;IF Q1="1001" THEN COUT<='0' ELSE COUT<='1'END IF;DOUT <= Q1;END PROCESS;END BHV; 3:REG32B锁存器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B IS PORT(LK:IN STD_LOGIC; DIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0); Q:OUT S

13、TD_LOGIC_VECTOR(31 DOWNTO 0);END;ARCHITECTURE BHV OF REG32B IS BEGIN PROCESS(LK,DIN) BEGIN IF LK 'EVENT AND LK='1' THEN Q <=DIN; END IF;END PROCESS;END BHV;4:DECL7S译码器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DECL7S ISPORT ( A :IN STD_LOGIC_VECTOR (3 DOWNTO 0); LED7S: OUT STD_

14、LOGIC_VECTOR (6 DOWNTO 0);END;ARCHITECTURE ONE OF DECL7S ISBEGIN PROCESS(A) BEGIN CASE A IS WHEN "0000" =>LED7S <="1000000" WHEN "0001" =>LED7S <="1111001" WHEN "0010" =>LED7S <="0100100" WHEN "0011" =>LED7S &

15、lt;="0110000" WHEN "0100" =>LED7S <="0011001" WHEN "0101" =>LED7S <="0010010" WHEN "0110" =>LED7S <="0000010" WHEN "0111" =>LED7S <="1111000" WHEN "1000" =>LED7S <="

16、0000000" WHEN "1001" =>LED7S <="0010000" WHEN OTHERS => NULL; END CASE; END PROCESS; END; 5:any_10 10分频器模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity any_10 isport (clk10:in std_logic; k:out std_logic);end;architecture bhv of any_

17、10 is signal s : std_logic; signal c : std_logic_vector(3 downto 0);beginprocess(clk10,c)beginif rising_edge(clk10) thenif (c="1001") then c<="0000" else c<=c+1;end if;if (c="0101") then s<=not s;elsif(c="0000") then s<=not s;end if;end if;end proc

18、ess;k<=s;end bhv;6:any_5 5分频器模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ANY_5 isport(clk5:in std_logic; kf:out std_logic);end;architecture bhv of ANY_5 is signal c1,c2: std_logic_vector(2 downto 0); signal m1,m2: std_logic;beginprocess(clk5,c1) begin if risi

19、ng_edge(clk5) then if(c1="100") then c1<="000" else c1<=c1+1;end if; if(c1="001") then m1<=not m1;elsif(c1="011") then m1<=not m1;end if; end if;end process;process(clk5,c2) begin if falling_edge(clk5) then if(c2="100") then c2<="

20、000"else c2<=c2+1;end if; if(c2="001") then m2<=not m2;elsif(c2="011") then m2<=not m2;end if; end if;end process;kf<=m1 or m2;end bhv;7:any_16 16分频模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity any_

21、16 is port( clk_in : in std_logic; clk_out : out std_logic);end entity any_16; architecture div1 of any_16 is signal clk_outQ : std_logic ; signal coutQ : std_logic_vector (15 downto 0);beginprocess(clk_in) begin if clk_in'event and clk_in = '1' then if coutQ <15 then coutQ <= cout

22、Q + 1; else coutQ <= (others => '0'); end if; end if; end process;process(coutQ) begin if coutQ < 16/2 then clk_outQ <= '0' else clk_outQ <= '1' end if; end process;clk_out <= clk_outQ;end architecture div1; 8:MUX多路选择器模块library ieee;use ieee.std_logic_1164.a

23、ll;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity MUX is port(AIN,BIN,CIN,DIN,S0,S1 : in std_logic; Y : out std_logic);end entity MUX; architecture A of MUX is signal S : std_logic_vector (1 downto 0);beginS <= S1&S0;process(S1,S0) begin CASE(S) IS WHEN "00" =&g

24、t; Y<=AIN; WHEN "01" => Y<=BIN; WHEN "10" => Y<=CIN; WHEN "11" => Y<=DIN; END CASE; end process;end architecture A; 9:顶层例化代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY pinlvji ISPORT( CLK,FFIN,S0,S1:IN STD_LOGIC; QOUT:OUT STD_LOGIC_VECTOR(55 DOW

25、NTO 0);END ENTITY pinlvji;ARCHITECTURE BHV OF pinlvji ISCOMPONENT FTCTRL PORT ( CLKK :IN STD_LOGIC; CNT_EN,RST_CNT :OUT STD_LOGIC; LOAD: OUT STD_LOGIC );END COMPONENT ;COMPONENT REG32B PORT( LK :IN STD_LOGIC; DIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(31 DOWNTO 0);END COMPONENT ;CO

26、MPONENT CNT10 PORT( RST ,EN,CLK: IN STD_LOGIC; COUT :OUT STD_LOGIC; DOUT :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT ;COMPONENT DECL7S PORT( A :IN STD_LOGIC_VECTOR (3 DOWNTO 0); LED7S: OUT STD_LOGIC_VECTOR (6 DOWNTO 0);END COMPONENT;COMPONENT any_16 port(clk_in : in std_logic; clk_out : out std_

27、logic);END COMPONENT;COMPONENT any_5 port(clk5:in std_logic; kf:out std_logic);END COMPONENT;COMPONENT any_10 port (clk10:in std_logic; k:out std_logic);END COMPONENT;COMPONENT MUX port(AIN,BIN,CIN,DIN,S0,S1 : in std_logic; Y : out std_logic);END COMPONENT;SIGNAL NR,NE,NL,M1,M2,M3,M4,M5,M6,M7,M8:STD

28、_LOGIC;SIGNAL N1,N2,N3,N4,N5,N6,N7,N8:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL L1,L2,L3,L4,L5,L6,L7,L8:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL C1,C2,C3,C4,C5,C6,C7,C8:STD_LOGIC;SIGNAL Y1,Y2,Y3,YY:STD_LOGIC;BEGINU1:FTCTRL PORT MAP(CLKK=>C8,CNT_EN=>NE,RST_CNT=>NR,LOAD=>NL);U2:REG32B PORT MAP(LK=>

29、;NL, DIN(3 DOWNTO 0)=>N1,DIN(7 DOWNTO 4)=>N2, DIN(11 DOWNTO 8)=>N3,DIN(15 DOWNTO 12)=>N4, DIN(19 DOWNTO 16)=>N5,DIN(23 DOWNTO 20)=>N6, DIN(27 DOWNTO 24)=>N7,DIN(31 DOWNTO 28)=>N8, Q(3 DOWNTO 0)=>L1,Q(7 DOWNTO 4)=>L2, Q(11 DOWNTO 8)=>L3,Q(15 DOWNTO 12)=>L4, Q(19 DO

30、WNTO 16)=>L5,Q(23 DOWNTO 20)=>L6, Q(27 DOWNTO 24)=>L7,Q(31 DOWNTO 28)=>L8);U3:CNT10 PORT MAP(RST=>NR,EN=>NE,CLK=>YY,DOUT=>N1,COUT=>M1);-U4:CNT10 PORT MAP(RST=>NR,EN=>NE,CLK=>M1,DOUT=>N2,COUT=>M2);U5:CNT10 PORT MAP(RST=>NR,EN=>NE,CLK=>M2,DOUT=>N3,

31、COUT=>M3);U6:CNT10 PORT MAP(RST=>NR,EN=>NE,CLK=>M3,DOUT=>N4,COUT=>M4);U7:CNT10 PORT MAP(RST=>NR,EN=>NE,CLK=>M4,DOUT=>N5,COUT=>M5);U8:CNT10 PORT MAP(RST=>NR,EN=>NE,CLK=>M5,DOUT=>N6,COUT=>M6);U9:CNT10 PORT MAP(RST=>NR,EN=>NE,CLK=>M6,DOUT=>N7,

32、COUT=>M7);U10:CNT10 PORT MAP(RST=>NR,EN=>NE,CLK=>M7,DOUT=>N8);U11:DECL7S PORT MAP(A => L1,LED7S=>QOUT(6 DOWNTO 0);U12:DECL7S PORT MAP(A => L2,LED7S=>QOUT(13 DOWNTO 7);U13:DECL7S PORT MAP(A => L3,LED7S=>QOUT(20 DOWNTO 14);U14:DECL7S PORT MAP(A => L4,LED7S=>QOUT(

33、27 DOWNTO 21);U15:DECL7S PORT MAP(A => L5,LED7S=>QOUT(34 DOWNTO 28);U16:DECL7S PORT MAP(A => L6,LED7S=>QOUT(41 DOWNTO 35);U17:DECL7S PORT MAP(A => L7,LED7S=>QOUT(48 DOWNTO 42);U18:DECL7S PORT MAP(A => L8,LED7S=>QOUT(55 DOWNTO 49);U19:any_10 PORT MAP(CLK,C1);U20:any_10 PORT MA

34、P(C1,C2);U21:any_10 PORT MAP(C2,C3);U22:any_10 PORT MAP(C3,C4);U23:any_10 PORT MAP(C4,C5);U24:any_10 PORT MAP(C5,C6);U25:any_10 PORT MAP(C6,C7);U26:any_5 PORT MAP(C7,C8);U27:MUX PORT MAP(Y1,Y2,Y3,FFIN,S0,S1,YY);U28:any_5 PORT MAP(FFIN,Y1);U29:any_16 PORT MAP(FFIN,Y2);U30:any_10 PORT MAP(FFIN,Y3);END

35、 ARCHITECTURE;七、总电路:12348、 管脚配置:CLOCK2_50 Input PIN_AG14 CLKCLOCK3_50 Input PIN_AG15 FFINHEX06 Output PIN_H22 QOUT6HEX05 Output PIN_J22 QOUT5HEX04 Output PIN_L25 QOUT4HEX03 Output PIN_L26 QOUT3HEX02 Output PIN_E17 QOUT2HEX01 Output PIN_F22 QOUT1HEX00 Output PIN_G18 QOUT0HEX16 Output PIN_U24 QOUT13HEX15 Output PIN_U23 QOUT12HEX14 Output PIN_W25 QOUT11HEX13 Output PIN_W22 QOUT10HEX12 Output PIN_W21 QOUT9HEX11 Output PIN_Y22 QOUT8HEX10 Output PIN_M24 QOUT7HEX26 Output PIN_W28 QOUT20HEX25 Output PIN_W27 QOUT19HEX

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论