interi 发表于 2010-6-28 00:40:42

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

本帖最后由 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]
查看完整版本: VHDL程序编译通过,可是我需要的 端口被忽略,怎么办?谢谢了!