1.VHDL语言设计分频器
原发布者:achinaben
专题二.经典模块设计——分频器设计专题内容:1.分频器的原理2.二进制分频器的设计3.偶数分频器的设计4.奇数分频器的设计5.占空比可调的分频器的设计6.小数分频器的设计1.分频器的原理分频器就是对较高频率的信号进行分频,得到较低频率的信号。常见的分频器有二进制分频器、偶数分频器、奇数分频器、占空比可调的分频器和小数分频器。分频系数(倍率)rate=fin/fout2.二进制分频器的设计二进制分频就是对输入时钟进行2的整数次幂分频。设计原理:(rate=2N,N是整数)定义一个N位的计数器,对输入的时钟脉冲进行计数,计数结果的第N-1位就是对输入时钟的2的N次幂分频。将相应的位数取出即可得到分频时钟。二进制分频器的VHDL源程序Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;Useieee.std_logic_arith.all;Entityfdivisgeneric(N:integer:=3);--rate=2N,N为正整数port(clkin:INstd_logic;clkout:OUTstd_logic);Endfdiv;:std_logic_vector(N-1downto0);Beginprocess(clkin)beginif(clkin'eventandclkin='1')thencnt<=cnt+1;endif;endprocess;clkout<=cnt(N-1);Enda;仿真结果从波形图可以看到,clkout是c
2.VHDL语言设计分频器
输入信号10HZ的话 你要分频咯 这个频率无所谓的 主要看你分频的精度 毕业设计这个层次的东西要求不会很高的 那就选25MHz的吧 最好用有源晶振 无源也问题不大 呵呵 我给你个万能分频代码吧 你的分数也太低了吧 0分 VHDL的任意整数且占空比为50%分频代码 说明如下: 1.其中top file 为 division,其中的clk_com是比较的频率,用它来和分频后波形进行比较,便于观察, 2.any_enve为任意偶数分频文件 3.any_odd为任意奇数分频文件 4.是一个用于2进制与8进制的译码器,我用它来显示在数码管上当前到底是多少分频 5.以下代码在开发板上实验过,请大家放心使用,欢迎转载,但请注明出处,另外说明由于用的是quartus7.1编辑的,中间无法加中文注释,请大家慢慢读了;以下是代码: ------the top file of the design division library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity division is port (input : in std_logic_vector(7 downto 0); clk : in std_logic; clk_out : out std_logic; clk_com : out std_logic; led1: out std_logic_vector(6 downto 0); led2: out std_logic_vector(6 downto 0); led3: out std_logic_vector(6 downto 0)); end entity division; -------------------------------------------------- architecture freq of division is component decoder is----decoder port(bin : in std_logic_vector(2 downto 0); de : out std_logic_vector(6 downto 0)); end component; component any_even is----any_even division generic (data_width : integer := 8 ); port(input1 : in std_logic_vector(data_width-1 downto 0); clk_in : in std_logic; clk_out : out std_logic); end component any_even; component any_odd is-----any_even division generic (data_width : integer := 8); port(input2 : in std_logic_vector(data_width - 1 downto 0); clk_in : in std_logic; clk_out : out std_logic); end component any_odd; signal temp1,temp2 : std_logic; begin u1: decoder port map(bin=>input(2)&input(1)&input(0),de=>led1); u2: decoder port map(bin=>input(5)&input(4)&input(3),de=>led2); u3: decoder port map(bin=>'0'&input(7)&input(6),de=>led3); u4: any_even port map(input,clk,temp1); U5: any_odd port map(input。
3.vhdl分频器设计
=cout+1;
IF cout<.std_logic_unsigned;
ARCHITECTURE bhv OF counter IS
BEGIN
KHZ;=500 THEN q1khz< THEN
cout:PROCESS(clock)
VARIABLE cout;1' THEN
cout;
USE ieee;;
ENTITY counter IS
PORT
( clock.std_logic_1164;
ELSE cout;
ELSIF cout<.all;1000 THEN q1hz<:PROCESS(q1khz)
VARIABLE cout:=0: BUFFER STD_LOGIC:=cout+1:INTEGER;=500 THEN q1hz<1';='1'
use ieee;
END IF.all:=0: IN STD_LOGIC ;0'='1'
END IF;
q1khz:=0;
END PROCESS;
q1hz;
BEGIN
IF clock'0'EVENT AND clock='
IF cout<=': OUT STD_LOGIC);
END counter:INTEGER;
END IF;
ELSE cout;
END IF;;
HZ;;
ELSIF cout<1000 THEN q1khz<='
END PROCESS:=0;
BEGIN
IF q1khz'EVENT AND q1khz='
END bhvLIBRARY ieee
4.VHDL语言设计分频器
输入信号10HZ的话 你要分频咯 这个频率无所谓的 主要看你分频的精度 毕业设计这个层次的东西要求不会很高的 那就选25MHz的吧 最好用有源晶振 无源也问题不大 呵呵 我给你个万能分频代码吧 你的分数也太低了吧 0分 VHDL的任意整数且占空比为50%分频代码 说明如下: 1.其中top file 为 division,其中的clk_com是比较的频率,用它来和分频后波形进行比较,便于观察, 2.any_enve为任意偶数分频文件 3.any_odd为任意奇数分频文件 4.是一个用于2进制与8进制的译码器,我用它来显示在数码管上当前到底是多少分频 5.以下代码在开发板上实验过,请大家放心使用,欢迎转载,但请注明出处,另外说明由于用的是quartus7.1编辑的,中间无法加中文注释,请大家慢慢读了;以下是代码: ------the top file of the design division library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity division is port (input : in std_logic_vector(7 downto 0); clk : in std_logic; clk_out : out std_logic; clk_com : out std_logic; led1: out std_logic_vector(6 downto 0); led2: out std_logic_vector(6 downto 0); led3: out std_logic_vector(6 downto 0)); end entity division; -------------------------------------------------- architecture freq of division is component decoder is----decoder port(bin : in std_logic_vector(2 downto 0); de : out std_logic_vector(6 downto 0)); end component; component any_even is----any_even division generic (data_width : integer := 8 ); port(input1 : in std_logic_vector(data_width-1 downto 0); clk_in : in std_logic; clk_out : out std_logic); end component any_even; component any_odd is-----any_even division generic (data_width : integer := 8); port(input2 : in std_logic_vector(data_width - 1 downto 0); clk_in : in std_logic; clk_out : out std_logic); end component any_odd; signal temp1,temp2 : std_logic; begin u1: decoder port map(bin=>input(2)&input(1)&input(0),de=>led1); u2: decoder port map(bin=>input(5)&input(4)&input(3),de=>led2); u3: decoder port map(bin=>'0'&input(7)&input(6),de=>led3); u4: any_even port map(input,clk,temp1); U5: any_odd port map(input。
5.vhdl分频器设计
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY clkdiv ISPORT( rstn : IN STD_LOGIC; clk : IN STD_LOGIC; sw8 : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--开关输入 clk_div : OUT STD_LOGIC);END clkdiv;ARCHITECTURE rtl OF clkdiv IS SIGNAL r_count : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL r_clk_div : STD_LOGIC;BEGINPROCESS(rstn, clk)BEGIN IF (rstn = '0') then r_count <= (others => '0'); r_clk_div <= '0'; ELSIF (clk='1' AND clk'event) THEN IF(r_count = sw8) THEN r_count <= (others => '0'); r_clk_div <= not r_clk_div; ELSE r_count <= r_count +1; END IF ; END IF ;END PROCESS;clk_div <= r_clk_div;END rtl;。
6.vhdl程序设计中的分频器怎么实现
要几分频了?做个计数器。一半的时候再付个值就行了。
signal a:std_logic_vector(3 downto 0);
signal b:std_logic;
if(clk'event and clk='1')then
a<=a+'1'
if(a="1000") then
b<='1';
else
b<='0';
end if;
end if;
转载请注明出处众文网 » 基于vhdl的小数分频器的设计毕业论文