首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Verilog中驱动输出

如何在Verilog中驱动输出
EN

Stack Overflow用户
提问于 2022-09-23 18:34:20
回答 2查看 52关注 0票数 -2

我正试图在FPGA中实现I2C来学习verilog,我是一个完全的初学者,并且遇到了错误:

代码语言:javascript
复制
 Error (10028): Can't resolve multiple constant drivers for net "rComStarted" at I2CModule.v(14)

我目前正在尝试实现I2C的开始和结束条件,作为中途点,我只想将rComStarted值连接到输出,以确保其工作正常(此外,您可以忽略我有一个输入和输出sda的外观,我只是暂时将它们分开,因为我担心炸东西)

为了更清楚地了解我对这段代码的期望:

如果low

  • rComStarted具有负边缘,而SCL较高,则
  • ,如果SDAOut有偏边,而SCL高,则启用rComStarted
  • ,则要将rComStarted
  • 连接到SDAOut

代码:

代码语言:javascript
复制
module SafeI2CSlave(input SDAIn, output SDAOut, input SCL);

reg rComStarted;
reg rChipSelect;
assign SDAOut = rComStarted;
always@(negedge SDAIn)
begin 
    if(SCL)
    begin
        rComStarted = 1'h1;
    end
end

always@(posedge SDAIn)
begin 
    if(SCL)
    begin
        rComStarted = 1'h0;
    end
end
endmodule

我为什么要犯这个错误?实现我想要的功能的最佳方法是什么?

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-24 01:10:16

每个边需要两个单独的寄存器。下面的示例将rComStarted_p和rComStarted_n切换到尊重的边缘,然后将它们切换到rComStarted。第一个嵌套SDAIn将提高rComStarted (p:0 ^ n:1 = 1)。第一个后缘将降低rComStarted ( p:1 ^ n:1 = 0)。第二个嵌套将提高rComStarted (p:1 ^ n:0 = 0)。最后,第二个边缘将降低rComStarted,并将rComStarted_p和rComStarted_n带回到初始状态。

代码语言:javascript
复制
module SafeI2CSlave(input SDAIn, output SDAOut, input SCL);
  reg rComStarted_p = 1'b0;
  reg rComStarted_n = 1'b0;
  reg rChipSelect;
  wire rComStarted = rComStarted_p ^ rComStarted_n;
  assign SDAOut = rComStarted;
  always@(negedge SDAIn) begin 
    if(SCL && !rComStarted) begin
      rComStarted_n <= !rComStarted_n;
    end
  end
  always@(posedge SDAIn) begin 
    if(SCL && rComStarted) begin
      rComStarted_p <= !rComStarted_p;
    end
  end
endmodule
票数 2
EN

Stack Overflow用户

发布于 2022-09-23 18:42:32

您正在从驱动相同的var ,两个不同的总是块。它不能在硬件上实现。因此,这是非法的。想一种不同的实现算法的方法。它只能由一个街区驱动。

我想你需要做以下几件事:

代码语言:javascript
复制
always @* begin
   if (SCL)
      rComStarted = ~SDAIn;
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73831697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档