CTT 发表于 2010-6-26 01:57:29

CPLD的IO口怎么互相赋值?

CPLD的IO口怎么互相赋值?
设置IO1,IO3为输出,IO2,IO4为输入
比如说要把IO1的值赋给IO2,IO3的值赋给IO4,应该怎么做?
是设定一个信号,在进程里把IO1,IO3的值先赋给信号,然后再把信号的值赋给IO2,IO4吗?
这样的话,应该会有延时吧,如果设置一个变量的话,我实验过了,也不行
代码如下
PROCESS(CLK)
VARIABLE k: std_logic_vector(1 downto 0);
BEGIN         
IF (CLK'event and CLK='1') THEN
    k(0):=IO1;
    k(1):=IO3;
    IO2<=k(0);
    IO4<=k(1);
END IF;
END PROCESS;

CHANG 发表于 2010-6-26 03:32:51

这是个基本知识:输出信号是不能作为输入用的,即不能向其它信号赋值;输入信号是不能作为输出用的,即不能接受其它信号的赋值。<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;要想将输出信号反馈回来也很简单,只要将要输出的信号用一个signal保存,由这个signal输出到IO1和IO3,内部直接取用这个signal就可以了。或者由外部电路来短接这些端口,内部就不用管了。

HANG 发表于 2010-6-26 04:54:03

我就是这么做的啊<br>
下把输出信号IO1,IO3输出给signal保存,然后把signal输出给IO2,IO4

VVIC 发表于 2010-6-26 05:32:16

关注中!!!

CHANG 发表于 2010-6-26 06:42:33

如果真是那样做的还不行就奇怪了哈

ICE 发表于 2010-6-26 07:09:50

PROCESS(CLK)<br>
&nbsp;&nbsp;signal&nbsp;&nbsp;IO1_t,IO3_t: std_logic;<br>
&nbsp; &nbsp; BEGIN&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; IO1&lt;=IO1_t;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; IO3&lt;=IO3_t;<br>
  &nbsp;&nbsp;......<br>
IO1_t,IO3_t 就是楼主想要输出的东东了,在程序任何地方都可以访问生成的输出信号***_t 了<br>
IO2, IO4是别人给的输入怎么能赋值呢,楼主只要用的权力,没有赋的权利啊,呵呵.<br>
假设能赋:别人给1你给0那不是那不是电流超大,楼主心痛的片子就生烟了或爆炸了,呵呵......

interi 发表于 2010-6-26 07:59:07

楼上更正:<br>
architecture ......<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;IO1&lt;=IO1_t;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; IO3&lt;=IO3_t;<br>
&nbsp; &nbsp; process<br>
&nbsp; &nbsp; begin<br>
&nbsp; &nbsp; ......<br>
&nbsp; &nbsp; end process;<br>
end arch_......

VVC 发表于 2010-6-26 08:13:46

原帖由 FerrariTim 于 2007-1-29 11:20 发表<br>
我就是这么做的啊<br>
下把输出信号IO1,IO3输出给signal保存,然后把signal输出给IO2,IO4 你用的是变量保存输入值<br>
而变量是即时改变;<br>
虽然也用时钟沿打了一下<br>
但还是被VHDL语法禁止了

ICE 发表于 2010-6-26 08:31:26

你还是没有理解我的意思,7楼说的是正解。

VVC 发表于 2010-6-26 08:33:47

搂主时把输出口当输入口把输入口当输出口了<br>
<br>
搂住要仔细想想,既然IO1,IO3为输出口,那么它们必须首先从内部signal(A)获得数据再输出,<br>
IO2,IO4为输入口,那么必须从外部接受数据,再传给内部signal(B),<br>
<br>
搂主要把IO3赋值给IO4这样显然时部行的,可行的办法时 signal(A)赋值给signal(B)<br>
<br>
不知道我的解释是否准确??
页: [1] 2 3
查看完整版本: CPLD的IO口怎么互相赋值?