1楼:不会水的小兵
1、像你这样也是可以的,但只能以大减小。
2、你的输入输出都为无符号数,结果是无所谓正负之分的,也无溢出。要想结果可正可负,你可以将寄存器都设置成有符号数的,但这样一来就有溢出的问题了,但只要你在进行运算时注意结果不要超出范围就行了。
2楼:匿名用户
不可以,结果可能会溢出,用9位寄存器保存吧
编写两个4位2进制数相减的verilog程序
3楼:匿名用户
使用4个单bit的减法级联,组成4bit的减法,供参考。
//单bit减法
module a_sub_b_1bit (a, b, c, s, sc)
input a, b, c; //c为上个减法的借位。
output reg s, sc; //sc为当前的借位
always@(*)
begin
s = a^b^c;
if (a)
sc = b&c;
else
sc = b|c;
endendmodule
///主程序
module a_sub_b_4bit (a, b, c, s, sc)
input [3:0] a, b;
input c; //c为上个减法的借位。
output reg [3:0] s;
output sc; //sc为当前的借位
wire [3:0] sc_t;
assign sc = sc_t[3];
a_sub_b_1bit a_sub_b_1bit_0u (.a(a[0], .b(b[0], .
c(c), .s(s[0]), .sc(sc[0]));
a_sub_b_1bit a_sub_b_1bit_1u (.a(a[1], .b(b[1], .
c(sc_t[0]), .s(s[1]), .sc(sc[1]));
a_sub_b_1bit a_sub_b_1bit_2u (.a(a[2], .b(b[2], .
c(sc_t[1]), .s(s[2]), .sc(sc[2]));
a_sub_b_1bit a_sub_b_1bit_3u (.a(a[3], .b(b[3], .
c(sc_t[2]), .s(s[3]), .sc(sc[3]));
endmodule
4楼:乐观的气公
1.触发器的verilog实现
时序电路是高速电路的主要应用类型,其特点是任意时刻电路产生的稳定输出不仅与当前的输入有关,而且还与电路过去时刻的输入有关。时序电路的基本单元就是触发器。下面介绍几种常见同步触发器的verilog实现。
同步rs触发器
rs触发器分为同步触发器和异步触发器,二者的区别在于同步触发器有一个时钟端clk,只有在时钟端的信号上升(正触发)或下降(负触发)时,触发器的输出才会发生变化。下面以正触发为例,给出其verilog**实现。
verilog中计算两数相减的平方时要声明成有符号数吗
5楼:匿名用户
只要不让数据溢出就没问题
但是现在数字信号处理都是补码运算的
quartus 2 用verilog hdl如何计算减法 5
6楼:匿名用户
减法一般都是用的补码加法的方法实现,这在fpga中是比较通用的方法了。你也可以根据功能自己写门级**,不过fpga中的单元是给定的,采用补码加是比较优化的方法。
设计思路就是通过加法溢出来实现减法。实际上可以看成“加-溢出(减)”。
你可以通过采用asic设计综合导出门级网表比较cell数来与fpga中的数量做对比,相信不会有明显的差距。
verilog里16位数的减法,直接两个16位相减,程序会分高低两个8位数做减法。不知道怎么回事?
7楼:匿名用户
编译器是可能把位宽过大的数据在运算时分成几个模块的
最终的效果肯定是一样的
分高低两个8位数,你是怎么看出来的呢?
我想写一段verilog hdl 的由不同时间产生的两个13位 二进制数相减并输出结果的模块,求解答。感谢
8楼:匿名用户
两个13位二进制数相减并输出结果,这个过程比较简单,随便找本书,就可以写出来。
现在关回键是涉答及到不同时钟,那么这两个数据便是异步的,首先需要同步一下。可选择其中一个时钟或者使用第三个时钟做为标准,进行同步,建议采用两个触发器的同步方法。
急急急!!谁能帮忙用verilog写一个浮点数加减乘除的程序
9楼:匿名用户
http://****hmc.edu/chips/fpadd.zip
这是浮点抄加法器的
源码,你可以参考一下。
10楼:匿名用户
?只有加法器 乘法器,verilog是硬件描述语言啊,又不是实现计算功能的语言
verilog可以实现3个数一起相加吗
11楼:匿名用户
可以实现3个数一起相加,综合之后,可由两个加法器来实现。
12楼:匿名用户
module(input[7:0]in1,in2,in3,output[7:0]out1);wire[7:
0]w;assignw=in1>in2?in2:in1;assignout1=w
13楼:窦硕伏曼云
module add(a,b,cin,cout);
input cin;//进位输
入input[3:0] a;//四位输入
output[3:0]b;//四位输出
output cout;//进位输出
assign =a+2'd2+cin;
endmodule
图是**的,为了弄你这个又花去我蛮多时间的,***。
fpga中用verilog语言写四位加法/减法器程序 5
14楼:赤日の流转
reg [3:0] a,b;
reg [4:0] c;
assign c = a + b;