vhdl中怎么实现多行注释掉,就是暂时不用那一块

vhdl中怎么实现多行注释掉,就是暂时不用那一块,第1张

这个要看你用的什么编辑器了,

一般来说,如果是FPGA公司的开发环境软件(QUARTUS,ISE等),都是自带多行注释功能的,左键选中多行,右键里就有这个选项。

如果你用的是其他文本编辑软件,就要看了,WIN下的文本编辑器是没这功能的,LINUX下GEDIT这种也是没有这个功能的,LINUX下推荐VIM,不仅有这个功能,还能自设热键。

LIBRARY IEEE

USE IEEE.STD_LOGIC_1164.ALL

USE IEEE.std_logic_arith.all

USE IEEE.std_logic_unsigned.all---调用常用的库

ENTITY add8b IS

PORT(

clk:IN STD_LOGIC ---时钟信号

cin: IN STD_LOGIC ---相加进位信号

a,b:IN STD_LOGIC_VECTOR(7 DOWNTO 0)-----两个8位的二进制数

s:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ----输出

cout:OUT STD_LOGIC)

END

ARCHITECTURE cheng OF add8b IS

SIGNAL adda1,adda2,addb1,addb2,reg1a,reg1b,add1,add2:STD_LOGIC_VECTOR(4 DOWNTO 0)

SIGNAL reg2:STD_LOGIC_VECTOR(3 DOWNTO 0)

SIGNAL cin1:STD_LOGIC

BEGIN

PROCESS(clk)

BEGIN

IF clk'EVENT AND clk='1' THEN

adda1<='0'&a(3 DOWNTO 0)----adda1是a的低4位

addb1<='0'&b(3 DOWNTO 0)-----addb1是b的低4位

adda2<='0'&a(7 DOWNTO 4)------adda2是a的高4位

addb2<='0'&b(7 DOWNTO 4)------addb2是b的高4位

cin1<=cin

END IF

END PROCESS

PROCESS(CLK)

BEGIN

IF clk'EVENT AND clk='1' THEN

add1<=adda1+addb1+cin1 ---低4位相加放入add1 注意考虑是否有进位

reg1a<=adda2

reg1b<=addb2

END IF

END PROCESS

PROCESS(CLK)

BEGIN

IF clk'EVENT AND clk='1' THEN----高4位相加,考虑低4位相加的进位

add2<=reg1a+reg1b+add1(4)

reg2<=add1(3 DOWNTO 0)

END IF

END PROCESS

s<=add2(3 DOWNTO 0)&add1(3 DOWNTO 0)----结果是高四位与低四位并置

cout<=add2(4)---是否有进位

END cheng

第二个 只需要搞清 二进制数的乘法原理就可以了 两个4位二进制数相乘,如a=1010,b=1111 那么可以看成是1010*(1000+0100+0010+0001),结果等于 将1010左移三位加上1010左移两位,加上1010左移1位加上1010不移位

就是结果

y<=("0000"&c0)+("000"&c1&'0')+("00"&c2&"00")+('0'&c3&"000")

第一个是不移动 第二个是b低二位与a相乘左移1位 第三是b低3位 与a相乘左移两位,第四是b最高位与a相乘左移三位 结果相加


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

原文地址: http://www.outofmemory.cn/bake/11902826.html

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

发表评论

登录后才能评论

评论列表(0条)

保存