永发信息网

求助:verilog语言编写加法

答案:2  悬赏:50  手机版
解决时间 2021-02-05 17:00
两个实数-1.25跟0.5相加,得到的-0.75,在端口输出...
最佳答案
使用补码相加,代码如下,供参考。
input a_neg, b_neg; //a数据的符号,b数的符号。1为负数。
input [7:0] an_in, bn_in; //加数的整数
input [7:0] ad_in, bd_in; //加数的小数
output reg [7:0] cn_out, cd_out; //加结果
output c_neg; //结果的符号。

reg [8:0] an_comp, ad_comp, bn_comp, bd_comp; //a和b的补码
wire [8:0] cn_add, cd_add; //

always@(*)
begin
if (a_neg) //a的补码
begin
an_comp[8] = 1'b1;
an_comp[7:0] = ~an_in[7:0] + 1'b1;
ad_comp[8] = 1'b1;
ad_comp[7:0] = ~ad_in[7:0] + 1'b1;
end
else
begin
an_comp[8:0] = {1'b0, an_in[7:0]};
ad_comp[8:0] = {1'b0, ad_in[7:0]};
end

if (b_neg) //b的补码
begin
bn_comp[8] = 1'b1;
bn_comp[7:0] = ~bn_in[7:0] + 1'b1;
bd_comp[8] = 1'b1;
bd_comp[7:0] = ~bd_in[7:0] + 1'b1;
end
else
begin
bn_comp[8:0] = {1'b0, bn_in[7:0]};
bd_comp[8:0] = {1'b0, bd_in[7:0]};
end
end

//加法
assign cd_add = ad_comp + bd_comp;
assign cn_add = an_comp + bn_comp + cd_add[8];

assign c_neg = cn_add[8];

//补码转回二进制码
always@(*)
if (c_neg)
begin
cn_out = ~(cn_add[7:0] - 8'b1);
cd_out = ~(cd_add[7:0] - 8'b1);
end
else
begin
cn_out = cn_add[7:0];
cd_out = cd_add[7:0];
end
全部回答
用verilog hdl 改成vhdl 就可以了 用状态机写的 module sell(one_dollar,half_dollar, collect,half_out,dispense,reset,clk); parameter idle=0,one=2,half=1,two=3,three=4; //idle,one,half,two,three为中间状态变量,代表投入币值的几种情况 input one_dollar,half_dollar,reset,clk; output collect,half_out,dispense; reg collect,half_out,dispense; reg[2:0] d; always @(posedge clk) begin if(reset) begin dispense=0; collect=0; half_out=0; d=idle; end case(d) idle: if(half_dollar) d=half; else if(one_dollar) d=one; half: if(half_dollar) d=one; else if(one_dollar) d=two; one: if(half_dollar) d=two; else if(one_dollar) d=three; two: if(half_dollar) d=three; else if(one_dollar) begin dispense=1; //售出饮料 collect=1; d=idle; end three: if(half_dollar) begin dispense=1; //售出饮料 collect=1; d=idle; end else if(one_dollar) begin dispense=1; //售出饮料 collect=1; half_out=1; d=idle; end endcase end endmodule
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
祸从口出,病从口入的意思是什么啊?知道的请
天恩儿童活动中心我想知道这个在什么地方
北汽威旺306换压盘和离合器片后带速不稳是怎
如何举报一些骗子加盟网店团伙,很多托的,我
外汇赚钱怎么样?
学霸君好还是百度作业帮好。
西湖社区居委会地址在哪,我要去那里办事
新平兄弟汽贸有限公司这个地址在什么地方,我
红光社区居委会地址在什么地方,我要处理点事
芸耨的意思是什么啊?知道的请说下!
爱情可以没有物质基础吗?
男属羊腊月二十九女属鸡六月二十五今年什么时
借3万一分利息等额本金三年每月还多少
中国电信星沙营业厅地址在哪,我要去那里办事
填空题在-1,7之间插入三个数,使它们顺次成
推荐资讯
亲,32平米的房子,全部装修下来需要多少钱
宸是什么意思名字大全
【黄河大合唱简谱】填空。(1)组诗《黄河大合
美的热水器热水很小是什么原因
瑞达金属材商店地址在哪,我要去那里办事
机战王游戏中有好友支付点了支付会不会扣钱
天骄科技在哪里啊,我有事要去这个地方
鸣庄村地址在什么地方,我要处理点事
水木年华练歌房地址在哪,我要去那里办事
稷山县翟店中学地址好找么,我有些事要过去
参加的参的成语
如果一个男人总是说自己是个好人,这是个什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?