-
Notifications
You must be signed in to change notification settings - Fork 13
Description
Добрый день! Если следовать примерам из лабораторной работы, выходит, что модуль вычислителя находится в сбросе во время симуляции:
В тестовом окружении в 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, оставлю место корректировки сигнала на ваше усмотрение.