Nexys2 ボード用の RS232 モジュールを作成しています。現在、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 の 2 つのレジスタが作成されていない、または値が格納されていないと推測できます。符号なしを使用する場合に問題はありますか?
念のため、書籍『FPGA Prototyping with VHDL』(表示されているコード) から mod-m カウンターをコピーしましたが、それでも機能せず、q 出力は UUUUUUUU です。
nexys2 50mzクロックからボーレートを作成するより良い方法があれば、それも歓迎します!
乾杯