Я пишу модуль RS232 для своей платы Nexys2. В настоящее время у меня проблемы с контроллером скорости передачи данных, который я хочу установить на 19200.
Для этого я использую счетчик Mod-M, после многих симуляций ISim проблема с моим кодом заключается в счетчике mod-m, поскольку он не производит никаких тиков.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity baud_rate is
generic (
N: integer := 8;
M: integer :=163);
Port (clk, reset : in STD_LOGIC;
tick : out STD_LOGIC;
q : out STD_LOGIC_VECTOR(N-1 downto 0));
end baud_rate;
architecture Behavioral of baud_rate is
signal r_reg : unsigned(N-1 downto 0);
signal r_next : unsigned(N-1 downto 0);
begin
process(clk,reset)
begin
if (reset ='1') then
r_reg <= (others=>'0');
elsif(clk'event and clk='1') then
r_reg <= r_next;
end if;
end process;
r_next <= (others =>'0') when r_reg=(M-1) else r_reg+1;
tick <='1' when r_reg=(M-1) else '0';
q <= std_logic_vector(r_reg);
end Behavioral;
Я протестировал все входы clk и работает нормально, и проблема, похоже, связана с регистрами r_reg и r_next. В ISim при выводе любого из них на q я получаю UUUUUUUU, поэтому кажется, что они не генерируют сигнал. Из этого я могу сделать вывод, что два регистра r_reg и r_next не создаются и не хранят значения, есть ли проблема при использовании без знака?
Чтобы убедиться втройне, я даже скопировал счетчик mod-m из книги «Прототипирование FPGA с VHDL» (который является показанным кодом), НО все равно это не работает, и вывод q — UUUUUUUU.
Если есть какие-либо лучшие способы создания скорости передачи из часов nexys2 50mz, это также будет оценено!
Ваше здоровье