cel196 发表于 2010-5-27 09:13:16

大家有谁能帮我设计个VHDL语言倍频。

或者给我个原理图。因为我倍频大,所以我也不知道该咋弄了。毕设要用。用DCM的编程也行。

IPO 发表于 2010-5-27 09:27:27

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;


---- Uncomment the following library declaration if instantiating

---- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;


entity minutes is

Port ( rst3,selector2,ky_2j : in STD_LOGIC;

                  B10 : in std_logic;

                              C : out std_logic;

                        dat30 : out std_logic_vector(7 downto 0));

end minutes;

architecture Behavioral of minutes is

signal dat31,dat32 : std_logic_vector(7 downto 0):=(others =>'0');

begin


process(rst3,B10,ky_2j)

begin

case selector2 is

when '1' =>dat32<=dat31; if ky_2j'event and ky_2j='1' then

if dat31(7 downto 4)="0101" and dat31(3 downto 0)="1001"

then dat31(7 downto 0)<="00000000";

elsif dat31(3 downto 0)<"1001" then dat31(3 downto 0)<=dat31(3 downto 0)+1;

else dat31(3 downto 0)<="0000";

if dat31(7 downto 4)<"0101" then dat31(7 downto 4)<=dat31(7 downto 4)+1;

else dat31(7 downto 4)<="0000";

end if ;

end if ;

end if ;

dat30<=dat31;


when '0' =>dat31<=dat32; if(rst3 = '0') then dat32<=(others =>'0');

elsif B10'event and B10='1' then

if dat32(7 downto 4)="0101" and dat32(3 downto 0)="1001"

then C<='1'; dat32(7 downto 0)<="00000000";

else C<='0';

if dat32(3 downto 0)<"1001" then dat32(3 downto 0)<=dat32(3 downto 0)+1;

else dat32(3 downto 0)<="0000";

if dat32(7 downto 4)<"0101" then dat32(7 downto 4)<=dat32(7 downto 4)+1;

else dat32(7 downto 4)<="0000";

end if;

end if;

end if;

end if;

dat30<=dat32;

when others =>null;


end case;

end process;


end Behavioral;

cel196 发表于 2010-5-27 12:33:56

回复 2# IPO


    先谢谢你,我在网站上找到过这个程序。但是仿真后显示不是倍频。能找到其他的吗?

Sunlife 发表于 2015-5-19 16:12:45

网站上找到过这个程序。但是仿真后显示不是倍频

zxopenljx 发表于 2020-11-14 23:03:26

大家有谁能帮我设计个VHDL语言倍频。
页: [1]
查看完整版本: 大家有谁能帮我设计个VHDL语言倍频。