我是Verilog的新手,我陷入了一个问题。我不是我做错了什么。我有两个模块(A和B)。模块B进行一些处理并将值存入模块B输出的寄存器'数据'中,并作为模块A的输入。模块A比较数据中的值并发送一个信号以重置模块B中的寄存器'数据'。数据在模块B处理存在并且是正确而它不是在模块A出现未将数据复制到寄存器
ModuleB (address,indata,Data,reset,clk,ResetSignal,Out)
input [15:0] address;
input [15:0] indata;
input ResetSignal;
output [5:0] Data;
output [15:0] Data;
reg[15:0] DataReceived;
reg[0:5] Data = 6'b000000;
reg[15:0] Out;
if(address == 16'h01a0)
begin
DataReceived<= indata;
Data = (Data| 6'b000001); // all 6 values will be copied on basis of some address
end
.
.
.
ModuleA (...)
reg[15:0] address;
reg[15:0] indata;
reg[15:0] Out;
reg ResetSignal;
reg[5:0] Data; //it is an internal register of module B which contains data received from module B
wire reset,clk;
ModuleB (.address(address),.indata(indata),.Data(Data),.clk(clk),.reset(reset),.ResetSignal(ResetSignal),.Out(Out));
always @ (posedge clk or posedge reset)
begin
if (reset)
ResetSignal = 1'b0;
else if (Data == 6'b111111)
begin
//set some signals
ResetSignal = 1'b1; // send signal back to reset the buffer Data
end
end
我已经声明的数据作为REG因此从模块B的值应该被映射。他们不应该吗?
是的,这是问题!我改变了reg在moduleA中的连线,它现在正在工作。谢谢。我有实例名称,我已经复制了一段有问题的代码,所以错过了:) – Eshaal