Verilog
onesway2018
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Verilog generate批量实例化
使用generate-for批量实例化。首先需要用genvar关键字定义for语句的变量。且该for语句必须有一个名字,这里为adder100。批量实例化100个二进制加法器。module top_module( input [99:0] a, b, input cin, output [99:0] cout, output [99:0] sum ); genvar i; generate for(i=0;i<100;i++) begin:原创 2022-04-29 15:59:04 · 3126 阅读 · 0 评论 -
Verilog同步复位和异步复位
同步和异步是针对时钟信号而言的。以时钟上升沿触发的同步复位和异步复位为例。同步复位需要一个reset的输入,可以规定在reset为1时复位。但在同步复位的条件下,并不是reset变成1之后马上就能复位,而是要等到下一个时钟上升沿,此时才能复位。异步复位也需要一个reset的输入,我们也规定在reset为1时复位。在异步复位的条件下,reset变成1之后(即reset的上升沿)立刻就能复位,并不需要等到下一个时钟上升沿。module top_module ( input clk, inp原创 2022-04-26 16:20:10 · 4245 阅读 · 0 评论 -
Verilog溢出
对于有符号数,最高位是其符号位。将两个位长相同的有符号数加减,产生溢出只会有两种情况。1.两个正数相加。正数的符号位为0,产生溢出时符号位会变成1,此时溢出位置1。2.两个负数相加。负数的符号位为1,产生溢出时符号位会变成0,此时溢出位置1。。使用verilog设计module top_module ( input [7:0] a, input [7:0] b, output [7:0] s, output overflow); // assign s = a原创 2022-04-25 15:55:46 · 3731 阅读 · 0 评论 -
Verilog中case语句的逆向使用
当case表达式的值和分支条件的值相等时,进入相应分支。通常使用case语句时,我们把一个变量写在case表达式中,而把常量写在分支下,例如写一个四选一的选择器。input [1:0]sel,output reg [3:0]dout );always@(*)begin case(sel) 2'b00:begin dout = 4'b0000; end 2'b01:begin dout =原创 2022-04-22 16:31:30 · 817 阅读 · 0 评论 -
Verilog创建子模块并调用
创建子模块并调用module top_module( input x, input y, output z); wire o1, o2, o3, o4; A ia1 (x, y, o1); B ib1 (x, y, o2); A ia2 (x, y, o3); B ib2 (x, y, o4); assign z = (o1 | o2) ^ (o3 & o4); // Or you could simplify the circuit including the s原创 2022-04-20 11:31:34 · 5943 阅读 · 0 评论 -
Verilog按位运算和逻辑运算
或运算符(|),与运算符(&)使用按位运算和逻辑运算的写法不同。以或运算符为例。按位或为(|),逻辑或为(||)。特别注意,按位取反为(~),逻辑取反为(!)上方为按位或,将ab两个向量进行按位或运算。中间为逻辑或,ab两个向量自己会先进行每位的或运算并分别得到一个一位的值,再进行逻辑或。...原创 2022-04-18 16:58:49 · 5232 阅读 · 2 评论
分享