FPGA.时钟分频器的VHDL代码

VHDL.项目 呈现完整的VHDL代码 时钟分频器 FPGA.。还提供了时钟分频器的TestBench VHDL码。 Clock Divider的VHDL代码可合成并验证 FPGA..

FPGA.时钟分频器的VHDL代码

VHDL. 时钟分频器的代码 FPGA.:

-- fpga4student.com FPGA. projects, VHDL.项目, Verilog projects
-- VHDL project: VHDL code for digital clock on FPGA
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
entity clock_div is
port (
   clk_in: in std_logic; -- clock input on FPGA
   clk_out: out std_logic -- clock output 
  );
结尾 clock_div;

architecture Behavioral of clock_div is
signal divisor: std_logic_vector(27 downto 0):=(others =>'0');
begin
 process(clk_in)
 begin
 如果 (rising_edge(clk_in)) then
 divisor <= divisor + x"0000001";
 -- If(divisor>=x"2FAF07F") then -- for running on FPGA -- comment when running simulation
 -- Modify the divisor (x"2FAF07F"=49999999) above to get the clock frequency you want: 
 -- Frequency of clk_out = Frequency of (clk_in) divided by (divisor + 1)
 -- If the frequency of clk_in is 50MHz and the divisor is 49999999=x"2FAF07F", 
 -- the frequency of clk_out is 1Hz
 如果 (divisor>=x"0000001") then -- for running simulation -- comment when running on FPGA 
 -- divisor = 1 => divide clock by half for simulation purposes
 divisor <= x"0000000";
 结尾 如果 ;
 如果 (divisor<x"0000001") then -- replace x"0000001" by x"17D7840" when running on FPGA  
 clk_out <= '1';
 else 
 clk_out <= '0';
结尾 如果 ;
 结尾 如果 ;
 结尾 process;
结尾 Behavioral;
 

FPGA.上时钟分频器的VHDL Testbench码:

-- fpga4student.com FPGA projects, VHDL projects, Verilog projects
-- VHDL project: VHDL code for clock divider on FPGA
-- VHDL Testbench code for clock divider
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
 
ENTITY tb_clock_div IS
END tb_clock_div;
 
ARCHITECTURE behavior OF tb_clock_div IS 
    -- Clock divider 
    COMPONENT clock_div
    PORT(
         clk_in : IN  std_logic;
         clk_out : OUT  std_logic
        );
    END COMPONENT;
   --Inputs
   signal clk_50 : std_logic := '0';

  --Outputs
   signal clk_1s : std_logic;

   -- Clock period definitions
   constant clk_50_period : time := 20 ns;
 
BEGIN
 
 -- Instantiate the VHDL clock divider 
   uut: clock_div PORT MAP (
          clk_in => clk_50,
          clk_out => clk_1s
        );

   -- creating clock
   clk_50_process :process
   begin
  clk_50 <= '0';
  wait for clk_50_period/2;
  clk_50 <= '1';
  wait for clk_50_period/2;
   结尾 process;

   -- Stimulus process
   stim_proc: process
   begin  
      wait for 100 ns; 
      wait for clk_50_period*10;
      wait;
   结尾 process;

END;

FPGA.上时钟分频器的模拟波形:

FPGA.时钟分频器的VHDL代码

在用于仿真目的的VHDL代码中,除数设置为1,因此通过将CLK_IN的频率除以时钟分频器的主VHDL代码中所述,通过将CLK_IN的频率除以2来获得CLK_OUT的时钟频率。仿真波形还显示CLK_IN的频率是CLK_IN时钟频率的一半。当您运行VHDL代码时 FPGA.,您可以修改代码中的时钟除数以从FPGA上的时钟输入获取所需的频率。 

注意,此代码即将在设计中创建另一个时钟,因此在时钟树综合期间需要执行额外的内部生成时钟所需的FPGA工具,这可能导致FPGA定时问题,因为它不会产生 专用FPGA时钟发电机 (PLL / DCM /等)。另外,你也必须照顾 多时钟域问题 在设计诸如不同时钟域之间的接口信号(所需的同步器等)。建议在FPGA上生成较慢的时钟使能信号,而是驱动设计的另一部分。你可以拜访 这里 有关如何在VHDL中进行的更多详细信息。
FPGA.上时钟分频器的Verilog代码: 这里
推荐的 VHDL.项目:
1. 什么是FPGA? VHDL如何在FPGA上使用
2. FIFO内存的VHDL代码
3. FIR筛选器的VHDL代码
4. 8位微控制器的VHDL代码
5. 矩阵乘法的VHDL代码
6. 用于开关尾圈计数器的VHDL代码
7. FPGA.上数字闹钟的VHDL代码
8. 8位比较器的VHDL代码
9. 如何使用VHDL将文本文件加载到FPGA中
10。 D触发器的VHDL代码
11. 完整加法器的VHDL代码
12. VHDL.中的PWM发生器,具有可变占空比
13。 ALU的VHDL代码
14。 VHDL.代码用于测试台的计数器
15。 16位ALU的VHDL代码
16。 vhdl的变速器设计
17。 VHDL.中的非线性查找表实现
18。 VHDL.中的加密协处理器设计

19。 Verilog vs vhdl.:通过示例解释
20。 FPGA.时钟分频器的VHDL代码
21。 如何生成时钟使能信号而不是创建另一个时钟域
22。 VHDL.代码用于FPGA上的Debouncing按钮
23。 交通灯控制器的VHDL码
24。 VHDL.代码为简单的2位比较器
25。 用于单端口RAM的VHDL代码
26。 使用FSM的停车系统VHDL码
27。 VHDL.编码VS软件编程
FPGA. Verilog VHDL课程

没意见:

发表评论

趋势FPGA项目