完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,
我写了一个包含乘数的VHDL项目。 乘数是一个非常简单的代码: 信号A:整数:= 0; 信号B:整数:= 0; 信号C:整数:= 0 信号P:整数:= 0; 开始 处理(时钟) 开始 如果rising_edge(时钟)那么 P 问题是我希望我的Spartan-A DSP使用DSPs元素代替这些代码,但是在合成和实现之后,我们写道没有使用DSP。 我如何“强迫”ISE使用DSP? 是否包含属性? 先谢谢你 |
|
相关推荐
4个回答
|
|
你已经定义了没有任何范围的整数,所以我认为我说这将导致你的代码被视为32位值是正确的。
即使这些映射到DSP元件,它也需要几个,并且不是一个好的(最佳)实现。 我建议你使用'std_logic_vector'来决定你应用程序真正需要多少分辨率。 要特别注意DSP元件中可支持的位宽(均小于32位)。 您的等式P |
|
|
|
谢谢您的回复。
是的,每个信号都是整数,因此应该添加32位实现。 从理论上讲,没有括号乘法应该优先考虑加法,但我只是添加括号......但是,没有任何改变。 我读到DSPs多路复用器有18位输入和36位输出....我可以定义范围可能是为了限制比特浪费。 其他建议? 也许有一个属性可以使用......? |
|
|
|
由于只显示了您提供的一小段代码,我不想猜测这些工具可能实现的内容(或者根本没有实现)。
你已经定义了'信号',但是它们如何与器件上的物理输入和输出引脚相关?在某些时候,这些“整数”需要与物理相关。 顺便说一下,如果你的所有路径都是32位,那么你必须控制用于防止溢出的范围。 DSP元件中的物理乘法器具有18位输入和36位输出的原因是因为两个18位值的乘法可能导致36位结果。 如果你将两个32位值相乘,那么全精度结果将是64位。你真的想要保留32位,你要丢弃的是32位吗? 同样,VHDL将有规则,但那些规则是否与您的应用程序兼容? Ken Chapman英国Xilinx主要工程师 |
|
|
|
https://www.xilinx.com/support/documentation/application_notes/xapp467.pdf
您可以使用vhdl实例化乘法器或DSP(取决于您使用的设备)。 您可以使用IP并对其进行配置或使用VHDL推断它。 您可以在Xapp中找到所需的所有信息,或者进入ISE的EDIT TAB(我正在使用14.5)并找到语言模板。 进入VHDL设备原语实例化并选择您的设备。 例: - - MULT18X18S:18×18签署同步乘法器 - 的Spartan-3A - 赛灵思HDL语言模板,版本14.5 MULT18X18S_inst:MULT18X18S端口映射(P => P, - 36位乘法器输出A => A, - 18 位乘法器输入B => B, - 18位乘法器输入C => C, - 时钟输入CE => CE, - 时钟使能输入R => R - 同步复位输入); - MULT18X18S_inst实例化结束 对于Spartan3a-DSP中的Dps48a: - DSP48A:DSP功能块 - Spartan-3A DSP - Xilinx HDL语言模板,版本14.5 DSP48A_inst:DSP48A通用映射(A0REG => 1, - Enable = 1 / disable = 0第一级A输入流水线寄存器A1REG = > 1, - Enable = 1 / disable = 0第二级A输入流水线寄存器B0REG => 1, - Enable = 1 / disable = 0第一级B输入流水线寄存器B1REG => 1, - 启用= 1 /禁用 = 0第二级B输入流水线寄存器CARRYINREG => 1, - Enable = 1 / disable = 0 CARRYIN输入流水线寄存器CARRYINSEL =>“CARRYIN”, - 指定进位源,“CARRYIN”或“OPMODE5”CREG = > 1, - Enable = 1 / disable = 0 C输入流水线寄存器DREG => 1, - Enable = 1 / disable = 0 D预加法器输入流水线寄存器MREG => 1, - Enable = 1 / disable = 0 M流水线寄存器OPMODEREG => 1, - Enable = 1 / disable = 0 OPMODE输入流水线寄存器PREG => 1, - Enable = 1 / disable = 0 P输出流水线寄存器RSTTYPE =>“SYNC”) - 指定 复位类型,“SYNC”或“ASYNC”端口映射(BCOUT => BCOUT, - 18位B端口级联输出CARRY OUT => CARRYOUT, - 1位进位输出P => P, - 48位输出PCOUT => PCOUT, - 48位级联输出A => A, - 18位A数据输入B = > B, - 18位B数据输入(可连接到相邻DSP48A的结构或BCOUT)C => C, - 48位C数据输入CARRYIN => CARRYIN, - 1位进位输入信号CEA => CEA, - A输入寄存器的1位有效高电平时钟使能输入CEB => CEB, - B输入寄存器的1位有效高电平时钟使能输入CEC => CEC, - 1位有效高电平时钟 C输入寄存器的使能输入CECARRYIN => CECARRYIN, - CARRYIN寄存器的1位有效高电平时钟使能输入CED => CED, - D输入寄存器的1位有效高电平时钟使能输入CEM => CEM, - 乘法器寄存器的1位高电平有效时钟使能输入CEOPMODE => CEOPMODE, - OPMODE寄存器的1位有效高电平时钟使能输入CEP => CEP, - P输出寄存器的1位有效高电平时钟使能输入CLK = > CLK, - 时钟输入D => D, - 18位B预加法器数据输入OPMODE => OP MODE, - 8位工作模式输入PCIN => PCIN, - 48位P级联输入RSTA => RSTA, - A输入流水线寄存器的1位复位输入RSTB => RSTB, - 1位 B输入流水线寄存器的复位输入RSTC => RSTC, - C输入流水线寄存器的1位复位输入RSTCARRYIN => RSTCARRYIN, - CARRYIN输入流水线寄存器的1位复位输入RSTD => RSTD, - 1- D输入流水线寄存器的位复位输入RSTM => RSTM, - M流水线寄存器的1位复位输入RSTOPMODE => RSTOPMODE, - OPMODE输入流水线寄存器的1位复位输入RSTP => RSTP - 1位 P管道寄存器的复位输入); - DSP48A_inst实例化结束 DPS48上的用户指南: https://www.xilinx.com/support/documentation/user_guides/ug431.pdf 另一张海报试图说明的是,您最需要指定想要乘以的确切位数。 因此,在STD_Logic_vector中指定它是有价值的。 |
|
|
|
只有小组成员才能发言,加入小组>>
2429 浏览 7 评论
2830 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2298 浏览 9 评论
3378 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2468 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
1294浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
592浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
455浏览 1评论
2010浏览 0评论
736浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 06:24 , Processed in 1.112013 second(s), Total 55, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号