求助vhdl源程序出错(寄存器)

来源:百度知道 编辑:UC知道 时间:2024/05/14 05:18:09
library ieee;
use ieee.std_logic_1164.all;
USE ieee.Std_logic_unsigned.ALL;
entity jcq is
port (
clr,clk,r:in std_logic;
d:in std_logic_vector(3 downto 0);
q:out std_logic_vector(3 downto 0));
end entity;
architecture one of jcq is
signal q_comb:std_logic;
begin
process(clk,r)
begin
if(r='1')then
q_comb<="0000";
elsif(clk'event and clk='1')then
q_comb<=d;
end if;
q<=q_comb;
end process;
end one;

16行,q_comb<="0000"; 有错吧。q_comb不是一个逻辑位吗?因此不能对它赋一个向量值啊。
把(signal q_comb:std_logic;)改为(signal q_comb:std_logic(3 downto 0);)正确的程序为:
library ieee;
use ieee.std_logic_1164.all;
USE ieee.Std_logic_unsigned.ALL;
entity jcq is
port (
clr,clk,r:in std_logic;
d:in std_logic_vector(3 downto 0);
q:out std_logic_vector(3 downto 0));
end entity;
architecture one of jcq is
signal q_comb:std_logic_vector(3 downto 0);
begin
process(clk,r)
begin
if(r='1')then
q_comb<="0000";
elsif(clk'event and clk='1')then
q_comb<=d;
end if;
q<=q_comb;
end process;
end one;

clr是干什么的

library ieee;
use ieee.std_logic_1164.all;
USE ieee.Std_logic_unsigned.ALL;
entity jcq is
port (
clk,r:in std_logic;
d:in std_logic_vector(3 downto 0);
q:out std_lo