导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→编译错误请教[飞天一剑]

 *第24072篇: 编译错误请教

  
楼 主:飞天一剑 2004年7月24日17:29
 编译错误请教
我运行后有错误,调了半天还是搞不定,没办法,只好请教各位高手了!
我把完整程序发上来,请各位高手指正!!! 
library IEEE;                     
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;
use IEEE.Std_logic_unsigned.all; 

Entity part1 is 
Port(busy : IN   std_logic;
  data_ad: in   STD_LOGIC_VECTOR(15 DOWNTO 0);
    data : out  STD_LOGIC_VECTOR(15 DOWNTO 0));
end part1; 

architecture rtl of part1 is
signal   q1 : STD_LOGIC_VECTOR(15 DOWNTO 0) ;
signal   q3 : STD_LOGIC_VECTOR(19 DOWNTO 0) : ="00000000000000000000" ;
signal   q4 : STD_LOGIC_VECTOR(19 DOWNTO 0) : ="00000000000000000000" ;
signal   q5 : STD_LOGIC_VECTOR(19 DOWNTO 0) : ="00000000000000000000" ;
signal   q6 : STD_LOGIC_VECTOR(19 DOWNTO 0) ;
constant a3 : STD_LOGIC_VECTOR(19 DOWNTO 0) : ="00100000000000000100";       -- -917500的二进制补码;
constant m  : time := 1 us ;
begin 

process (busy)
variable q2 : STD_LOGIC_VECTOR(15 DOWNTO 0) ;
begin
 if(busy'event and busy ='1')then
    q1  <= data_ad after m;
    if(q1   < "1000111101011100")then                  
     q2(15 DOWNTO 0):="0000000000000000";
    elsif(q1>  "1010001111010110")then                 
     q2(15 DOWNTO 0):="1111111111111110";
    else                                             --数值范围变换;
       q3(15 DOWNTO 0)  <=q1;
       q4(19 DOWNTO 4)  <=q3(15 DOWNTO 0);               -- 左移四位;
       q5(18 DOWNTO 3)  <=q3(15 DOWNTO 0);               --左移三位; 
       q6  <=q3+q4+q5+a3;                                
       q2(15 DOWNTO 0):= q6(16 DOWNTO 1);              --右移一位;
   end if;
 end if;
end process;
data  <= q2(15 DOWNTO 0);
end rtl;

 

 

  
2楼:dali_ly 2004年7月27日09:35
 LIBRARY IEEE;       
LIBRARY IEEE;                     
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;
USE IEEE.Std_logic_unsigned.ALL; 

Entity part1 is 
 Port
 (
    busy  : IN   std_logic;
    data_ad : in   STD_LOGIC_VECTOR(15 DOWNTO 0);
       data  : out  STD_LOGIC_VECTOR(15 DOWNTO 0)
 );
end part1; 

architecture rtl of part1 is
 signal   q1 : STD_LOGIC_VECTOR(15 DOWNTO 0) ;
 signal   q3 : STD_LOGIC_VECTOR(19 DOWNTO 0) :="00000000000000000000" ;
 signal   q4 : STD_LOGIC_VECTOR(19 DOWNTO 0) :="00000000000000000000" ;
 signal   q5 : STD_LOGIC_VECTOR(19 DOWNTO 0) :="00000000000000000000" ;
 signal   q6 : STD_LOGIC_VECTOR(19 DOWNTO 0) ;
 constant a3 : STD_LOGIC_VECTOR(19 DOWNTO 0) :="00100000000000000100";       -- -917500的二进制补码;
 constant m  : time := 1 us ;
begin 

process (busy)
 variable q2 : STD_LOGIC_VECTOR(15 DOWNTO 0) ;
begin
  if (busy'event and busy ='1') then
     q1   <= data_ad after m;

     if (q1   < "1000111101011100") then                  
       q2(15 DOWNTO 0) := "0000000000000000";
     elsif (q1>  "1010001111010110") then                 
       q2(15 DOWNTO 0) := "1111111111111110";
     else                                             -- 数值范围变换;
         q3(15 DOWNTO 0)  <=q1;
         q4(19 DOWNTO 4)  <=q3(15 DOWNTO 0);            -- 左移四位;
         q5(18 DOWNTO 3)  <=q3(15 DOWNTO 0);            -- 左移三位; 
         q6   <= q3+q4+q5+a3;                                
         q2(15 DOWNTO 0) := q6(16 DOWNTO 1);          -- 右移一位;
     end if;
  end if;

 data   <= q2(15 DOWNTO 0);
 
end process;

end rtl;

---------------------------------------------------------------------------------------------------------------------
编译已能通过,你自己看看改了哪些吧!


>>>>>>对该主题发表你的看法

本主题贴数2,分页: [第1页]


[上一篇主题]:找北京硬件测试职位(女)

[下一篇主题]:谁有VGA 的15针接头(母)的尺寸图啊!!