Skip to content

модуль crc8 всё время в сбросе #26

@Shuregg

Description

@Shuregg

Добрый день! Если следовать примерам из лабораторной работы, выходит, что модуль вычислителя находится в сбросе во время симуляции:
В тестовом окружении в initial блоке сброса сигнал p_rst_i изначально выставляется в высокий уровень и, спустя 200 нс, в низкий.

initial
begin
  p_dat_i    = 'hz;
  p_enable_i = 0;
  p_sel_i    = 0;
  p_we_i     = 'hz;
  p_adr_i    = 'hz;
  p_rst_i    = 1;
  #200
  p_rst_i    = 0; // Запись #200 обозначает что смена значения сигнала сброса произойдет через 200нс.
end

В в порты подключаемого wrapper'а этот сигнал подаётся без инверсии,

wrapper_crc8
dut_wrapper_crc8
(
  .p_rst_i    (p_rst_i),
  ...
);

а в самом wrapper'е при подключении crc8 появляется инверсия.

  crc8
  i_crc8
  (
    .clk_i        (p_clk_i),
    .rst_i        (!p_rst_i),
    .din_i        (din_i),
    .data_valid_i (data_valid_i),
    .crc_rd       (crc_rd),
    .crc_o        (crc_o)
  );

Внутри модуля CRC сброс осуществляется по высокому уровню соответствующего сигнала

always_ff @(posedge clk_i)
  begin
    if (rst_i) begin // Сигнал сброса - обнуляем все регистры
      state_ff         <= IDLE;
      data_current_ff  <= 8'b0;
      crc_ff           <= 8'b0;
      crc_counter_ff   <= 4'd0;
    end
    else begin

Вся эта цепочка сигнала p_rst_i приводит к тому, что после 200нс p_rst_i = 0, а в модуле crc8 rst_i будет равен 1 на протяжении всей последующей симуляции (как указал ранее, crc8 сбрасывается по высокому уровню).
Не стал делать pr, оставлю место корректировки сигнала на ваше усмотрение.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions