Verilog中的inout端口

总线总线操作

总线是模块之间数据流通的公共通道。适当的总线的位宽,配合适当的并行算术逻辑和步骤能显著提高专用信号处理逻辑电路的运算能力。
模块通过带控制端的三态门与总线进行连接。通过调整控制端的信号,来确定一段时间内,总线归哪些模块使用。但是任何时间段内,只能有一个模块进行发送,但可以有多个模块进行接收。

双向端口Inout

Inout是指该端口兼有input和output的属性,这两种属性不能同时使用。设计Inout的目的在于减少IO的开销。现在FPGA设计和外部存储器或CPU的数据交换频繁运用,同时引脚资源有限,使用双向端口设计可以成倍地节省数据引脚线。
在硬件上,通过三态门Buffer实现。具体电路如下图所示(摘自Xilinx Virtex-7 SelectIO UG471)
 Input/Output Buffer Primitive (IOBUF)
对于图中的IO pin,兼有input和Output的属性。
当T = 1时,IO(Device)的值来源于I(FPGA),处于输出状态。
当T = 0时,IO(Device)的值输出至O(FPGA),三态门处于关闭状态(高阻态)。

Inout总线接口的简单示例

module SampleOfBus
(
	input	        clk,
	input    	    wren,
	input	        link_bus	,	//向总线输出数据的控制电平
	inout	[11:0]	DataBus 		//总线双向端口

);
reg	[11:0]	outsigs;

assign DataBus = link_bus ? outsigs : 12'hzzz ;  //当link_bus为高电平时,总线将存于outsigs的计算结果输出。

// 当写使能信号wren至高时,将DataBus的数据+1,然后存入outsigs。
always @ (posedge clk) begin
  if(wren)
    outsigs <= DataBus + 12'd1 ;
  else
        ;
end
endmodule

控制信号的相互配合由状态机控制。
写这篇文章的出发点是,遇到总线端口,不清楚高阻态位宽描述。后续内容,看后面会遇到什么疑问再补充。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值