当前位置: 首页 > 用户中心 > 常见问题提问 > 双向电路精介

在工程应用中,双向电路是设计者必须面对的问题。


使用VHDL语言设计FPGA时,经常会遇到很多接口控制电路的设计,例如FPGA与外部存储设备的接口电路设计、FPGA与DSP接口电路的设计、FPGA与CPU接口电路的设计等,其中数据总线的设计是不可避免的,而数据总线往往是双向的。因此,如何正确处理数据总线是进行时序逻辑电路设计的基础。

 


在程序设计过程中,双向信号既作为信号的输入又作为信号的输出。常见双向信号的模式有二种,第一种是双向信号作为一个信号的输入,作为另一信号的输出;第二种是双向信号既作为输出又作输入。经常用的数据总线就是第二种模式。要很好地进行双向电路的设计,关键在于实体部分必须对端口属性进行说明,端口属性必须为inout类型;在构造体内需要对输出信号进行有条件的高阻控制。


下面结合一段程序说明用VHDL编写数据总线时应注意的问题,第一种模式的双向信号编写与此类似。


DBus为数据总线,datal6(15 downto 0)和SA(18downto 0)为16位和19位的寄存器,dlyL和dlyH为datal6的使能端,AddrLReg、AddrMReg、AddrHReg为SA的使能端。


dlyL或dlyH为高电平时FPGA从数据总线上读取数据(延时量),锁存在数据寄存器datal6里;AddrLReg、AddrMReg、AddrHReg有1个为高电平时FPGA把状态寄存器SA的值送到数据总线上。

 

在双向电路程序设计中,DBus输入是普通的in类型,而在输出时需要加一定的控制条件来控制高阻状态。最后一句不可省去,它说明了双向信号的三态输出,更要注意when后面语句的条件限制,如果条件限制太宽就会错误占用双向信号总线,引起总线的误操作;如果条件限制太窄,输出寄存器的数据就不能正确地送到数据总线,引起数据的丢失。一般可以使用枚举法一一把用到的地址线罗列出来,表示只有在这样的地址线的情况下才会用到数据总线,否则其他状态对数据总线进高阻,表示不占用数据总线。

 




     加入我们    |     联系我们    |     官方微博    |     官方博客 京ICP备案12039486号     京公网安备110114001125号