Перейти к содержанию
    

oleg_1

Новичок
  • Постов

    4
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Контакты

  • ICQ
    Array
  1. попробуй код для своей шины переделать . . счетчик числа единиц в 32-разрядном слове . . port(D : in std_logic_vector(31 downto 0); sum : out std_logic_vector(4 downto 0)); process(D) variable s:std_logic_vector(4 downto 0); begin s:="00000"; for i in 0 to 31 loop if D(i) = '1' then s:= s+ "00001"; end if; end loop; sum <= s; end process;
  2. Как вариант: architecture a_X of e_Y is constant N : positive := 19; signal S : std_logic_vector(0 to N); begin process(Res, Clk) begin if Res = '1' then C <= (others => '0'); S <= ('1', others => '0'); elsif rising_edge(Clk) then C <= B; if S(0) = '1' then C<= A; end if; S <= S(N) & S(0 to N-1); end if; end process; end a_X; Здесь сигнал С регистровый, можно сделать комбинаторный: architecture a_X of e_Y is constant N : positive := 19; signal S : std_logic_vector(0 to N); begin process(Res, Clk) begin if Res = '1' then S <= ('1', others => '0'); elsif rising_edge(Clk) then S <= S(N) & S(0 to N-1); end if; end process; C <= A when S(0) = '1' else B; end a_X; Удачи спасибо oval ! код синтезировался ,если кому интересно : library IEEE; use IEEE.std_logic_1164.all; entity OUT_WORD is port ( Res: in Std_logic; Clk: in STD_LOGIC; C: out STD_LOGIC_VECTOR (0 to 7) ); end OUT_WORD; architecture OUT_WORD_arch of OUT_WORD is constant N : positive := 19; signal S : std_logic_vector(0 to N); begin process(Res, Clk) variable A : std_logic_vector(0 to 7); variable B : std_logic_vector(0 to 7); begin A(0 to 7):= "01011101"; B(0 to 7):= "11001100"; if Res = '1' then C <= (others => '0'); S <= ('1', others => '0'); elsif falling_edge(Clk) then C <= B; if S(0) = '1' then C<= A; end if; S <= S(N) & S(0 to N-1); end if; end process; end OUT_WORD_arch;
  3. спасибо des00 и Andew_b я работаю сейчас в Xilinx Foundation F4.2i, Build 3.1.196 Там свой симулятор ( Logic Simulator) TestBench там отсутствует(можно только создавать как символы) , я думал создать символ с помощью VHDL кода и промоделировать в схеме(схема нарисована в схемном редакторе с отдельными блоками на vhdl) , код не синтезируется: wait until rising_edge(Clk); -- ждем фронта c <= a; -- выставляем первый байт wait until rising_edge(Clk); -- ждем фронта c <= b; -- выставляем второй байт -- далее ждем 19 тактов for i in 1 to 19 loop wait until rising_edge(Clk); -- ждем фронта end loop не поддерживается ( Error L17/C0 : #0 Error: Process in routine OUT_WORD line 17 in file 'C:/Xilinx/active/projects/MODEM/OUT_WORD.vhd' contains unsupported wait statements. (HDL-226) ) попробую по другому исхитриться
  4. есть две переменные a,b:std_logic_vector(7 downto 0) и один выходной сигнал с :std_logic_vector(7 downto 0) подскажите как по первому переднему фронту с <= a ; а затем в течении n-тактов c <= b ; и так по циклу я имел в ввиду что мне для моделирования нужен генератор определенной последовательности т.е. я хочу передать один конрольный байт ,который я затем отлавливаю и повторение информационнго байта(например за 20 тактов) для этого я инициирую две переменные в процессе и их в первый такт выходной сигнал выдает конрольный байт а затем 19 тактов какой-то другой извиняюсь занеточнотси в наприсании
×
×
  • Создать...