如何在VHDL中处理有符号和无符号数字



我正在编写一个程序,该程序需要处理有符号和无符号数字。输入32位,前24位是整数,后8位是分数。根据分数,你可以向上或向下取整。很简单,但是你将如何编写一个程序,无论输入是有符号的还是无符号的?你只是制作两个独立的代码块,根据数字是否无符号来执行吗?

您的程序需要知道数据的来源,并根据该信息导出数字是否签名。否则,你的程序如何知道比特向量是否有符号?标志是人类用来构建数据的一种惯例。您实现的硬件只看到一个位向量。

具有8个小数位数的32位无符号数字可以表示0到((2^32)-1)/256之间的数字。

具有8个小数位的32位有符号数字可以表示范围为-(2^31)/256到((2^3)-1)/256的数字。

那么,如何将32位输入(有符号或无符号)转换为33位有符号,它将能够表示-(2^32)/256到((2^2)-1)/256范围内的数字,这将覆盖您的整个输入范围。

(您没有给出任何代码。除了32位输入之外,还必须有其他输入来表示这32位是无符号数字还是有符号数字。您需要测试该输入,并根据其状态进行适当的转换。)

最新更新