나는 8 개의 함수 인 ralu 내에서 alu를 만들 필요가 있지만 "ralu"에 대한 동작 모델을 시뮬레이트하려고하면 X (출력)와 Z (입력)가 모두 생깁니다. 내가 도대체 뭘 잘못하고있는 겁니까?두 모듈을 어떻게 연결합니까?
module alu(
input [3:0] op1,
input [3:0] op2,
input [2:0] func,
output reg[3:0] out
);
[email protected](*)
case(func)
3'b000: out=op1&op2; // functia AND
3'b001: out=op1|op2; // OR
3'b010: out=~(op1&op2);// NAND
3'b011: out=~(op1|op2); //NOR
3'b100: out=op1^op2; // XOR
3'b101: out=op1~^op2; //XNOR
3'b110: out=op1+op2;
3'b111: out=op1-op2;
endcase
endmodule
module ralu(
input [3:0] in,
input [2:0] func,
input clk,
input load,
output [3:0] out
);
reg [3:0] op1;
reg [3:0] op2;
[email protected](posedge clk)
if(load) op2<=in;
else op1<=in;
endmodule
Z의 아무것도를 운전하지 의미합니다 (I 만 ALU를 시뮬레이션 할 때 잘 작동합니다). 이것은 X를 설명 할 수 있습니다. 'alu'를'ralu' 또는 테스트 벤치에 연결하는 방법을 보여주지 않으므로 진단하기가 어렵습니다. – Greg
내 문제는 실제로 그 중 두 개를 연결하는 방법을 모르겠다. – user3629371
[googling] (https://www.google.com/#q=verilog%20instance%20module)을 시도하거나 언어 참조 SystemVerilog [IEEE 1800-2012] (http://standards.ieee.org/getieee/1800/download/1800-2012.pdf)와 같은 매뉴얼 (LRM) § 23. _ 모듈과 계층 구조 _ – Greg