-
with
-
-
Не в сети
-
Захожу иногда
-
-
Сообщений: 76
-
Спасибо получено: 3
-
-
|
umarsohod
Если позволите: Next_C_State = Convert_State;
Такую конструкцию .. брал из какого то апнота ... по моему от альтеры по автомату Мура, позволяет остановить автомат на текущем состоянии до изменения условия, заместо :
else Next_C_State = same_state;
В своих программах вы подобное не используете ?
Leka
Я вас понял но как добавить еще один синхронный блок always так, чтоб не нарушать логику автомата Convert_State не вижу,
если не сложно - чирканите еще одну подсказку :unsure:
В конечном итоге мне надо поступившее значение преобразовать в код для четырехзначного семисегментника .. посчитав сколько в нем тысяч, сотен .. десяток и т.д.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Leka
-
-
Не в сети
-
Живу я здесь
-
-
Сообщений: 635
-
Спасибо получено: 54
-
-
|
Проще всего все перенести в always@(posedge clk), хотя это отличается от стандартного стиля: //===============================================================
reg [3:0] Convert_State;
reg [3:0] Next_C_State;
reg [15:0] dat_in = 0;
reg [15:0] Test_dat = 16'd202;
//===============================================================
always @(posedge clk) begin
Convert_State <= Next_C_State;
//always @* begin
Next_C_State = Convert_State;
case(Convert_State)
4'd0:begin
dat_in = Test_dat;
test_point = 1'b0;
Next_C_State = 4'd1;
end
4'd1:begin
if(dat_in > 16'd100) Next_C_State = 4'd2;
else Next_C_State = 4'd3;
end
4'd2:begin
dat_in = dat_in - 16'd100;
test_point_2 = 1'b1;
Next_C_State = 4'd1;
end
4'd3:begin
dat_out_10 = dat_in;
test_point = 1'b1;
Next_C_State = 4'd0;
end
default: Next_C_State = 4'd0;
endcase
end Не проверял (занят).
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Leka
-
-
Не в сети
-
Живу я здесь
-
-
Сообщений: 635
-
Спасибо получено: 54
-
-
|
with пишет: В конечном итоге мне надо поступившее значение преобразовать в код для четырехзначного семисегментника .. посчитав сколько в нем тысяч, сотен .. десяток и т.д.
Это надо не вычитаниями делать, а сначала преобразовать двоичный код в двоично-десятичный (логикой, без FSM), а уже потом двоично-десятичный в семисегментный. На форуме были примеры (кажется, в частотомере), надо поискать (сейчас нет времени).
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от Leka.
|
Время создания страницы: 0.127 секунд