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

OM-S

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

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

  • Посещение

Репутация

0 Обычный

Информация о OM-S

  • Звание
    Участник
    Участник

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

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

1 450 просмотров профиля
  1. Для vsim дополнительно указать параметр -t с нужной точностью (fs, ns, ...) . Типа vsim -t fs .... Как Вы и делали. Должно работать... Вот такой запуск точно работает: vsim -L com_library -l transcript.txt -i -t ps -multisource_delay latest +typdelays com_library.test_clk(arc)
  2. Если я правильно понял вопрос, то Вы хотите, чтобы вектор reg [31:0] addr_offset = 'h10000000; переданный в таск c параметром reg addr [0:31] (неупакованный массив!) имел значение addr [0:31] = 'h00000008 (то есть addr[28] ==1 так же как и в исходном addr_offset [28]==1) Вариант решения для sv - использовать {<<{}}: logic [31:0] addr_offset; logic addr_tmp [0:31]; logic dout [0:31]; task demo_task(input logic addr[0:31], output oo [0:31]); oo = addr; endtask assign addr_offset = 'h10000000; assign addr_tmp = {<<{addr_offset}}; always_comb begin demo_task(addr_tmp, dout); end Приведенный пример в Вивадо моделируется и синтезируется.
  3. А если написать вот так: wire nextBit = counter < 4 ? in : feedback; И заодно в тестбенче лучше генерить клок так: initial begin clk <= 0; forever #5 clk <= ~clk; end
  4. Да, конечно, нужно сделать синхонную загрузку или обнуление (что вам нужно по заданию) счетчика. Делаете дополнительный вход (reset, например) и по нему обнуляете. А если совсем по простому, то можно попробовать так (по крайней мере в sv) module count (input clk, output reg [1:0]counter = 0); always @(posedge clk) counter <= counter + 1; endmodule
  5. Задайте начальное значение счетчику (обнулите). Вы же сигналу clk в тестбенче задали начальное значение перед инверсией.
  6. В tb.v поставьте начальное значение для регистра clk, иначе инверсия неизвестного значения даст неизвестное значение Не могу запустить ваш пример и проверить, но в в macros.do наверно нужно указать симуляцию с разрешением 1ps.(строка 4 vsim -t 1ps tb). Pll обычно симулируются с пикосекундными разрешениями.
  7. Расизм я вижу между параллельными fork-ами и собственно захватом данных в фифо по фронту aclk. begin ... 1: rand_pulse = 1; 5: rand_pulse = 0; @(posedge aclk); ... end и begin ... s_axis_tvalid = rand_pulse; if (rand_pulse) s_axis_tdata = $urandom_range(255,0); @(posedge aclk); ... end Какой из блоков выполнится первым и какое значение (старое или новое) s_axis_tvalid, s_axis_tdata защелкнится на входе ФИФО по фронту клока?
  8. Кажется эта ситуация называется race condition. Данные и valid меняются "одновременно" с клоком, поэтому новые значения могут захватиться либо на текущем клоке, либо только на следующем (на усмотрение симулятора). Поставьте после @(posedge aclk) небольшую паузу #1 и тогда изменения сигалов будет гарантированно после фронта слока. По этому поводу (и по многим другим) очень рекомендую почитать книжку Verilog and system verilog gotchas. 101common coding errors and how to avoid them.
  9. Например у Ксайлинкса в документе ug687 в разделе 6 HDL coding techniques http://www.xilinx.com/support/documentatio..._4/xst_v6s6.pdf
  10. Кажется в блоке always нужно заменить блокирующее присваивание на неблокирующее. То есть вместо = использовать <=
  11. Неужели действительно Квартус выкидывает логику, которая идет на пины, которым присвоено "virtual pins" ?
  12. Про мультицикл уже ответили. Когда я разбирался, мне очень помогли статьи здесь http://embedders.org/content/timequest-dly...bnyi-multicycle
  13. Проект можно сохранить File->Write Project TCL Запустив потом этот скрипт, Vivado заново создаст проект со всеми настройками и т.д.
  14. Если вы про сигнал CLK_DIV, то да, после CLK_DIV = "1111" будет CLK_DIV = "0000"
  15. Странно. Я Вам привел конкретный пример когда система моделирования воспринимает результат взятия элемента знакового массива как беззнаковый результат. Полностью подходит под Ваш пример (хотя у Вас не указано, как объявлена переменная rdata_ptr). Впрочем, не вижу смысла Вам чего-то доказывать.
×
×
  • Создать...