微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > ISE11.4 一遇到bidirectional的线路,就没法进行仿真。跪求帮助!

ISE11.4 一遇到bidirectional的线路,就没法进行仿真。跪求帮助!

时间:10-02 整理:3721RD 点击:
ISE11.4 对iic和sram进行仿真时,一遇到bidirectional的线路,就没法进行仿真。
如果用自带的isim仿真,就显示:
ERROR:HDLCompiler:731 - "D:/ISESource/UnderWaterSources/testing/TEST_2/fusion20100817/test.v" Line 285: Procedural assignment to a non-register <SAA7121_IIC_SCL> is not permitted.
ERROR:HDLCompiler:731 - "D:/ISESource/UnderWaterSources/testing/TEST_2/fusion20100817/test.v" Line 286: Procedural assignment to a non-register <SAA7121_IIC_SDA> is not permitted.
如果用modelsim se进行仿真,就显示:
# ** Error: test.v(285): (vlog-2110) Illegal reference to net "SAA7121_IIC_SCL".
# ** Error: test.v(286): (vlog-2110) Illegal reference to net "SAA7121_IIC_SDA".
应该都是同一个问题。不用bidirectional类型的双向线路时,一点问题没有过,是哪里需要设置吗?希望有大神提点下,非常感谢!

这个可能要看代码才能解决,不过值得一提的是,可以考查下是不是在如always等块中直接对双向总线赋值了,下面是一点想法

  1. inout A;
  2. reg a_r;
  3. assigns A=a_r;
  4. always@()
  5. begin
  6.     a_r=1'b1;
  7. end

复制代码

双向~,这种东东只有在低速总线中用到,iic,localbus。到opencores上找个例子,一看就明白了。
不过一般情况是
always @(posedge clk or posedge rst)
begin
    if(rst)
    begin
    end
    else if(signal_out_en)
    begin
        a_out <= a_out_r;
   end
   else
    begin
       a_out <= 'hz
    end
end

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top