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

vt313

Участник
  • Постов

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

  • Посещение

Репутация

0 Обычный

Информация о vt313

  • Звание
    Частый гость
    Частый гость

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

  1. В далеком 95-м, описание на верилоге компилировалась значительно быстрее чем на VHDL. За счет того, что многие функции VHDL перекладывались на разработчика. В том числе деление на reg и wire. И строка "always @(negedge clk, negedge Clear)" предполагала, что внутри будут входные сигналы clk, Clear, D, может быть еще EN. И больше ничего. И за счет таких вещей, описание с верилога компилировалось за 5 часов, а с VHDL за 10. А сейчас это превратилось в 5 и 10 минут.
  2. Это не бага. Это элемент стиля, за счет которого был уделан VHDL. Сейчас, да смысла уже нет. Как и смысла верилога. Вот он и дрейфует в сторону VHDL.
  3. А что не понравилось в этом фрагменте? Можно так его переписать, тоже самое будет, может красивее. wire [3:0] Dv = (ld)? inp : {ins, D[3:1]}; always @(negedge clk, negedge Clear) begin if(!Clear) D = 0; else if (ld | shift) D = Dv; end
  4. Наоборот. Мультиплексор выносится из под always. А вот большое количество elsif - это стиль VHDL
  5. Рекомендую. assign Dv = (ld)? inp : (shift)? {ins, D[3:1]} : D; always @(negedge clk, negedge Clear) begin if(!Clear) D = 0; else D = Dv; end
  6. process(clk,rst) variable i : integer := 0; variable c : std_logic_vector(127 downto 0); type t_ch is array (0 to 15) of character; constant hex_c : t_ch := ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'); file wfile : text open write_mode is "write.log"; variable l : line; begin if rst = '1' then c := x"12000000000000000000000000000000"; elsif clk = '1' and clk'event then c:= c + 1; write(l, 'x'); write(l, '"'); for j in 0 to 31 loop i := conv_integer(c(127 - j*4 downto 124 - j*4)); write(l, hex_c(i)); end loop; write(l, '"');write(l, ',');writeline(wfile, l); end if; end process; Записываем переменную с.
  7. Синтезатор пишет, например. Warning (10036): Verilog HDL or VHDL warning at tst_kort.vhd(65): object "rst" assigned a value but never read Но вряд ли это особо сильно поможет для формирования красивого кода. Нужно руками.
  8. Не в теме. Если есть формула может поиграюсь на досуге.
  9. Литературу нет. А принцип следующий. Y(i+1) = f(Y(i)); Y(i+2) = f(Y(i+1)) = f(f(Y(i))) = f1(Y(i)); Для формирования (i+2)-го отсчета нужен i-й отсчет, т.е. задержанный на 1 такт.
  10. Рекурсивные процессы можно распараллелить и конвейеризовать. Ничего тут особенного нет. Но в Вашем случае операция a*x+b*y работает на 200 МГц на DSP 5 циклона.
  11. Давайте мы вставим в этот процессор описанный конвейерный счетчик и убедимся, что частота работы процессора от этого не выросла.
×
×
  • Создать...