encounter 发表于 2010-6-28 00:15:08

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 ;

CTT 发表于 2010-6-28 01:47:38

不对嘛,Y声明的是STD_LOGIC,怎么可以给它赋100和001呢,应该把Y声明为STD_LOGIC_VECTOR(2 DOWNTO 0),并且Y<="100",Y<="001"

usb 发表于 2010-6-28 02:48:39

lz 的意思是想设计一个组合电路吧,但是你的毛病就出在这里面<br>
<br>
ELSIF a&lt;b THEN<br>
y&lt;='001';<br>
<br>
在组合电路的最后if 语句必须要用else<br>
<br>
else a&lt;b then<br>
y &lt;= "001"<br>
<br>
只有是时序电路的情况下 iif语句后面的else才可以省略<br>
<br>
还有就是向量是用这个" " 不是单引号

encounter 发表于 2010-6-28 04:45:24

LIBRARY IEEE;<br>
USE IEEE.STD_LOGIC_1164.ALL;<br>
<br>
ENTITY cmp IS<br>
PORT<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; (a : IN STD_LOGIC;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;b : IN STD_LOGIC;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;y:&nbsp;&nbsp;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&gt;b THEN<br>
y&lt;="100";<br>
ELSIF a=b THEN<br>
y&lt;="010";<br>
ELSE a&lt;b THEN<br>
y&lt;="001";<br>
END IF;<br>
END PROCESS;<br>
END&nbsp; &nbsp; one ;

inter 发表于 2010-6-28 04:49:56

谢谢大家了,我还是个新手,希望以后多多指教.

HDL 发表于 2010-6-28 04:59:04

不同意4楼.判断条件时怎么能用ELSE呢,用回ELSIF才对.<br>
版主要多 看看书.这些东西实在不应该错吧.<br>
我也是新手.嘿嘿!
页: [1]
查看完整版本: verilog不知道对不?