乘法器设计实验.PDF
文本预览下载声明
欢迎加入 EDN 网站 FPGA/CPLD 助学小组 /1375/
乘法器设计实验
乘法器是众多数字系统中的基本模块。从原理上说它属于组合逻辑范畴;但
从工程实际设计上来说,它往往会利用时序逻辑设计的方法来实现,属于时序逻
辑的范畴。
通过这个实验使大家能够掌握利用FPGA/CPLD设计乘法器的思想,并且能够
将我们设计的乘法器应用到实际工程中。乘法器的设计方法有两种:组合逻辑设
计方法和时序逻辑设计方法。采用组合逻辑设计方法,电路事先将所有的乘积项
全部计算出来,最后加法运算。采用时序逻辑设计方法,电路将部分已经得到的
乘积结果右移,然后与乘积项相加并保存和值,反复迭代上述步骤直到计算出最
终乘积。
在该实验中就是要利用时序逻辑设计方法来设计一个 16 位乘法器,既然是
利用时序逻辑设计方法那么就得利用时钟信号控制乘法器运算。用时序逻辑设计
方法与用组合逻辑设计方法比较,它有什么好处呢?利用时序逻辑设计方法可以
使整体设计具备流水线结构的特征,能适用在各种实际工程设计中。
在提及乘法器的速度时,可以先了解一下数据吞吐量的概念。数据吞吐量使
指芯片在一定时钟频率条件下所能处理的有效数据量。假设本实验设计的芯片时
钟频率可达300MHz,那么该芯片的数据吞吐量是多少呢?
由于芯片完成一次乘法运算需要1个以上的时钟周期,因此,即使芯片采用
300MHz 的时钟频率,它每秒钟所能处理的有效数据吞吐量也一定小于 300M。对
于16位乘法器而言,ain和bin均为0xFFFF时,芯片的运算量最大,计算所需
的时间也最长,这种情况才能作为我们计算数据吞吐量的依据。
假设芯片在 200MHz 的条件下 ain 和 bin 均为 0xFFFF 时需要 16 个时钟周期
才能得到乘法结果,那么芯片在 200MHz 的条件下的数据吞吐量就为:
200M/16=12.5M 。
IO口的定义以及说明如表5.8所示。
表5.8 乘法器实验接口定义
信号名称 方向 描述
特权制造 /ilove314/ 欢迎购买《深入浅出玩转 FPGA》一书配套学习
欢迎加入 EDN 网站 FPGA/CPLD 助学小组 /1375/
clk input 时钟信号,50MHz
rst_n input 复位信号,低电平有效
start input 使能信号。为 0 表示信号无效;为 1 表示读入
乘数和被乘数。该信号由 0 到1 变化后,会进
行一次当前 ain和 bin 的乘法运算,进行下一
次运算则需重新拉低该信号后拉高。
ain input 输入 a(被乘数),其数据位宽为 16bit。
bin input 输入 b(乘数),其数据位宽为 16bit。
yout output 乘积输出,其数据位宽为 32bit。
done output 输出有效标志位,有效时保持 1 个时钟周期高
脉冲。为 1表示乘法运算完成,yout 端口的数
据稳定,得到最终的乘积;为 0 表示乘法运算
未完成,yout 端口的数据不稳定。
相关源代码请大家参考配套光盘,大家可以着重理解移位累加部分代码是如
何实现的。
如图5.8所示,综合后的RTL视图很好的表现出了代码设计中移位累加的设
计思想。
显示全部