Я только начинаю изучать код в Verilog. Может кто-нибудь помочь мне понять, как реализовать следующий код в Verilog, используя один-горячее кодированиеодна горячая кодировка в Verilog
module Controller(b, x, clk, rst);
input b, clk, rst;
output x;
reg x;
parameter Off = 2'b00,
On1 = 2'b01,
On2 = 2'b10,
On3 = 2'b11;
reg [1:0] currentstate;
reg [1:0] nextstate;
//state register
always @ (posedge rst or posedge clk)
begin
if(rst==1)
currentstate <= Off;
else
currentstate <= nextstate;
end
//combinational
always @ (*)
begin
case (currentstate)
Off: begin
x <= 0;
if(b==0)
nextstate <= Off;
else
nextstate <= On1;
end
On1 : begin
x <= 1;
nextstate <= On2;
end
On2 : begin
x <= 1;
nextstate <= On3;
end
On3 : begin
x <= 1;
nextstate <= Off;
end
endcase
end
Я попытался изменить параметры, чтобы:
parameter Off = 4'b0001,
On1 = 4'b0010,
On2 = 4'b0100,
On3 = 4'b1000;
Однако ив читал, что это не хорошо реализации.
И где вы это читаете? –
@prakash Darji http://asics.chuckbenz.com/detailed_one_hot.htm – rhoward