我想做的很简单,只是从一个基本的计数器产生一个脉冲。我的代码如下所示。我的问题是,是否有一种比较 std_logic_vector 和整数的有效方法?我只需要在这个过程中的那个实例上比较它们。另外,您可以对 4 位信号进行算术运算,如我的代码所示吗?你需要一个特定的图书馆吗?
signal Top16: std_logic; -- 1 clk spike at 16x baud rate
signal Div16: std_logic_vector(3 downto 0);
DIVISOR: natural := 120 -- Can be 120 or 60, depending on user preference.
------------------------------------------------------------------------
process (RST, LCLK_MULT_BUFG)
begin
if RST='1' then
Top16 <= '0'; --1 bit signal
Div16 <= x"0"; -- 4 bit signal
elsif rising_edge(LCLK_MULT_BUFG) then
Top16 <= '0';
if Div16 = Divisor then -----> signal to integer comparison?
Div16 <= 0;
Top16 <= '1';
else
Div16 <= Div16 + 1; -----arithmetic on std_logic_vector??
end if;
end if;
编辑:
Div16 std_logic_vector 中的位数将取决于所选除数的大小(如下所示)。如何正确格式化?需要哪些库?
DIVISOR: natural := 120 -- Can be 120 or 60, depending on user preference.
constant COUNTER_BITS : natural := integer(ceil(log2(real(DIVISOR))));
signal Div16: std_logic_vector(COUNTER_BITS);