verilog不知道对不?
本帖最后由 fpgaw 于 2010-7-6 06:28 编辑LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY cmp IS
PORT(a,b:IN STD_LOGIC;
y:OUT STD_LOGIC);
END ENTITY cmp ;
ARCHITECTURE one OF cmp IS
BEGIN
PROCESS(a,b)
BEGIN
IF a>b THEN
y<='100';
ELSIF a=b THEN
y<='010';
ELSIF a<b THEN
y<='001';
END IF;
END PROCESS;
ENDARCHITECTUREone ; 不对嘛,Y声明的是STD_LOGIC,怎么可以给它赋100和001呢,应该把Y声明为STD_LOGIC_VECTOR(2 DOWNTO 0),并且Y<="100",Y<="001" lz 的意思是想设计一个组合电路吧,但是你的毛病就出在这里面<br>
<br>
ELSIF a<b THEN<br>
y<='001';<br>
<br>
在组合电路的最后if 语句必须要用else<br>
<br>
else a<b then<br>
y <= "001"<br>
<br>
只有是时序电路的情况下 iif语句后面的else才可以省略<br>
<br>
还有就是向量是用这个" " 不是单引号 LIBRARY IEEE;<br>
USE IEEE.STD_LOGIC_1164.ALL;<br>
<br>
ENTITY cmp IS<br>
PORT<br>
(a : IN STD_LOGIC;<br>
b : IN STD_LOGIC;<br>
y: OUT STD_LOGIC_VECTOR(2 DOWNTO 0)<br>
);<br>
END ENTITY cmp ;<br>
<br>
ARCHITECTURE one OF cmp IS<br>
BEGIN <br>
PROCESS(a,b)<br>
BEGIN<br>
IF a>b THEN<br>
y<="100";<br>
ELSIF a=b THEN<br>
y<="010";<br>
ELSE a<b THEN<br>
y<="001";<br>
END IF;<br>
END PROCESS;<br>
END one ; 谢谢大家了,我还是个新手,希望以后多多指教. 不同意4楼.判断条件时怎么能用ELSE呢,用回ELSIF才对.<br>
版主要多 看看书.这些东西实在不应该错吧.<br>
我也是新手.嘿嘿!
页:
[1]