Добрый день!
Понадобился дешифратор 3->8, взял пример программы отсюда: http://www.dsol.ru/stud/book7/chapter6/page6_03.html
module decode (Ain, En, Yout);
input En;
input [2:0] Ain;
output [7:0] Yout;
reg [7:0] Yout;
always @(En or Ain)
begin
if (!En)
Yout = 8'b0;
else
case (Ain)
3'b000 : Yout = 8'b00000001;
3'b001 : Yout = 8'b00000010;
3'b010 : Yout = 8'b00000100;
3'b011 : Yout = 8'b00001000;
3'b100 : Yout = 8'b00010000;
3'b101 : Yout = 8'b00100000;
3'b110 : Yout = 8'b01000000;
3'b111 : Yout = 8'b10000000;
default : Yout = 8'b00000000;
endcase
end
endmodule
Все бы хорошо, но только иногда возникают непонятные "иголки" (см. рисунок).
переписал по-своему:
module Desh_3__ (in, t);
input wire [2:0] in;
output wire [7:0] t;
assign t[0] = ~(in[0] | in[1] | in[2]);
assign t[1] = ~(~in[0] | in[1] | in[2]);
assign t[2] = ~(in[0] | ~in[1] | in[2]);
assign t[3] = in[0] & in[1] & ~in[2];
assign t[4] = ~(in[0] | in[1] | ~in[2]);
assign t[5] = in[0] & ~in[1] & in[2];
assign t[6] = ~in[0] & in[1] & in[2];
assign t[7] = in[0] & in[1] & in[2];
endmodule
Результат такой же!
в чем проблема?