|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 congfeiyu 于 2011-1-6 12:47 编辑
各位好,上回问到我想用DSP读取我FPGA中八个FIFO中的数据,现在我需要在FPGA中产生八个FIFO的读使能信号,用的是地址译码,我把地址ADDR放在了敏感列表中,但是出现了两个问题1:当我的地址不是八个FIFO中任何一个的地址或者是高阻时,我用default语句将八个使能信号全设为低电平,但是仿真出来后却是不定值:
2:我想设一个复位信号,复位后所有的读使能都为低电平,但是由于我已经把ADDR放在了敏感列表中,如果把posedge RST也放进去会报错,因为不能同时检测跳变沿和电平,于是我把RST信号也改成了电平检测,即always@(ADDR or IS or RST),但是使能信号好像没有被复位:
是什么原因呢?是不是复位信号只能用跳变沿检测才会有效?那怎样才能把地址总线的变化和复位信号的变化放在一个always里呢?谢谢!
下面是我的源程序,小弟不才,程序可能不规范请拍砖!parameter FIFO1=8'h00,
FIFO2=8'h01,
FIFO3=8'h02,
FIFO4=8'h03,
FIFO5=8'h04,
FIFO6=8'h05,
FIFO7=8'h06,
FIFO8=8'h07;
always@(ADDR or IS or RST)
begin
if(RST)
begin
FIFO1_EN=1'b0;
FIFO2_EN=1'b0;
FIFO3_EN=1'b0;
FIFO4_EN=1'b0;
FIFO5_EN=1'b0;
FIFO6_EN=1'b0;
FIFO7_EN=1'b0;
FIFO8_EN=1'b0;
end
else
if(~IS)
case(ADDR)
FIFO1:begin
FIFO1_EN=1'b1;
FIFO2_EN=1'b0;
FIFO3_EN=1'b0;
FIFO4_EN=1'b0;
FIFO5_EN=1'b0;
FIFO6_EN=1'b0;
FIFO7_EN=1'b0;
FIFO8_EN=1'b0;
end
FIFO2:begin
FIFO1_EN=1'b0;
FIFO2_EN=1'b1;
FIFO3_EN=1'b0;
FIFO4_EN=1'b0;
FIFO5_EN=1'b0;
FIFO6_EN=1'b0;
FIFO7_EN=1'b0;
FIFO8_EN=1'b0;
end
FIFO3:begin
FIFO1_EN=1'b0;
FIFO2_EN=1'b0;
FIFO3_EN=1'b1;
FIFO4_EN=1'b0;
FIFO5_EN=1'b0;
FIFO6_EN=1'b0;
FIFO7_EN=1'b0;
FIFO8_EN=1'b0;
end
FIFO4:begin
FIFO1_EN=1'b0;
FIFO2_EN=1'b0;
FIFO3_EN=1'b0;
FIFO4_EN=1'b1;
FIFO5_EN=1'b0;
FIFO6_EN=1'b0;
FIFO7_EN=1'b0;
FIFO8_EN=1'b0;
end
FIFO5:begin
FIFO1_EN=1'b0;
FIFO2_EN=1'b0;
FIFO3_EN=1'b0;
FIFO4_EN=1'b0;
FIFO5_EN=1'b1;
FIFO6_EN=1'b0;
FIFO7_EN=1'b0;
FIFO8_EN=1'b0;
end
FIFO6:begin
FIFO1_EN=1'b0;
FIFO2_EN=1'b0;
FIFO3_EN=1'b0;
FIFO4_EN=1'b0;
FIFO5_EN=1'b0;
FIFO6_EN=1'b1;
FIFO7_EN=1'b0;
FIFO8_EN=1'b0;
end
FIFO7:begin
FIFO1_EN=1'b0;
FIFO2_EN=1'b0;
FIFO3_EN=1'b0;
FIFO4_EN=1'b0;
FIFO5_EN=1'b0;
FIFO6_EN=1'b0;
FIFO7_EN=1'b1;
FIFO8_EN=1'b0;
end
FIFO8:begin
FIFO1_EN=1'b0;
FIFO2_EN=1'b0;
FIFO3_EN=1'b0;
FIFO4_EN=1'b0;
FIFO5_EN=1'b0;
FIFO6_EN=1'b0;
FIFO7_EN=1'b0;
FIFO8_EN=1'b1;
end
default:begin
FIFO1_EN=1'b0;
FIFO2_EN=1'b0;
FIFO3_EN=1'b0;
FIFO4_EN=1'b0;
FIFO5_EN=1'b0;
FIFO6_EN=1'b0;
FIFO7_EN=1'b0;
FIFO8_EN=1'b0;
end
endcase
else
begin
FIFO1_EN=1'b0;
FIFO2_EN=1'b0;
FIFO3_EN=1'b0;
FIFO4_EN=1'b0;
FIFO5_EN=1'b0;
FIFO6_EN=1'b0;
FIFO7_EN=1'b0;
FIFO8_EN=1'b0;
end
end |
|