集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2530|回复: 6

VHDL程序编译通过,可是我需要的 端口被忽略,怎么办?谢谢了!

[复制链接]
interi 发表于 2010-6-28 00:40:42 | 显示全部楼层 |阅读模式
本帖最后由 fpgaw 于 2010-7-6 05:22 编辑

程序如下,编译通过,可是我需要的 端口被忽略,怎么办?在仿真的时候我再加入可以吗?请大家指教,谢谢!!!
--OUPPUT.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY OUTPUT IS
  PORT( CLKIN:IN STD_LOGIC;
    ADCABCP2,ADCABCP5:IN STD_LOGIC_VECTOR(2 DOWNTO 0);
ERROR0:IN STD_LOGIC;
    OPEN_CLOSE:IN STD_LOGIC;
    TILT:IN STD_LOGIC;
    MOTOR11P2,MOTOR12P2,MOTOR21P2,MOTOR22P2:IN STD_LOGIC;
    MOTOR11P5,MOTOR12P5,MOTOR21P5,MOTOR22P5:IN STD_LOGIC;
    MOTOR11_OUT,MOTOR12_OUT:OUT STD_LOGIC;
    MOTOR21_OUT,MOTOR22_OUT:OUT STD_LOGIC;
    ADCABC00:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));

END ENTITY OUTPUT;
ARCHITECTURE ART OF OUTPUT IS
SIGNAL OPEN_CLOSE0,TILT0:STD_LOGIC;
BEGIN
OPEN_CLOSE0<=OPEN_CLOSE;
TILT0<=TILT;
P7: PROCESS(CLKIN) IS
BEGIN
IF(ADCABCP2="000" OR ADCABCP5="000")THEN         --通道0选择输出

ADCABC00<="000";
ELSIF(ADCABCP2="001" OR ADCABCP5="001")THEN     
    --通道1选择输出
   ADCABC00<="001";
END IF;
IF(ERROR0='0')THEN                         --D―正常情况下输出
   IF(MOTOR11P2='1' OR MOTOR11P5='1')THEN         
    --水平马达正方向转动
   MOTOR11_OUT<='1';
   ELSE
   MOTOR11_OUT<='0';
   END IF;
IF(MOTOR12P2='1' OR MOTOR12P5='1')THEN
   MOTOR12_OUT<='1';       --水平马达反方向转动
   ELSE
   MOTOR12_OUT<='0';
   END IF;
   IF(MOTOR21P2='1' OR MOTOR21P5='1')THEN
   MOTOR21_OUT<='1';  -- 翻转马达正方向转动
   ELSE
   MOTOR21_OUT<='0';
END IF;
   IF(MOTOR22P2='1' OR MOTOR22P5='1')THEN
   MOTOR22_OUT<='1';   -- 翻转马达反方向转动
   ELSE
   MOTOR22_OUT<='0';
   END IF;
ELSIF(ERROR0='1')THEN -- 异常情况下对输出清零
MOTOR11_OUT<='0';
   MOTOR12_OUT<='0';
   MOTOR21_OUT<='0';
   MOTOR22_OUT<='0';
END IF;
END PROCESS P7;
END ARCHITECTURE ART;
ngtim 发表于 2010-6-28 01:52:47 | 显示全部楼层
紧急啊,后天要收毕业初稿了,波形编辑总是过不去,请大家帮个忙吧,谢谢了!
encounter 发表于 2010-6-28 03:02:35 | 显示全部楼层
端口被忽略了,是因为没有被驱动,所以会被自动优化掉。查查程序吧。
UFO 发表于 2010-6-28 03:07:16 | 显示全部楼层
楼上的,什么情况下会没有被驱动<br>
<br>
一直弄不懂<br>
<br>
能不能说一下
CHA 发表于 2010-6-28 03:53:03 | 显示全部楼层
你先说说是哪个端口被忽略了,然后顺藤摸瓜,看看有哪个部分与之有关,具体为若是输入端口看是否有与之相关的输出端口相对应;反之亦然
longtime 发表于 2010-6-28 05:24:15 | 显示全部楼层
OPEN_CLOSE0&lt;=OPEN_CLOSE;<br>
&nbsp;&nbsp;TILT0&lt;=TILT;<br>
这两个signal只进不出,不知所谓呀一点用处没有<br>
<br>
process(信号列表);信号列表最好包括所有在这个process里面读取的信号<br>
<br>
你的clock列进信号列表里面但是没有作用啊<br>
可以用<br>
<br>
if clk'event and clk='1' then<br>
或者<br>
wait until clk'event and clk='1'<br>
下面再跟进你自己的逻辑
longtim 发表于 2010-6-28 06:44:05 | 显示全部楼层
你是不是学verilog和vhdl学混了呵呵
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-4-30 21:00 , Processed in 0.070018 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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