Vhdl 为什么clk_分配器不工作?

Vhdl 为什么clk_分配器不工作?,vhdl,Vhdl,代码是: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; use IEEE.NUMERIC_STD.ALL; entity clk_div is Port ( clk_in : in STD_LOGIC; clk_out_rx : out std_logic; out_

代码是:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.NUMERIC_STD.ALL;

entity clk_div is
Port (
         clk_in                      : in  STD_LOGIC;
         clk_out_rx              : out std_logic;
         out_bit_parity          : out std_logic
     ); 
end clk_div;
architecture Behavioral of clk_div is
signal clk_slow_tx : std_logic := '0';
signal q : unsigned(9 downto 0) := (others => '0');
begin

process ( clk_in ) is 
begin 
if rising_edge(clk_in) then
q <= q + 1;
clk_slow_tx <= q(8);   --- 58.gdfg/2^8 =~ 230Khz baud rate = 115200 
clk_out_rx <= clk_slow_tx;
end if;
end process;
end Behavioral;
IEEE库;
使用IEEE.STD_LOGIC_1164.ALL;
使用IEEE.STD_LOGIC_UNSIGNED.ALL;
使用IEEE.NUMERIC_STD.ALL;
实体clk_div为
港口(
时钟输入:在标准逻辑中;
时钟输出接收:输出标准逻辑;
输出位奇偶校验:输出标准逻辑
); 
完九龙分区;;
clk_分区的架构是
信号clk_slow_tx:std_逻辑:='0';
信号q:无符号(9到0):=(其他=>'0');
开始
过程(clk_in)为
开始
如果上升沿(clk_in),则

q模块中未分配输出
out\u bit\u奇偶校验
,但其他输出
clk\u out\u rx
切换良好:

应要求增加以下试验台:

library ieee;
use ieee.std_logic_1164.all;

entity mdl_tb is
end entity;


library ieee;
use ieee.numeric_std.all;

architecture sim of mdl_tb is

  constant CLK_FREQ : real := 100.0E6;  -- Clock frequency in Hz
  signal clk        : std_logic;

  signal dut_clk_out_rx     : std_logic;
  signal dut_out_bit_parity : std_logic;

begin

  process is
  begin
    while TRUE loop
      clk <= '1';
      wait for 0.5 sec / CLK_FREQ;
      clk <= '0';
      wait for (1.0 sec / CLK_FREQ) - (0.5 sec / CLK_FREQ);
    end loop;
  end process;

  mdl_e : entity work.clk_div
    port map(
      clk_in => clk,
      clk_out_rx => dut_clk_out_rx,
      out_bit_parity => dut_out_bit_parity);

end architecture;
ieee库;
使用ieee.std_logic_1164.all;
实体mdl_tb为
终端实体;
图书馆ieee;
使用ieee.numeric_std.all;
mdl_tb的架构sim是
恒定时钟频率:实值:=100.0E6;--时钟频率(单位:Hz)
信号时钟:标准逻辑;
信号dut_clk_out_rx:标准逻辑;
信号dut输出位奇偶校验:标准逻辑;
开始
过程是
开始
而真循环
clk dut_clk_out_rx,
输出位奇偶校验=>dut输出位奇偶校验);
终端架构;

你能给我看看测试台吗?我不在乎外位奇偶校验;这不是火箭科学,但希望能有所帮助。提问者似乎是在他的测试台上通过组合方式生成了他的时钟。请注意,在他的波形图像中,
clk
clk\u out\u rx
的正波特率出现了信号转换。(他没有使用组合JK触发器,是吗?)解决这个问题的方法是用不同的延迟来平衡反馈路径。我在创建测试台时得到了这个结果。。它为两个时钟生成测试台。需要从测试台代码中删除一个。