verilog
whh946
这个作者很懒,什么都没留下…
展开
-
异步复位同步释放及相关复位理解
自己对于复位信号,同步,异步,异步复位,同步释放的理解原创 2022-10-11 21:05:14 · 773 阅读 · 1 评论 -
Verilog减法小探究
Verilog 的减法之前一直认为用补码会方便一些,如果直接相减的结果是啥样呢?写了一个简单的减法module subtract(a,b,d);input [3:0]a,b;//a为被减数,b为减数output [3:0]d;//输出dassignd=a-b;endmodule直接减法的仿真结果如下可见当a大于等于b时可以直接得到正确的值,如果a比b小会直接得到负值并以补码形式写出来。但是由于a和b都是无符号数,如果得出来的是补码形式会很难理解,而且由于d只有4位原创 2022-02-17 11:26:12 · 8867 阅读 · 1 评论 -
object “y“ on left-hand side of assignment must have a variable data type
always 语句中被赋值变量必须为reg型,用 assign 连续赋值的对象 必须定义成 wire(线型)原创 2022-02-16 11:06:40 · 7718 阅读 · 1 评论 -
verilog中关于always语句嵌套task执行顺序和@(posedge clk)执行方式的问题
首先明确一个事实always@(posedge clk)中的任务没有执行完的情况下是不会在下一个时钟上升沿到来的时候再次重复执行的再明确另一个事实 在前面不带always的情况下,@(posedge)仅会按顺序执行一次。task shift_in;output [7:0] shift;begin@ (posedge scl) shift[7] = sda;@ (posedge scl) shift[6] = sda;@ (posedge scl) shift[5] = sda;@原创 2021-04-16 10:29:22 · 12807 阅读 · 3 评论 -
verilog while循环次数限制问题
Error (10119): Verilog HDL Loop Statement error at divider.v(16): loop with non-constant loop condition must terminate within 250iterations出现这个错误提示,指我的循环可能陷入死循环,最高循环次数为250次代码如下module divider(input [4:0]AX,//被除数input [4:0]BX, //除数output reg[4:0]RX.原创 2021-04-02 12:13:45 · 4044 阅读 · 0 评论 -
verilog output端口不能声明为reg类型
做除法器时代码如下module divider(input [4:0]AX,//被除数input [3:0]BX, //除数output [4:0]RX,//商output[3:0]cX); //余数reg [4:0]TA;reg [4:0]RX;reg [3:0]TB;reg [3:0]CX;reg [0:0]QX; //验证最后商的符号always@(AX or BX)begin TA=AX[4]?(~AX+1'b1):AX;//如果被除数为负数就取其相反数,反之不变 T原创 2021-04-02 10:18:41 · 8086 阅读 · 2 评论 -
关于Verilog HDL 有符号数乘法器问题
乘法器代码如下module muilt2b(RX,AX,BX);input [3:0]AX,BX;//有符号数AX,BXoutput [6:0]RX; //RX输出reg[6:0]RX,TA; //RX[5:0]是RX的数值部分 TA是AX不断进位reg[2:0]TB; //BX的数值部分reg [0:0] QX ; //保存符号 always @(AX or BX) begin RX=0; TA=AX[2:0]; TB=BX[2:0]; QX=AX[3]+BX[3];//计算原创 2021-04-01 13:10:56 · 2595 阅读 · 3 评论