在verilog中关于inout口的两种设计方法

  在学习IIC的时候我们知道这么设计inout

  inout   scl ;

  reg    scl_reg ,  scl_en ;

  scl  = scl_en ?   scl_reg : 1‘dz ;

当scl_en 有效输出scl_reg 的波形,就是output,否则就是input。

  后来在工作中遇到了一个IIC的IP核 ,这个IIC的IP核接口是这样子的

 1 mi2c  U_mi2c(
 2         .CLK (clock),
 3         .NRST (reset),
 4         .A (a),
 5         .DI (di),
 6         .WR (wr),
 7         .SEL (sel),
 8         .ISCL (iscl),
 9         .ISDA (isda),
10         .DA (da),
11         .NOE (noe),
12         .INTR (intr),
13         .OSCL (oscl),
14         .OSDA (osda)
15         );

这个IP中,将IIC的input 和output分开了。并且没有上面说的使能scl_en。这下子我就懵了,经过一番苦心寻找,终于知道如何合并了,废话不多说,直接上代码,最后变成这个样子。

 1 module mi2c_top (
 2                 clock ,
 3                 reset,
 4                 a,
 5                 di,
 6                 wr,
 7                 sel,
 8                 scl,
 9                 sda,
10                 da,
11                 noe,
12                 intr
13                 );
14 input         clock ,reset ;
15 input [2:0] a ;
16 input [7:0] di ;
17 input          wr ,sel ;
18
19 output [7:0] da ;
20 output             noe ,intr ;
21
22 inout tri1 scl ;
23 inout tri1 sda ;
24
25 wire isda,iscl,osda,oscl ;
26
27 mi2c  U_mi2c(
28         .CLK (clock),
29         .NRST (reset),
30         .A (a),
31         .DI (di),
32         .WR (wr),
33         .SEL (sel),
34         .ISCL (iscl),
35         .ISDA (isda),
36         .DA (da),
37         .NOE (noe),
38         .INTR (intr),
39         .OSCL (oscl),
40         .OSDA (osda)
41         );
42
43 assign  iscl = scl ;
44 assign  isda = sda ;
45 assign  scl  = (oscl == 1‘d0) ? 1‘d0 : 1‘dz ;
46 assign  sda  = (osda == 1‘d0) ? 1‘d0 : 1‘dz ;
47
48
49 endmodule 

在modelsim中仿真可以看到,如果是高电平,会显示虚线,也就是弱上拉的意思。

小伙伴儿们,以后再也不用担心inout口了。

时间: 2024-10-08 01:20:04

在verilog中关于inout口的两种设计方法的相关文章

Windows Phone 8.1中安装包文件及其两种获取方法

Windows Phone中除了应用文件存储的三种文件类型:本地文件,漫游文件,临时文件.还有一种文件叫做安装包 文件,它是指应用程序编译之后生成的部署文件的内部数据.在安装包下的文件数据其实就是应用程序项目中添加的 文件,就比如Assets文件夹里面的图片文件等等.我们可以通过代码获取安装包下的文件,但是获取不到编译的文件 (源代码或者资类的文件). 那么哪些数据应该放到安装包文件中,哪些数据应该放到应用文件中呢?两种文件的地址和获取方式是不一样的,但 是获取的思想是一样的.应用文件的获取方式

关于mybatis中的实体类属性与数据库中的列名不一致的两种解决方法

1.我们都知道,在mybatis中写实体类的时候,是按照数据库中的列名来给实体类定义属性的,举个例子: public class User implements Serializable { private Integer id; private String username; private String address; private String sex; private Date birthday; } 2.但是,如果我们在定义实体类的时候,实体类中的属性与数据库列名不一致呢?比如:

HTML中设置背景图的两种方式

HTML中设置背景图的两种方式 1.background    background:url(images/search.png) no-repeat top; 2.background-image    background-image:url(images/search.png):    background-repeat:no-repeat;

action中请求参数获取的两种方式

action中请求参数获取的两种方式 1.属性驱动? a.直接在 action 类中提供与请求参数匹配属性,提供 get/set 方法? b.在 action 类中创始一个 javaBean,对其提供 get/set ,在请求时页面上要进行修改,? 例如 user.username user.password ,要使用 ognl 表达式? 以上两种方式的优缺点:? 第一种比较简单,在实际操作我们需要将 action 的属性在赋值给模型(javaBean)去操作? 第二种:不需要在直接将值给 ja

shell中逻辑与的两种表示方法

bash中表示逻辑与的两种方法: (1)[ $state == "running" -a $name == "zone1" ] (2)[[ $state == "running" && $name == "zone1" ]] ksh中支持第二种. 实例: #! /bin/bash read -p "pelease input your name:" name read -p "pl

Ajax中的get和post两种请求方式的异同

Ajax中我们经常用到get和post请求.那么什么时候用get请求,什么时候用post方式请求呢? 在做回答前我们首先要了解get和post的区别.   1. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到.post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址.用户看不到这个过程.   2. 对于get方式,服务器端用Request.QueryS

MVC4.0中下来列表框的,两种使用方法DropDownList

后台控制器代码 public ActionResult Drop() { var list = new List<SchoolInfo>(); list.Add(new SchoolInfo() { SchoolID = 1, SName = "北京大学" }); list.Add(new SchoolInfo() { SchoolID = 2, SName = "上海大学" }); var model = new UserViewInfo(); mod

strus2中获取表单数据 两种方式 属性驱动 和模型驱动

strus2中获取表单数据 两种方式 属性驱动 和模型驱动 属性驱动 /** * 当前请求的action在栈顶,ss是栈顶的元素,所以可以利用setValue方法赋值* 如果一个属性在对象栈,在页面上可以根据name属性进行回显*/ /** * 属性驱动实现的条件:* 1.当前请求的action在栈顶,所以action中的属性就暴漏出来了* 2.获取页面上表单的元素,整合成一个map * 3.调用setValue方法赋值*/ 1 package cn.itcast.struts2.sh; 2 3

解决jquery中动态新增的元素节点无法触发事件的问题有两种解决方法

解决jquery中动态新增的元素节点无法触发事件的问题有两种解决方法,如下: 为了达到更好的演示效果,假设在某个页面的body下有以下结构的代码: ? 1 2 3 4 5 6 7 8 9 10 11 <p id="pLabel">新加一条</p> <ul id="ulLabel">  <li class="liLabel">aaa1</li>  <li class="li