近似加法器Word文档格式.docx
- 文档编号:16193308
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:15
- 大小:278.58KB
近似加法器Word文档格式.docx
《近似加法器Word文档格式.docx》由会员分享,可在线阅读,更多相关《近似加法器Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
其最大的特点是运算速度慢。
一、实验内容
1、对近似加法器进行逻辑设计
2、对设计进行matlab仿真和信噪比分析
3、对设计进行VHDL仿真
二、实验结果
Matlab综合设计图
1、总体设计
总体设计的设计图如下:
如图所示,如图所示,1、2产生二个高斯随机数,4、5、6、7将高斯随机数的输出转换为bits的格式,其中7和8是两个不同的加法器。
两个加法器都采用3个近似加法器和5个全加器进行8bit近似加法器的设计。
其中7是不带纠错电路的加法器,而8是带有纠错电路的加法器,它们对相同信号进行处理得到不同的结果。
9和10是将二进制的输出转换成为十进制。
11和12得到输出。
加法器7的设计图如下
左边3个是近似加法器,右边5个是全加器。
加法器8的设计图如下
上面多了四个纠错电路,是对三个近似加法器的结果进行修正。
其中采用的近似加法器为:
其中全加器的实现如下:
纠错电路:
Matlab仿真结果求信噪比程序:
sum0=0;
fori=1:
10000
sum0=sum0+(simout0(i)-128)^2;
end
sum=0;
sum=sum+(simout(i)-128)^2;
d0=sum0/10000;
x0=20*log(128/9)/log(10)-20*log(128/d0)/log(10);
d=sum/10000;
x=20*log(128/9)/log(10)-20*log(128/d)/log(10);
其中x0得到的是通过不含纠错电路的加法器7计算得到的信噪比,x是得到的是通过含纠错电路的加法器8计算得到的信噪比。
输出结果:
由于近似加法器是为了提升速度对二进制信号做加法时的进位进行近似处理为求得速度的提升,所以其会有计算的偏差,这就是信噪比相对较大的原因。
纠错后效果变差,信噪比变高,分析原因可能是论文中的纠错电路是针对均匀分布的信号,而实验中是高斯分布的信号。
2、VHDL仿真
总时延是11ns(含纠错电路),效果达到要求。
Summary如下:
Vhdl程序:
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
--Uncommentthefollowinglibrarydeclarationifusing
--arithmeticfunctionswithSignedorUnsignedvalues
--useIEEE.NUMERIC_STD.ALL;
--Uncommentthefollowinglibrarydeclarationifinstantiating
--anyXilinxprimitivesinthiscode.
--libraryUNISIM;
--useUNISIM.VComponents.all;
entityapp_addersis
port(
A,B:
instd_logic_vector(7downto0);
S:
outstd_logic_vector(7downto0));
endapp_adders;
architectureBehavioralofapp_addersis
signalcout:
STD_LOGIC_VECTOR(0to7);
COMPONENTapp
PORT(
a:
INstd_logic;
b:
cin:
cout:
OUTstd_logic;
s:
OUTstd_logic
);
ENDCOMPONENT;
COMPONENTfull
begin
FA1:
appPORTMAP(
a=>
A(0),
b=>
B(0),
cin=>
'
0'
cout=>
cout(0),
s=>
S(0)
);
FA2:
A
(1),
B
(1),
cout
(1),
S
(1)
FA3:
fullPORTMAP(
A
(2),
B
(2),
S
(2),
cout
(2)
FA4:
A(3),
B(3),
cout
(2),
S(3),
cout(3)
FA5:
A(4),
B(4),
cout(3),
S(4),
cout(4)
FA6:
A(5),
B(5),
cout(4),
S(5),
cout(5)
FA7:
A(6),
B(6),
cout(5),
S(6),
cout(6)
FA8:
A(7),
B(7),
cout(6),
S(7),
cout(7)
endBehavioral;
Testbehavior程序代码:
LIBRARYieee;
USEieee.std_logic_1164.ALL;
--USEieee.numeric_std.ALL;
ENTITYtestIS
ENDtest;
ARCHITECTUREbehaviorOFtestIS
--ComponentDeclarationfortheUnitUnderTest(UUT)
COMPONENTapp_adders
a:
INstd_logic_vector(7downto0);
b:
s:
OUTstd_logic_vector(7downto0)
ENDCOMPONENT;
--Inputs
signala:
std_logic_vector(7downto0):
=(others=>
);
signalb:
signalcin:
std_logic:
='
;
--Outputs
signals:
std_logic_vector(7downto0);
--Noclocksdetectedinportlist.Replace<
clock>
belowwith
--appropriateportname
--constant<
_period:
time:
=10ns;
--
BEGIN
--InstantiatetheUnitUnderTest(UUT)
uut:
app_addersPORTMAP(
a=>
a,
b=>
b,
s=>
s
--Clockprocessdefinitions
--<
_process:
process
--begin
--<
<
--waitfor<
_period/2;
1'
--endprocess;
--Stimulusprocess
stim_proc:
process
begin
--holdresetstatefor100ns.
a<
="
00111111"
b<
01000001"
cin<
waitfor100ns;
a<
01000010"
00111110"
01000000"
00111101"
01000101"
--waitfor<
_period*10;
--insertstimulushere
----wait;
endprocess;
END;
Matlab中选取了10000组数据进行计算。
从Matlab中的前十组数据中提取输入值(二进制),写入test的vhdl程序。
通过simulation仿真得到结果:
将matlab中workspace的高斯随机数和加法器7的前十组输出结果x0进行二进制转换。
A信号:
B信号:
S结果:
与simulation的仿真结果进行比较。
结果一致。
第二章总结与展望
运用VHDL和MATLAB进行程序的设计与编写,在学长与老师的指导下,总的来说进行的较为顺利,可以说这次课程设计主要帮助我熟悉了VHDL和MATLAB的相关操作并且帮助我复习巩固了二进制的数字运算以及门电路的相关知识,我希望在未来进行更多的VHDL设计,加强自己的能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 近似 加法器