verilog幂次方_Verilog学习笔记——有符号数的乘法和加法

本文介绍了在Verilog中处理有符号数乘法和加法的注意事项,通过实例展示了无符号数和有符号数的八种乘法组合,并通过仿真验证了结果。还讨论了有符号数乘法的另一种计算方法,包括符号位扩展的处理,以确保正确计算乘法和加法。
摘要由CSDN通过智能技术生成

有符号数的计算在 Verilog 中是一个很重要的问题(也很容易会被忽视),在使用 Verilog 语言编写 FIR 滤波器时,需要涉及到有符号数的加法和乘法,在之前的程序中我把所有的输入输出和中间信号都定义成有符号数,这样在计算时没有出现问题(实际在之前的程序中遇到了有符号和无符号数的问题,最后滤波结果不对,博客的程序是已经改正过的),下面实际试验一下 Verilog 的乘法问题;

1. 编写程序测试无符号数和有符号数的乘法

编写程序如下,其中,乘法的两个乘数分别是无符号、有符号的四种组合,输出的积也是分为无符号和有符号,共计 8 种可能;

module signed_test(

input [7:0] data_in_unsigned_1,

input [7:0] data_in_unsigned_2,

input signed [7:0] data_in_signed_1,

input signed [7:0] data_in_signed_2,

output [15:0] data_out_000,

output [15:0] data_out_001,

output [15:0] data_out_010,

output [15:0] data_out_011,

output signed [15:0] data_out_100,

output signed [15:0] data_out_101,

output signed [15:0] data_out_110,

output signed [15:0] data_out_111

);

//无符号 = 无符号 * 无符号

assign data_out_000 = data_in_unsigned_1 * data_in_unsigned_2;

//无符号 = 无符号 * 有符号

assign data_out_001 = data_in_unsigned_1 * data_in_signed_2;

//无符号 = 有符号 * 无符号

assign data_out_010 = data_in_signed_1 * data_in_unsigned_2;

//无符号 = 有符号 * 有符号

assign data_out_011 = data_in_signed_1 * data_in_signed_2;

//有符号 = 无符号 * 无符号

assign data_out_100 = data_in_unsigned_1 * data_in_unsigned_2;

//有符号 = 无符号 * 有符号

assign data_out_101 = data_in_unsigned_1 * data_in_signed_2;

//有符号 = 有符号 * 无符号

assign data_out_110 = data_in_signed_1 * data_in_un

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值