求教VHDL怎么实现倍频器

Coumen Coumen 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我这里有一段代码,是输入50M时钟,输出100M时钟。
实在看不懂VHDL,想请教一下这段代码的大概意思。
主要是中间的CLK100 Generation的部分。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use ieee.math_real.All;

entity top is
Port (
CLK50 : in std_logic;
CLK100_o :out std_logic

);
end top;

architecture Behavioral of top is

-- CLOCK DCM Signals Definition
signal CLK100 : std_logic;
signal CLKTMP : std_logic;
signal LOCKED : std_logic := '0';
signal LOCK_CNT : std_logic_vector(18 downto 0) := "000" & "00000000" & "00000001";
signal LOCK_STATUS : std_logic_vector(7 downto 0) := "00000000";
signal RESET : std_logic := '0';
signal RESET_DCM : std_logic;
signal COUNT : std_logic_vector(25 downto 0) := "00000000000000000000000000";

signal LED_SIGNAL1 : std_logic := '0';
signal LED_SIGNAL2 : std_logic := '1';
signal CARRIER : std_logic_vector(25 downto 0) := "00000000000000000000000000";
signal MODE : std_logic := '1';
signal OPERATER : std_logic_vector(25 downto 0) := "10011000100101101000000000"; --???10 0110 0010 0101 1010 0000 0000?


component BUFG
port (
I: in std_logic;
O: out std_logic
);
end component;

component DCM is
port (
CLKFB : in std_logic;
CLKIN : in std_logic;
DSSEN : in std_logic;
PSCLK : in std_logic;
PSEN : in std_logic;
PSINCDEC : in std_logic;
RST : in std_logic;
CLK0 : out std_logic;
CLK90 : out std_logic;
CLK180 : out std_logic;

CLK270 : out std_logic;
CLK2X : out std_logic;
CLK2X180 : out std_logic;
CLKDV : out std_logic;
CLKFX : out std_logic;
CLKFX180 : out std_logic;
LOCKED : out std_logic;
PSDONE : out std_logic;
STATUS : out std_logic_vector(7 downto 0)
);
end component;

attribute DFS_FREQUENCY_MODE : string;
attribute CLKIN_PERIOD : string;
attribute CLK_FEEDBACK : string;
attribute CLKFX_MULTIPLY : string;
attribute DFS_FREQUENCY_MODE of U2 : label is "LOW";
attribute CLKIN_PERIOD of U2 : label is "20";
attribute CLK_FEEDBACK of U2 : label is "NONE";
attribute CLKFX_MULTIPLY of U2 : label is "2"; -- for 100M clk

begin

-- ========================
-- CLK100 Generation
-- ========================
U2:DCM port map( '0', CLK50, '0', '0', '0', '0', RESET_DCM, open, open, open,
open, open, open, open, CLKTMP, open, LOCKED, open, LOCK_STATUS );
U3:BUFG port map( CLKTMP, CLK100 );

process(CLK50)
begin
if CLK50'event and CLK50 = '1' then
if LOCKED = '1' and LOCK_STATUS(2) = '0' then
LOCK_CNT <= "000" & "00000000" & "00000000";
RESET_DCM <= '0';
else
LOCK_CNT <= LOCK_CNT + 1;
if LOCK_CNT= "000" & "00000000" & "00000001" then
RESET_DCM <= '1';
else
RESET_DCM <= '0';
end if;
end if;
end if;
end process;

CLK100_o<=CLK100;



end Behavioral;
...全文

相关推荐

bei.rar_VHDL倍频器_VHDL语言的倍频程序_信号倍频_倍频_倍频器

应用VHDL语言写的倍频器,通过对高频信号的分频得到较低频率信号的倍频

局外狗

VHDL倍频器设计与实现

VHDL(Very High-Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,广泛应用于数字电路设计与仿真。它提供了一种详尽描述逻辑电路的方式,使得设计师可以从业务逻辑层面去设计电路,而无需担心底层的电气特性。从历史背景看,VHDL最初是由美国国防部为应对超大规模集成电路(VLSI)设计的复杂性于1980年代初期开发的。其诞生的初衷是为了规范数字电路设计,方便文档化和重用设计资源。

毛心宇

实现光电编码器4倍频的VHDL程序项目

光电编码器是一种通过光电转换原理实现角度、速度等物理量数字化测量的设备。其基本工作原理是利用光栅盘将光信号转换成数字信号。当编码器旋转时,光栅盘上的缝隙和不透光区域交替出现,使得透射或反射的光强度发生变化。通过光电转换器件(如光电二极管)接收这些变化的光信号,转换为电信号,最终通过电路处理输出代表角度或位移的电脉冲信号。在进行VHDL程序设计之前,首先必须对目标系统的需求进行全面分析。需求分析涉及到的功能可能包括对信号处理的要求、性能指标、接口规范和可能的约束条件等。

背离赤道逆光而行

3_Freq.rar_Xilinx_freq_vhdl_vhdl 倍频_倍频

3倍频实用稳定算法的VHDL实现(XILINX CPLD)

邓凌佳

CPLD.rar_VHDL倍频器_cpld控制_io_编码器倍频_编码器四倍频

CPLD编程,处理两路编码器的信号,可以将信号四倍频。同时能够控制IO的输入输出信号。

林当时
评论 4
收藏 已收藏
分享
返回顶部
Coumen
其他硬件开发 2,432 成员 4,281 内容