
1、实体:用于描述所设计系统的外部接口特性;即该设计实体对外的输入、输出端口数量和端口特性。
2、结构体:用于描述实体所代表的系统内部的结构和行为;它描述设计实体的结构、行为、元件及内部连接关系。
3、库:存放已经编译的实体、构造体、程序包集合和配置。
4、程序包:存放各设计模块可以共享的数据类型、常数、子程序库。
5、配置实体对应多个结构体时,从与某个实体对应的多个结构体中选定一个作为具体实现。
std_logic_vector type does not match integer literal这个错误是说std_logic_vector类型与整形不匹配 主要原因是因为你的q1<= q1+1这句 std_logic_vector不能直接做加法运算。需要先转换成整型,运算之后再转换回来,这需要调用conv_integer 和 conv_std_logic_vector这两个函数。至于其他还有很多语法错误 不多赘述 我在程序中直接给你做了更改 注意if的匹配
LIBRARY IEEE
USE IEEE.STD_LOGIC_1164.ALL
USE IEEE.STD_LOGIC_ARITH.ALL --添加一个库 使用它里面的函数
USE IEEE.STD_LOGIC_UNSIGNED.ALL
ENTITY cnt315 IS
PORT(clk , clrn : IN STD_LOGIC
q : out std_logic_vector(11 downto 0)) --定义十二位
END cnt315
ARCHITECTURE one OF cnt315 IS
SIGNAL q1 : STD_LOGIC_VECTOR (3 downto 0)
SIGNAL q2 : STD_LOGIC_VECTOR (3 downto 0)
SIGNAL q3 : STD_LOGIC_VECTOR (3 downto 0)
BEGIN
PROCESS(clk,clrn)
--variable cnt : INTEGER RANGE 0 TO 315不知道你设这个变量干嘛
begin
if(clrn = '1') then
q1<= "0000"
q2<= "0000"
q3<= "0000"
elsif(clk'EVENT AND clk = '1') then
if q1= "0100" and q2= "0001" and q3= "0011" then
q1<= "0000"
q2<= "0000"
q3<= "0000"
elsif q1="1001" then
q1<= "0000"
if q2 = "1001" then
q2<= "0000"
q3<= conv_logic_vector(conv_integer(q3) + 1,4)--conv_logic_vector(x,y) x是value y是size
else
q2<= conv_logic_vector(conv_integer(q2) + 1,4)
end if
else
q1<= conv_logic_vector(conv_integer(q1) + 1,4)
end if
q <= q3&q2&q1
end if
end process
end one
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)