完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
嗨,
我写下面的代码将二进制数转换为二进制补码,但在结果中我得到一个补码的输入 库ieee;使用ieee.std_logic_1164.all;使用ieee.std_logic_signed.all;包comp_p是函数补码(A:在std_logic_vector(11 downto 0) - A_Comp:std_logic_vector(11 downto 0); - A_Cout:std_logic)return std_logic_vector ; 结束comp_p; package body comp_p是函数补码(A:在std_logic_vector(11 downto 0) - A_Comp:std_logic_vector(11 downto 0); - A_Cout:std_logic)return std_logic_vector isvariable A_invert:std_logic_vector(11 downto 0);变量A_carry:std_logic_vector( 12 downto 0);变量b_comp:std_logic_vector(11 downto 0);变量b_Cout,cin:std_logic; begin cin:='0'; A_invert:=不是A; A_carry(0):= cin; 对于i在0到11循环中b_comp(i):= A_invert(i)xor A_carry(i); A_carry(i + 1):= A_invert(i)和A_carry(i); 结束循环; - cin:= A_carry(12);返回b_comp;结束补充;结束comp_p; 请指出以上算法是否错误。 问候, balachandra 以上来自于谷歌翻译 以下为原文 Hi, i have written below code to convert a binary number to two's complement, but in the results i get one's complement of the input library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_signed.all; package comp_p is function complement(A : in std_logic_vector (11 downto 0) -- A_Comp : std_logic_vector (11 downto 0); -- A_Cout : std_logic ) return std_logic_vector; end comp_p; package body comp_p is function complement(A : in std_logic_vector (11 downto 0) -- A_Comp : std_logic_vector (11 downto 0); -- A_Cout : std_logic )return std_logic_vector is variable A_invert : std_logic_vector ( 11 downto 0 ); variable A_carry : std_logic_vector ( 12 downto 0 ); variable b_comp : std_logic_vector(11 downto 0); variable b_Cout,cin : std_logic; begin cin := '0'; A_invert := not A; A_carry(0):= cin; for i in 0 to 11 loop b_comp(i) := A_invert(i) xor A_carry(i); A_carry(i+1):= A_invert(i) and A_carry(i); end loop; -- cin := A_carry(12); return b_comp; end complement; end comp_p; kindly indicate if above algorithm is wrong. regards, balachandra |
|
相关推荐
2个回答
|
|
哇,那是VHDL,我只是因为库语句而问,我猜它不可能。
它是什么? 亲切的问候鲍勃斯特 以上来自于谷歌翻译 以下为原文 Wow is that VHDL, I only ask because of the library statements, I guess it can’t be. What is it? Kind Regards Bobster |
|
|
|
我不会说VHDL,但看起来很多打字来做一个相对简单的功能。
在Verilog中,它看起来像这样: 分配twos_comp = ~A + 1'b1; 以上来自于谷歌翻译 以下为原文 I don't speak VHDL, but that looks like a lot of typing to do a relatively simple function. In Verilog it looks something like this: assign twos_comp = ~A + 1'b1; |
|
|
|
只有小组成员才能发言,加入小组>>
2389 浏览 7 评论
2805 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2272 浏览 9 评论
3346 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2440 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
769浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
551浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
392浏览 1评论
1976浏览 0评论
693浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-1 15:14 , Processed in 1.434159 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号