集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 8334|回复: 21

CPLD的IO口怎么互相赋值?

[复制链接]
CTT 发表于 2010-6-26 01:57:29 | 显示全部楼层 |阅读模式
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 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-21 07:48 , Processed in 0.117857 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表