4681|13

824

帖子

3

TA的资源

版主

楼主
 

Verilog关于inout端口电路的设计与仿真 [复制链接]

 

// 模块功能说明
// 当方向控制信号“wr_”为“1”时,y_作为输出,值为输入信号a_的值
// 当方向控制信号“wr_”为“0”时,y_作为输入,输出信号b_值为信号y_的值

module bidirection_gate1(
	input			a,
	input			wr,
	output			b,
	inout			y 
    );
    assign y = wr ? a : 1'bz;
    assign b = wr ? 1'bz : y;
endmodule

    仿真激励文件编写:初学FPGA发现存在inout端口,这时在编写仿真激励文件时犯难了,应该定义该端口为input的reg型,还是output的wire型?这里记录一下学习过程

    首先将需要测试模块的input端口都定义成reg型,output端口定义成wire型,然后再定义inout端口的类型为reg,并对每个inout端口定义一个wire型寄存器映射。

    现在看此例程:input端口a,wr设置为reg型,output端口b 设置为wire型,inout端口y设置成reg型,并配一个wire型寄存器映射y_wire。:

 对输入信号赋初值:

   对wr使能信号和inout端口赋值(这里是重点):

 使能信号wr每隔100变换一次状态这个不必多说,方便看每种状态时的测试信号。y_wire为inout端口,需要将它传入被测模块的inout端口。根据功能描述,当wr为1时inout端口作为输出,需要将其状态变为高阻态;当wr为0时inout端口作为输入,其值y的值,是我们的激励信号。

接下来进行仿真:

     波形信号,a为输入,b 为输出,wr 为输入控制信号,y(注意此y非彼y,这个y只是我们的激励信号y不是传入模块的y),y_wire是传入模块y端口的信号。从仿真波形可知wr为1时inout端口作为输出,输出值为a的值,从波形可以发现输出inout端口为输出(即y_wire为输出),其值与a一致;当wr为0时,inout端口作为输入,其输出值为y(即我们给的激励信号y波形的值,此时的输出端口为b),wr为0时,从波形可以看出输出信号b,inout端口作为输入的信号y_wire的值与y一致 。

以下为仿真测试文件:

// bidirection_gate
module tb_train_demo();
	// inputs
	reg		a;
	reg		wr;
	// outputs
	wire		b;
	// inout
	reg		y;
	wire	y_wire;
	
      
bidirection_gate1 u_bidirection_gate1(
	.a(a),
	.wr(wr),
	.y(y_wire),
	.b(b)
    );
    
	initial begin
		a = 0;
		wr = 1;
		y = 0;
		while(1)begin
			#5;
			a = {$random};
			y = {$random};
		end
	end
	always #100 wr = ~ wr;
	assign y_wire = wr ? 1'bz : y;
endmodule

 

最新回复

学习中,谢谢  详情 回复 发表于 2023-1-30 13:29
点赞 关注
 

回复
举报

824

帖子

3

TA的资源

版主

来自 11楼
 
 

回复

6787

帖子

2

TA的资源

版主

沙发
 

FPGA的inout确实不太好理解,IIC的SDA就是这个模式的。

点评

是的,刚开始就有点懵,不知道咋写仿真文件     。  详情 回复 发表于 2022-8-1 16:47
 
 
 

回复

824

帖子

3

TA的资源

版主

板凳
 
wangerxian 发表于 2022-8-1 16:06 FPGA的inout确实不太好理解,IIC的SDA就是这个模式的。

是的,刚开始就有点懵,不知道咋写仿真文件

 

 

点评

是啊,不过FPGA真的是超牛!  详情 回复 发表于 2022-8-1 17:43
 
 
 

回复

6787

帖子

2

TA的资源

版主

4
 
1nnocent 发表于 2022-8-1 16:47 是的,刚开始就有点懵,不知道咋写仿真文件     。

是啊,不过FPGA真的是超牛!

 
 
 

回复

25

帖子

3

TA的资源

一粒金砂(中级)

5
 
学习了,说明的非常详细,感谢
 
 
 

回复

19

帖子

2

TA的资源

一粒金砂(中级)

6
 
这篇介绍的比较详细有用,现在fpga发展比较快,这里总结的很好,有参考价值。
 
 
 

回复

706

帖子

0

TA的资源

纯净的硅(高级)

7
 

我现在也学到这里来了,也不知道怎么写仿真文件,还在学习中.

 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

8
 

使能控制in或者out

 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

9
 

过来学习学习,虽然不懂,但是能感觉到楼主很厉害的样子呢。

 
 
 

回复

706

帖子

0

TA的资源

纯净的硅(高级)

10
 

正在学习中,刚开始没明白仿真文件的编写,现在明白了一点点,也会写一点,但还不精通,继续学习!

 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

12
 

谢谢分享

 
 
 

回复

26

帖子

3

TA的资源

一粒金砂(中级)

13
 

例程不错的,可以学习下。学习FPGA还是要多看多练习多实践。。。。。

 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(初级)

14
 
学习中,谢谢
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表