有很多的小问题啊,例如co <= '0',so <= '0'这两句应该用分号隔开。例如你定义了一个ab信号却没有用到。例如定义了D是一个三位的二进制,而D:=0这样赋值肯定不行,要D:="000"。例如D:=(a+b)中的+号没有对应的库文件是用不了的,ieee没有定义+号。
以下是修改好的程序,实现半加器的功能:
LIBRARY IEEE
USE IEEE.STD_LOGIC_1164.ALL
--USE IEEE.STD_LOGIC_unsigned.ALL
--USE IEEE.STD_LOGIC_ARITH.ALL
ENTITY if_adder IS
PORT (a,b : IN STD_LOGIC
co, so : out STD_LOGIC)
END ENTITY if_adder
ARCHITECTURE fh1 OF if_adder is
signal ab : STD_LOGIC_vector(1 downto 0)
BEGIN
ab<=a&b
PROCESS(ab)
BEGIN
case ab is
when "00"=>so<='0'co<='0'
when "01"=>so<='1'co<='0'
when "10"=>so<='1'co<='0'
when "11"=>so<='0'co<='1'
end case
END PROCESS
END ARCHITECTURE fh1
EVENT是表示当一个事件发生了,但是VHDL里面要求必须说明到底发生了什么事,VHDL才能根据发生的事情 来做判断!你只给出了一个EVENT VHDL不知道是发生什么事情,所以它不能判断!!! 换句通俗的话说,VHDL不支持无知的发生事件!时钟变化有包括上升和下降,还有没变,if clk'event and clk='1' 表示上升
同样的 clk'event and clk='0'表示下降 再加个else 就表示没变化了
1.library UNISIMuse UNISIM.VComponents.all这两个东西貌似无法使用。UNISIM是xilinx的库函数,如果你用第三方的仿真软件,就需要把xilinx的库编译进仿真软件库中
例如modelsim,xilinx软件中可以直接编译
2.怎么使用组件?
这个你看看语法吧,在这没法一点点跟你介绍
3.预设的非门的端口为not,与关键字重名,怎么办?
信号名一定不能起与保留关键字一样的,修改一下吧,例如my_not
4.预设的and3门的输出端名字也为out,怎么办?
同3
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)