을의 Verilog에 난 그냥 Verilog를 배우고 시작하고 그래서 나는이 쓴 1010 순서 찾는 가루 투성이 기계 만들려고 b를 :차이 {A, B} == 2'b10과 & ~
을module Find1010(input clk, input in, output reg out);
reg [1:0]st = 0;
wire a = {st[0], in} == 2'b10;
wire b = {st , in} == 3'b101;
always @(posedge clk)
begin
out = a & st[1];
st = {a | b, in};
end
endmodule
는 그것은 일을하지만 난
wire a = st[0] & ~in;
에 선
wire a = {st[0], in} == 2'b10;
을 변경 한 후 출력이 왜 일어나고 {st[0], in} == 2'b10
와 st[0] & ~in
의 차이점은 무엇입니까되어 항상 0인가?
module Test;
reg in = 0, clk = 1;
wire result;
initial begin
#4 in = 1;
#4 in = 0;
#2 in = 1;
#2 in = 0;
#2 in = 1;
#2 in = 0;
#2 in = 1;
#4 in = 0;
#2 in = 1;
#2 in = 0;
#3 $finish;
end
initial forever #1 clk = ~clk;
always @(negedge clk)
$display("Input: %b Output: %b", in , result);
Find1010 Mealy_Machine(
.clk(clk),
.in(in),
.out(result)
);
endmodule
다음은 변경해야 할 몇 가지 사항입니다. 1) _dut_ 모듈에서 '출력'및 'st'에 대해 비 차단을 사용합니다. 2) 테스트 벤치에서 $ display에'always @ *'를 사용하십시오. – Serge
@ Serge, 1)에 동의, 2)에 동의하지 않음, 큰 테스트 벤치에 대해서는 너무 많은 출력. 특정 디버그 경우에만 - 여기서는 도움이되지 않습니다. –