<br />这是程序的源代码<br />library IEEE;<br />use IEEE.std_logic_1164.all;<br />use IEEE.std_logic_unsigned.all;<br />ENTITY General_decoder is<br />generic(sel_size:integer:=3;<br /> out_size:integer:=8);<br /> port(sel:in std_logic_vector(sel_size-1 downto 0);<br /> en:in std_logic;<br /> Y:out std_logic_vector(out_size-1 downto 0));<br />end General_decoder;<br />ARCHITECTURE rtl of General_decoder is<br />begin<br /> process(sel,en)<br /> begin<br /> Y<=(others=>'1');<br /> <b>for i in y'range loop</b><br /> if(en='1'and(conv_integer(sel))=i)then<br /> y(i)<='0';<br /> end if;<br /> end loop;<br /> end process;<br /> end rtl;<br />请看我加黑那一行,那个for loop循环语句 里面的"i"上面没有定义,为什么程序里面还能用?而且y那里为什么用range?还加上了一个 ' 这是为什么?他为什么不用array?程序上面定义的y是从高到低,那应该用array才对啊?但是即使是这样程序反而还能编译通过,后来我试验改成array也可以编译通过,但是你把那个 ' 去掉了他就编译通不过了,这是为什么? |
|