Jump to content

    

Zwerg_nase

Свой
  • Content Count

    225
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Zwerg_nase

  • Rank
    Местный

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. Я бы на вашем месте добавил default: в case (state), потому что тип logic имеет 4 состояния и ваш case не описывает все возможные состояния state
  2. Возможно, надо добавить пробел после group в -group[get_clocks -include_generated_clocks clk_fpga_0]
  3. Мне кажется, что проблема не в clk_fpga_0 а именно в конструкции -group [get_clocks -include_generated_clocks clk_fpga_0] Если вы напишете set_clock_groups -name all_async -asynchronous -group [get_clocks clk_fpga_0] -group [get_clocks clk51_25_in] то этой ошибки не будет. Возможно Вивада думает, что у вас внутри -group [...] не одна сущность, как должно быть, а две
  4. Здесь, похоже опечатка. Надо -asynchronous
  5. Writing Testbenches using System Verilog, J. Bergeron http://read.pudn.com/downloads149/ebook/643578/Writing testbenches using SystemVerilog.pdf SystemVerilog for Verification, C. Spear
  6. С этим я не соглашусь. Во-первых, этот код: не синтезируемый, по крайней мере в FPGA, т.к. , например, Вивада вообще не поддерживает синтез while-loop, а только for-loop (см. https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_1/ug901-vivado-synthesis.pdf), а Квартус поддерживает, но только если кол-во итераций задано константой (см. https://www.intel.com/content/www/us/en/programmable/quartushelp/current/index.htm#hdl/vhdl/vhdl_list_support_d1537e1623.htm). А в данном случае (while(ready='0')) кол-во итераций совсем не константа. Я полагаю, что --wait for 60 ns; это закоментированная задержка типа wait for time_expression, потому что только с ней этот код имеет смысл, например в тетстбенче для симуляции.
  7. Я имею в виду ваш код, который вы написали в своём первом комменте:
  8. Из вашего кода не следует, что это синхронная логика, т.к. в нём не описан список чувствительности. А Case может использоваться и в ассинхронной. Согласно вашему описанию, должна быть синтезирована схема, которая, по изменению некоего сигнала из списка чувствительности (например, положительному фронту клока) при выполнении условия ST_CHIP_ERASE_2 должна выполнить два оператора: while ... loop и затем, а не параллельно, if...else. В стандарте IEEE 1076 указано, что внутри when указываются sequential-statement: case-statement –› [ case-label ‘:’ ] case expression is when choices ‘=>’ { sequential-statement } { when choices ‘=>’ { sequential-statement } } end case [ case-label ] ‘;’ Про которые раннее в том же стандарте написано, что "Sequential statements differ from concurrent VHDL statements in that they are executed in the order they are written. Sequential statements include the following types of statements: ... - If, case, loop, next, return statements - Wait statements"
  9. Мне кажется, что while(ready..) и if(del..) внутри when ST_CHIP_ERASE_2 будут выполняться последовательною В результате, проверка del=6 будет сделана только после выхода из loop, а не внутри loop, как в исходном варианте.
  10. У FCOUNTER топ порт RST не используется в архитектуре, потому модуль остаётся в ресете.
  11. У вас, по-моему, в RG написано то же, что и в COMP. Ещё не понятно, почему у SM входы a и b и выход s - однобитовые. По схеме похоже, что должны быть 4-х битовые.
  12. ИМХО, $fwrite / fdisplay не дают возможность вывода чисел со знаком. Я думаю, что проще будет обработать файл в матлабе, чтобы изменить результаты на знаковые. Сложнее, но возможно, будет проверять знаковый бит в самом тестбенче и в зависимости от этого записывать результат со знаком или без.
  13. А я вот вижу: spi_cont_addr <= sspi_cont_addr + '1'; --next address а видимо должно быть: Sspi_cont_addr <= sspi_cont_addr + '1'; --next address
  14. Насколько я понимаю, если холд отрицательный, это значит что следующие данные могут приходить аж на 3,2 нс раньше, чем latch_clock защёлкнет текущие данные. А текущие данные должны приходить не позже чем за 5 нс чем случиться этот же latch_clock, который их и защёлкнет. Т.е. стабильные данные должны держаться не меньше 5-3.2 = 1.8 нс.