乘法器论文_模拟乘法器论文
乘法器论文由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“模拟乘法器论文”。
桂林电子科技大学 FPGA实训报告
乘法器
学院(系): 电子信息工程系 专 业: 电子信息工程技术 学 号: 091222128 学生姓名: 指导教师:
桂林电子科技大学实训报告
目 录.1、引言……………………………………………………………………
2、摘要……………………………………………………………………
3、课程设计的性质和目的…………………………………………………
4、课程设计基本要求………………………………………………………
5、乘法器设计原理…………………………………………………………
6、乘法器设计心得体会……………………………………………………
7、谢辞………………………………………………………………………
8、参考文献…………………………………………………………………
9、附录………………………………………………………………………
桂林电子科技大学实训报告
引 言
随着微电子技术的飞速发展,集成电路工艺进入深亚微米阶段,特征尺寸变得越来越小。基于工艺水平提高,FPGA的容量变的越来越大,同时也集成了大量功能单元模块,如硬核处理器、数字信号处理器(Digital signal proceing,DSP)、专用乘法器等。在用FPGA作电路设计时,这些模块使得复杂化电路设计变得非常容易。因此,提升FPGA性能的根源在于提升这些专用模块的性能。
乘法器是硬核处理器、DSP、滤波器、高性能微控制器等器件中重要的运算部件之一。它能够提供强大的数学运算以进行实时性信号处理。同时,高性能乘法除了直接用于运算单元外还在图像、语音、加密等信号处理领域扮演着非常重要的角色。高性能乘法器的结构复杂、延时大、运算周期较长,往往处于系统的关键路径上。特别是在DSP中,乘法累加运算的实现速度几乎完全决定着数字信号处理的速度。而在一般的硬核处理器中完成一次乘法运算所需要的时间也基本上决定了硬核处理器的工作频率。因此,设计优化乘法器的结构将大大大改善整个
桂林电子科技大学实训报告
摘 要
在集成电路设计领域中,各类微处理器已经成为了整个芯片系统的核心,人们对其性能要求越来越高,使得微处理器中的每一个部件的性能都在不断的提升。乘法器作为微处理器中的核心部件,已经成为衡量现代高性能计算和数字信号处理的重要指标,它的设计与实现直接影响着微处理器的性能,关于提高乘法器性能的研究一直是国内外提高微处理器性能的重要课题。本文对微处理器中核心运算部件乘法器进行了较为深入的研究,从算法和逻辑两个方面对乘法器的子模块和乘法器整体进行了优化。在算法方面,提出了重新设计部分积产生电路单元的方法。仔细分析、研究了部分积压缩器阵列结构,发现了其存在结构不规整的缺点,提出了一种减少部分积压缩器级数,降低电路和版图实现复杂度的方法。最终实现了两种不同结构的乘法器,且性能均优于传统结构乘法器,达到了优化设计,提高乘法器性能的目的。
关键词:Booth算法WalIace树加法器并行乘法器
桂林电子科技大学实训报告
Abstract In the design of integrated circuit field,Various of microproceors type play avery important role in entire chip.As the day paing,people have increasingly high performance of microproceor,SO every part of microproceor should be improved.Multiplier is a core components of microproceor has become the measure of modem high‘performance computer and digital signal proceor.Multiplier design andimplementation has a direct impact on the performance of microproceors.At home and broad,Study on improving the performance of multiplier is all important iue of high performance microproceor design.
This paper has a in-depth study on Multiplier which is thecorecom.ponentS of microproceor·It focuses on tlle optimization of algorithms and logic circuit design of multiplier.In algorithms,Proposed re—design of partial product generating circuit method and show some shortcomings of partial product compreor array.Proposed away to reduction partial product compreor depth and reduce the implementation complexity ofcircuit and layout.Finally achieved two different structure of multiplier.The performance oftwo different structures ofmultiplier is better than me olds.Reached the purpose of optimization design and improving the multiplier performance.
Keyword:Booth algorithm;Wallace Tree algorithm;Adder;Parallel multiplier
桂林电子科技大学实训报告
课程设计的性质和目的
创新精神和实践能力二者之中,实践能力是基础和根本。这是由于创新基于实践、源于实践,实践出真知,实践检验真理。实践活动是创新的源泉,也是人才成长的必由之路。通过课程设计的锻炼,要求学生掌握电路的一般设计方法,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,培养学生的创新精神。课程设计基本要求
掌握现代大规模集成数字逻辑电路的应用设计方法,进一步掌握电子仪器的正确使用方法,以及掌握利用计算机进行电子设计自动化(EDA)的基本方法。要求:
①、4位共阴数码管显示 ②、采用实验板上固有矩阵键盘
③、在数码管上显示出两个数相乘的结果,其中相乘的两个数的取值都在1-99之间 乘法器的设计原理
乘法器的实质是复杂的加法阵列,定义如下符号:乘数
和被乘数D.可 以由式(2-1)所示·.,则它们的乘积
桂林电子科技大学实训报告
其中Pi:『称为部分积,由此看出任意结构的乘法器都可以分为部分积的产生和部分积的求和两个部分,提高乘法器的速度也就可以从这两个方面入手。
本设计由输入模块,乘法模块,数码管显示模块组成。可实现两个2位数相乘,用7段显示器显示十进制结果。乘数和被乘数分两次由实验箱上的按键输入,同时在数码管显示分别显示乘数与被乘数。输入显示和计算结果显示,采用分时显示方式进行,可参见计算器的显示功能,各模块均由VHDL语言编写,例化成元件后采用原理图法进行连接。可简单清晰地描述各模块之间信号的传递。原理框图:
矩阵键盘 FPGA 数码管 桂林电子科技大学实训报告
设计心得体会
经过近两个星期的学习与实验,完成了乘法器的设计。初步掌握了电子设计自动化的方法,对Altera公司提供的FPGA/CPLD开发集成环境Max+plusⅡ及VHDL语言也有了一定的了解。同时也感受到了FPGA/CPLD的强大(当然,不是本实验所采用的型号)。要对其深入了解,还需进一步的学习。才能从分发挥其作用。
乘法器设计过程中遇到的主要问题及解决方法已在各小结中给出。整个课程设计中也有很多体会。首先就是不能心急,总想着一步完成是不可能的。要思路清晰,先从整体入手,有了整体想法之后,再将其细化分成个小模块,完成个小模块的设计最后将各模块进行连线。也就是对应于由底向上的设计方法。对于小规模设计,此方法简单易于接受。当我们对于自己的设计尚没有清晰地思路时,最好不要参考其他已完成的作品,因为这样再设计自己的作品时,就会很容易走上别人的老路,总是会想着去按照他人的方法进行设计,缺少了创新的地方。当我们有了自己的想法或者有部分想不明白的时候再去参考他人的作品,与他人进行交流,这样对比之中找出自己的不足,才能有更深刻的理解与认识。最后,完成了个模块的设计,每个模块都发现不出太大问题,满怀期待的将各模块连接到一起,却得不出想要的结果,大家都会比较着急。这种情况,我们只需按照信号的传递过程,从头到到尾一块一块的连接,并一步步的仿真,就会很容易检查到问题所在。
总之,在时间充裕的情况下,完全可以不用心急,这样既可以踏实地学到很多知识,同时也可完成自己理想的设计。
桂林电子科技大学实训报告
谢辞
这次FPGA实训进行的很顺利,首先要感谢我身边的同学们,同学对FPGA问题的一些建议提的很好,然后自己通过实践才使得这次实训能够安教学进度顺利完成。同时也要感谢电子信息科学与技术专业的老师们,虽然没有直接参与论文的指导但在开题时提出很多可行性的建议,在这里向他们表示深深的感谢。在此,本人无限感激。谢谢!
时间:2011年6月20日星期一
桂林电子科技大学实训报告
参考文献
[1]周立功.EDA实验与实践.北京: 北京航空航天大学出版社, 2007-9 [2]王钿, 卓兴旺.基于Verilong HDL的数字系统设计应用设计.第二版.北京: 国防工业出版社, 2007-8 [3]王彦, 基于FPGA的工程设计与应用.西安: 西安电子科技大学出版社2007-5 [4]Howard Johnson, Martin Graham.High-Speed Digital Design.北京: 电子工业出版社, 2004-5 [5]John F.Wakerly.数字设计原理与实践(原书第四版).北京: 机械工业出版社, 2007-5 [6]Michael D.Ciletti.Verilog HDL高级数字设计.北京:电子工业出版社,2005
桂林电子科技大学实训报告
附录
module CHenfaqi(clk,reset,row,col,decodeout,bit_s,);input clk,reset;input [3:0] row;output [3:0] col;//output [3:0] key_value;
output[7:0] decodeout;
output reg [3:0] bit_s;
wire[3:0] indec;
reg[7:0] decodeout;
reg [3:0] col;reg [3:0] key_value;reg [5:0] count;//delay_20ms reg [2:0] state;//状态标志
reg key_flag;
//按键标志位
reg clk_500khz;//500KHZ时钟信号
reg [3:0] col_reg;//寄存扫描列值
reg [3:0] row_reg;//寄存扫描行值
reg [3:0]decodeout1;//键值
reg [4:0]a;//有按键按下a自加
reg [3:0]b;reg [3:0]c;reg [3:0]d;reg [3:0]e;reg [3:0]q;always @(posedge clk or negedge reset)
if(!reset)begin a
else
begin
if(count>=50)begin clk_500khz
else count
end
桂林电子科技大学实训报告
if(key_flag==1'b1)a=a+1;//有键按下
if(a==1)b=decodeout1;//被乘数十位
if(a==2)c=decodeout1;//被乘数个位
if(a==3)d=decodeout1;//乘数十位
if(a==4)e=decodeout1;//乘数个位
end
end
q=(b*10+c)*(d*10+e);while(q
if(!reset)begin col
else
begin
case(state)
0: begin
col[3:0]
key_flag
if(row[3:0]!=4'b1111)begin state
else state
end
1: begin
if(row[3:0]!=4'b1111)begin state
//判断是否是第一行
else begin state
end
2:begin
if(row[3:0]!=4'b1111)begin state
//判断是否是第二行
else begin state
end
3: begin
if(row[3:0]!=4'b1111)begin state
//判断是否是第三一行
else begin state
end
桂林电子科技大学实训报告
4:begin
if(row[3:0]!=4'b1111)begin state
else state
end
5:begin if(row[3:0]!=4'b1111)
begin col_reg
else
begin state
end
endcase
end
always @(clk_500khz or col_reg or row_reg)
begin if(key_flag==1'b1)
begin
case({col_reg,row_reg})
8'b1110_1110:key_value
8'b1110_1101:key_value
8'b1110_1011:key_value
8'b1110_0111:key_value
8'b1101_1110:key_value
8'b1101_1101:key_value
8'b1101_1011:key_value
8'b1101_0111:key_value
8'b1011_1101:key_value
endcase
end
end
aign indec=key_value;
always @(indec or reset)
桂林电子科技大学实训报告
begin
if(!reset)begin bit_s=4'b1110;decodeout=8'bz;end
else begin
casex(indec)
4'b0000:begindecodeout1=4'd0001;end//1 * 键盘扫描显示键值
4'b0001:begindecodeout1=4'd0004;end//4 *
4'b0010:begin decodeout1=4'd0007;end//7 *
4'b0100:begin decodeout1=4'd0002;end//2 *
4'b0101:begin decodeout1=4'd0005;end//5 *
4'b0110:begin decodeout1=4'd0008;end//8
4'b0111:begin decodeout1=4'd0000;end//0 *
4'b1000:begin decodeout1=4'd0003;end//3
4'b1001:begin decodeout1=4'd0006;end//6
4'b1010:begindecodeout1=4'd0009;end//9 *
endcase
end
end always @(clk_500khz)begin
case()endmodule
管脚定义
NET “bit_s[0]” LOC = R13;NET “bit_s[1]” LOC = P12;NET “bit_s[2]” LOC = P11;NET “bit_s[3]” LOC = N11;NET “clk” LOC = P9;NET “col[0]” LOC = N12;NET “col[1]” LOC = P13;NET “col[2]” LOC = T13;NET “decodeout[0]” LOC = T11;NET “decodeout[1]” LOC = T10;NET “decodeout[2]” LOC = P10;
桂林电子科技大学实训报告
NET “decodeout[3]” LOC = N10;NET “decodeout[4]” LOC = M10;NET “decodeout[5]” LOC = R9;NET “decodeout[6]” LOC = T9;NET “decodeout[7]” LOC = N9;NET “reset” LOC = K12;NET “row[0]” LOC = L7;NET “row[1]” LOC = L8;NET “row[2]” LOC = L9;NET “row[3]” LOC = L10;