用verilog将16位的二进制转换为十进制。请教各位达人这个代码怎么写。如果是4位的,我直接可以用case了。

能给出直接代码最好啦,不行的话点播一下。我想case来写太麻烦了。比如2位的二进制转成十进制可以写:
case(a)
00:b=1;
01:b=2;
10:b=3;
11:b=4;但是现在是16位,用这个方法就有2的16次方。太不科学了。

。。。你写成case就可以了,但是你不要写成你原来的那种想法,你把16位的数拆成16个独立数,另最高位的数代表2的15次方,你每次在case中作判断是判断此位数为0或者为1,做出判断后,你把这些值的和加起来就可以了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-09
不明白什么意思。verilog本来就是硬件描述语言,数也是用二进制存储的。
直接用个$display("%d",a);不就是十进制输出了?
如果真的想转,理论上的算法应该是(假设输入a[15:0]):
out=a[15]*2^15+a[14]*2^14+....+a[0];
verilog里面,指数是**,也就是2^15应该是2**15。本回答被提问者和网友采纳
第2个回答  2012-10-15
其实这个问题是这个意思,我举个简单的例子,即要输入一连串16进制的数,我们如何转化为二进制?将所转化的结果一一存入到RAM中去。请指教~~
第3个回答  2011-06-10
就算能转为十进制,怎么输出?一个端口只能为0或者1难道还有10种变化?
相似回答