发布一下这两天的成果,用Verilog实现的FPGA定点小数计算,一共有N篇,包括加法、乘法、除法、平方根、平方等……目前加法、乘法已完成调试,除法、平方根和平方等尚未完成……时间仓促,此次博文直接贴程序、RTL结构图和功能仿真波形图,算法原理讲解部分后续有时间在补充……
FPGA定点小数计算(Verilog版)第二篇——乘法运算
首先是qtwosComp.v:关于这个文件名,补充说明一下。其功能为取补码……国内的大部分计算机基础教材在介绍计算机二进制编码的时候都会介绍到原码,反码,补码……那么有几个人真正知道Ones Complement和Twos Complement是什么意思呢?估计能够直接说出来的人并不多,主要怪我们的教材太坑爹(基本上都是抄来抄去的……),没有去介绍二进制编码的发展历史,甚至连补码和反码的英文表示都懒得告诉你……
实际上,Ones Complement就是反码,Twos Complement就是补码!
因为,我们的教材不会告诉你早期的计算机(如CDC 6600、LINC、PDP-1、UNIVAC 1107等)采用的都是反码,为什么呢?因为那时候补码的概念还没有被提出来了!直到上个世纪80年代才被提出并被广泛应用,现在基本上所有的计算机系统采用的都是补码了……
想深入了解的,去看维基百科(百度百科太……)
废话不多说了,进入贴图模式!
然后是qmult文件:
以及Testbench文件:
使用Synplify Pro综合得到的RTL视图:
接下来是ActiveHDL的脚本文件:
以及仿真结果: