Verilog中inout端口的使用方法.pdfVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Verilog中inout端口的使用方法,veriloginout,veriloginout仿真,veriloginout赋值,veriloginout写法,veriloginoutreg,veriloginout传递,双端口ramverilog,verilog双向端口,verilog数组端口

Verilog中inout端口的使用方法 Verilog中inout端口的使用方法 (本文中所有Verilog描述仅为展示inout端口的用法,实际描述则需要更丰富的功能描述) Inout端口的使用 在芯片中为了管脚复用,很多管脚都是双向的,既可以输入也可以输出。在Verilog中即为 inout型端口。Inout端口的实现是使用三态门,如FPGA中的管脚复用部分: 三态门的第三个状态是高阻态Z。在实际电路中高阻态意味着响应的管脚悬空、断开。当 三态门的控制信号为真时,三态门导通;控制信号为假时,三态门的输出端是高阻态。 Verilog中的inout端口被综合为如下形式: Inout端口是一个很容易出错的地方,理解inout端口模型必须要抓住三点: inout端口不可能独立存在; 作为输入必须有reg型缓冲(一个inout两个控制信号); 相连的两个inout端口由一对信号交错控制; 下面一一分析。 inout端口不可能独立存在: 分析inout 的端口特性,对于一个模块来说,inout端口既可以当做输入,又可以当做输出, 那么,与inout端口相连的另一模块是什么情形呢?显然,另一模块也应该是inout端口,inout 端口不可能独立存在。但是在实际编写Verilog代码的过程中,却常常忽略这一点,而仅仅 是另一模块的一条输出线和一条输入线同时连接到inout端口上,乍看起来符合逻辑,实则 不然。 以下图为例: 图中的存储器Memory用RAM实现,无论CPU 还是RAM 都只有一组数据总线,而图中 输入给Memory 的有WriteData,从Memory 输出的有MemData,这两组其实是一组数据总 线,而实现此管脚复用功能的就是管脚复用。在用Verilog描述的过程中,只考虑CPU 的数 据通路结构时,就容易忽略它的双向端口的具体实现,并非如图中一般,简简单单的与RAM 模块的inout端口相连。所以,一定要注意到inout端口不能独立存在,用Verilog描述上图 中的CPU 模块时也要描述一个inout端口及相关逻辑。 作为输入必须有reg型缓冲: 考虑到这种情况:当control信号为真时,三态门导通,这时,DataOut 的输出通过双向端 口传输到DataBus上。但是DataIn 与DataOut 直接相连,如何保证DataOut的数据不会影响 到DataIn相连的电路呢? 解决这个问题的办法是把DataIn声明为reg型,而reg型的变量在always 过程块中被复制, 需要再增加一个控制信号,由always 敏感表列监控,以此保证inout端口作为输出时不会影 响DataIn。 实际用Verilog描述的过程中,常常容易忽略某一个inout端口的reg声明。以CPU 和RA M为例,RAM 本身作为存储器就是用reg声明的,所以不需要这个reg缓冲(前提是写RAM 时一定要在always 敏感表列中添加控制信号);而CPU模块的inout端口的reg声明却常常 被忽略,因为这个东西看上去画蛇添足。这也是初学者使用inout端口时最容易犯错的地 方。 相连的两个inout端口由一对信号交叉控制: 前面提到inout 端口不能独立存在,进一步考虑,当一个模块的inout端口作为输出时,那 么另一个模块的inout 端口必然作为输入;反之,当一个模块的 inout 端口作为输入时,那 么另一个模块的inout 端口必然作为输出。因此,这两个 inout 端口的控制信号实际上是由 一对信号交叉控制。 以下图为例: CPU控制读写RAM 的信号有一对:ReadRAM和WriteRAM。 当ReadRAM 有效时,CPU从RAM 中读取数据,这时RAM 的三态门导通,RAM 的inout 端口作为输出用,CPU的inout端口作为输入用,并且用ReadRAM信号控制CPU读取; 当WriteRAM 有效时,CPU 向RAM 写入数据,这时CPU 的三态门导通,CPU 的inout端 口作为输出用,RAM的inout端口作为输入用,并且用WriteRAM 信号控制RAM 写数据。 理解inout端口的实现,并且注意到上面三点,就可以开始用Verilog描述inout端口了。进 行抽象: 1.三态门及其高阻态的实现(输出): InoutDataBus; Assign DataBus=(Control[0]==1)?DataOut:32bz;//位宽由实际情况决定 2.输入缓冲(输入): RegDataIn; Always @(Control[1]) If(Control[1

文档评论(0)

docindpp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档