| 
 | 
 
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册  
 
×
 
 本帖最后由 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 |   
 
 
 
 |