软件:Quartus
语言:Verilog
代码功能:
1.补码电路
设计要求:从原码和补码之间进行互相变换,且数据位数可从到8位扩展到16位、32位,且增加控制电路部分。
2.浮点数产生电路设计
设计要求:将浮点数变为32位单精度的机器数,电路包括规格化浮点数产生电路、阶码(移码)产生电路的设计,另增加控制电路产生复位信号、启动信号等。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 仿真图
部分代码展示:
//补码转换 module?Complement #(parameter?WIDTH=8?)//位宽8位,可以自定义修改 ( input?[WIDTH-1:0]?data_in,//输入待转换值 input?shift_en,//转换控制信号,0表示原码到补码,1表示补码到原码 output?reg?[WIDTH-1:0]?data_out//输出值 ); //原理 //原码为十进制数的二进制表示,正数符号位为0,负数符号位为1,例如:10的二进制为00001010,-10的二进制为10001010 //正数原码转补码:正数的补码,与原码相同,例如,10的原码为00001010,补码也是00001010 //负数原码转补码:负数的补码:符号位不变,其余各位按位取反,取反后整体加1,例如:-10的原码为10001010,符号位不变:1??0001010,其余位按位取反:1??1110101,取反后整体加1:11110101?+?1?=?11110110 //正数补码转原码:补码的符号位为0,表示该补码的原码是一个正数,所以补码就是该数的原码,例如:补码为00001010,它的符号位是0,代表它是一个正数的补码,正数的原码就是补码,反正也成立,所以它的原码是00001010 //负数补码转原码:补码的符号位为1,表示该补码的原码是一个负数,所以可以这样求负数的原码,符号位不变,其余各位按位取反,然后再整体加1, //原码转补码 //若为正数,补码即原码 wire?[WIDTH-1:0]?unsigned_data; assign?unsigned_data=data_in; //若为负数:符号位不变,其余各位按位取反,取反后整体加1 wire?[WIDTH-1:0]?signed_data; assign?signed_data={data_in[WIDTH-1],~data_in[WIDTH-2:0]}?+?1;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=487
阅读全文
359