一个vhdl程序一般有五部分组成,它们分别是什么,都有什么作用。 大

一个vhdl程序一般有五部分组成,它们分别是什么,都有什么作用。 大,第1张

实体结构体,库,程序包,配置

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


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11859305.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存