搜索
bottom↓
回复: 6

请教大侠们,如何在CPLD里实现除法运算?

[复制链接]

出0入0汤圆

发表于 2009-7-3 14:22:46 | 显示全部楼层 |阅读模式
请教一下各位大侠,我现在碰到了一个问题,不知道大家能不能帮我解决一下??
就是如何在CPLD芯片里,实现除法运算。我用的是verilog语言。
举个例子吧,我现在有个四位的十进制数:abcd。a是千位数,b是百位数,c是十位数,d是个位数。然后我另外有四个寄存器x1,x2,x3,x4。我想得到的结果是x1=a,x2=b,x3=c,x4=d。这样的算法,以前在C语言好像很容易实现,即x1=abcd/1000,x2=abcd/100%10,x3=abcd/10%10,x4=abcd%10。但是在verilog里,这样一算,CPLD占用量巨大。肯定不合适。
不知道哪位大哥能帮帮我,谢谢!!
在线等待!!

出0入0汤圆

发表于 2009-7-4 12:39:45 | 显示全部楼层
1,除以2的n次;
2,移位相减;

出0入0汤圆

 楼主| 发表于 2009-7-6 11:04:21 | 显示全部楼层
除以2我也知道的,问题是现在我要除以10,除以100的样子呀!!

出0入0汤圆

发表于 2009-7-6 12:17:19 | 显示全部楼层
你是要转bcd码吧?用判断来实现!

出0入0汤圆

发表于 2009-7-6 12:30:40 | 显示全部楼层
晕死,你这哪是要做除法啊?进来的数abcd已经是十进制了啊,不是二进制的!

module xxx (
input [15:0] abcd,
output [3:0] x1,
output [3:0] x2,
output [3:0] x3,
output [3:0] x4
);

assign x1 = abcd[15:12];
assign x2 = abcd[11:8];
assign x3 = abcd[7:4];
assign x4 = abcd[3:0];

endmodule

出0入0汤圆

发表于 2009-7-6 20:53:07 | 显示全部楼层
LS正解 MARK

出0入0汤圆

发表于 2009-9-26 17:47:30 | 显示全部楼层
4楼,输出x1,x2,x3,x4怎么是abcd的各个位的值啊?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-2 20:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表