module deser(data_out, CLK_COUNT, par_out, inp, reset, start, clock, i_out);
parameter data_bit = 8;
parameter parity = 1;
parameter stop_bit = 2;
parameter [31:0] baudrate = 921600;
parameter [31:0] frequency = 50000000;
parameter parity_var = (parity)?1:0;
parameter argument = (stop_bit + 1'd1 + parity_var);
parameter clk_number = data_bit + argument;
parameter [31:0] half_of_per = ((frequency)/(2*(baudrate)));
output reg [data_bit - 1:0] data_out;
output reset;
output reg par_out;
output reg CLK_COUNT;
output [31:0] i_out;
input start, inp, clock;
reg [3:0] l, k;
reg [clk_number - 1:0] IN;
reg stop2, par, flag;
reg [31:0] i;
assign i_out = i;
always @(posedge clock)
begin
if (flag)
stop2 <= 1'b1;
case (start)
1'b1:
begin
i = i + 1;
if ((i == half_of_per) && (CLK_COUNT == 1'b0))
begin
i = 0;
CLK_COUNT = 1'b1;
end
if ((i == half_of_per) && (CLK_COUNT == 1'b1))
begin
i = 0;
CLK_COUNT = 1'b0;
stop2 <= 1'b0;
end
end
1'b0:
begin
i = 0;
CLK_COUNT = 1'b0;
end
endcase
end
Вопрос в следующем: при отладке программы в SignalTap значение i в какой-то момент может стать произвольным, вследствие чего вся остальная часть програмины перестает работать. Это ошибка Квартуса? Или же програмина криво написана? В прикрепленном файле снимок диаграммы в SignalTap. Помогите пж-та.
- Вложения
-
- signaltap.jpg
- (98.29 КБ) 555 скачиваний


