module DI_Test(
DSP_ClkOut, //DSP外扩总线的同步时钟信号
DSP_XR_Wn, //DSP总线读写控制信号,DSP_XR_Wn为高表示总线读;为低表示总线写
DSP_XZCS0AND1n, //DSP片选
DSP_XZCS2n,
DSP_XA, //DSP地址和数据总线
DSP_XD,
DI_5V //5V开入
);
input DSP_ClkOut;
input DSP_XR_Wn;
input DSP_XZCS0AND1n;
input DSP_XZCS2n;
input [`DSPAddrWidth-1 : 0] DSP_XA;
inout [`DSPDataWidth-1 : 0] DSP_XD;
reg [`DSPDataWidth-1 : 0] DSP_XD_out;
input [`DIBitWidth-1 : 0] DI_5V;
//reg [`DIBitWidth-1 : 0] DI_5V_reg;
//当片选无效时,将数据总线设置为高阻输出状态
assign DSP_XD = (!DSP_XZCS0AND1n) ? DSP_XD_out : 16'hzzzz;
always @ (DSP_XR_Wn, DSP_XZCS0AND1n, DSP_XZCS2n, DI_5V)
begin
//当片选信号有效且XRWn信号有效则读取DI开入状态并将数据结果写到数据总线
if((!DSP_XZCS0AND1n) && DSP_XR_Wn)
begin
if(DSP_XA==`DIAddr_Ch0) //读DI开入通道Ch0,将开入状态写到数据总线
DSP_XD_out <= DI_5V[0];
else if(DSP_XA==`DIAddr_Ch1) //读DI开入通道Ch1
DSP_XD_out <= DI_5V[1];
else if(DSP_XA==`DIAddr_Ch2) //读DI开入通道Ch2
DSP_XD_out <= DI_5V[2];
else if(DSP_XA==`DIAddr_Ch3) //读DI开入通道Ch3
DSP_XD_out <= DI_5V[3];
else if(DSP_XA==`DIAddr_Ch4) //读DI开入通道Ch4
DSP_XD_out <= DI_5V[4];
else if(DSP_XA==`DIAddr_Ch5) //读DI开入通道Ch5
DSP_XD_out <= DI_5V[5];
else if(DSP_XA==`DIAddr_Ch6) //读DI开入通道Ch6
DSP_XD_out <= DI_5V[6];
end
end
endmodule
前几天修改为以上代码号,DSP读取FPGA中的开入寄存器已经OK了,但始终没有弄明白什么原因
接下来测试DSP通过总线写FPGA中的寄存器时,还是偶尔出现了DSP程序死掉的现象,正在测试中
|