[转载]关于vhdl中的inout
(2016-05-07 20:03:57)
标签:
转载 |
分类: FPGAandIC |
原文地址:关于vhdl中的inout作者:eric
1、vhdl中端口有五种模式,但实际中只用四种:in,out,buffer,inout。由于buffer型在与其他模块连接的时候比较困难,所以也很少用。
当一个端口既做输出也做输入的时候,我们将其模式申明为inout类型。这个类型也是vhdl中最有难度的一个类型。
对于双向端口,做输出且空闲时,必须将其设置为高阻态挂起,否则会造成端口死锁。
if condition1 then
data
<= ...
else
data
<= (others => 'Z');
做输出的时候都要写成类似这样的代码。
当做有效输入时,它的输出必须处于高阻态。
reg <= data when condition2 else
reg <= (others => '1');
也就是说当在condition2的时候,data的out模式必须处于高阻态。
自己认为data的out模式和in模式的逻辑是两条并行的线路,但是会互相影响。实际中肯定是一条线,是为了节省管脚才有的inout模式。
2、还有发现,vhdl中的是不区分大小写的,但是对于常数好像又是区分的(指的是std_logic中的Z、U等)。
当一个端口既做输出也做输入的时候,我们将其模式申明为inout类型。这个类型也是vhdl中最有难度的一个类型。
对于双向端口,做输出且空闲时,必须将其设置为高阻态挂起,否则会造成端口死锁。
if condition1 then
else
做输出的时候都要写成类似这样的代码。
当做有效输入时,它的输出必须处于高阻态。
reg <= data when condition2 else
reg <= (others => '1');
也就是说当在condition2的时候,data的out模式必须处于高阻态。
自己认为data的out模式和in模式的逻辑是两条并行的线路,但是会互相影响。实际中肯定是一条线,是为了节省管脚才有的inout模式。
2、还有发现,vhdl中的是不区分大小写的,但是对于常数好像又是区分的(指的是std_logic中的Z、U等)。

加载中…