001_verilog_basics
1. verilog
1.1 模块结构
1.2 常量、变量、向量
常量
变量
向量
1.3 运算符及优先级
位宽不一致:高位补0

对 a = 2'b1x, b = 2'b1x: a==b返回X,a===b返回1。
一、算术操作符(+ - * / % **)
二、相等操作符(== ! = === ! == ==? !=?)
三、逻辑操作符(&& || !)
四、按位操作符(~ & | ^ ^~或 ~^)
五、缩减操作符(& ~& | ~| ^ ~^)
六、移位操作符(<< >> <<< >>>)
七、关系操作符(> < >= <=)
八、条件操作符(?:)
九、拼接和复制操作符({expre1,expres2,...} {repeat_number{expression}})
十、优先级列表

————————————————
版权声明:本文为CSDN博主「Mr.Marc」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46022434/article/details/106311870
:
1.4 过程语句
initial (不可综合)
always() )
1.5 赋值语句:过程赋值、连续赋值
连续赋值(主要对wire型变量)
过程赋值:
非阻塞赋值 <= :整个过程语句结束时赋值
阻塞赋值 =:该语句结束 时赋值
1.6 条件语句
if else
case
case :按位比较。
casex:双方某些位为X,Z,则不考虑该位。
casez:双方某些位为 Z,则不考虑该位。
1.7 循环语句
always_comb begin
integer i;
for (i=0; i<=xxx; i++) begin
xxxx
end
end
for (可综合)
代码执行顺序:
1) 先执行“表达式1”。
2) 再执行“表达式2”,如果它的值为真(非0),则执行循环体,否则结束循环。
3) 执行完循环体后再执行“表达式3”。
4) 重复执行步骤 2) 和 3),直到“表达式2”的值为假,就结束循环。
while
forever
repeat
1.8 编译宏语句
宏替换 `define 宏名 变量或名字
文件包含(不可综合) `include "文件名"
条件编译 `ifdef `else `endif
1.9 系统任务(tb)
$finish $stop
$display $monitor(信号值变化时)
$time(整数) $realtime(分数)
$random(seed) 约束化:($random(seed) % 'h10)
1.10 generate 生成语句

Verilog中的变量节选(part-select):中括号[]中的加号(+:)和减号(-。。。 - 百度文库 (baidu.com)
generate-loop循环语句

generate-conditional条件语句

generate-case分支语句

2. 数字逻辑
https://www.bilibili.com/read/cv11181575?spm_id_from=333.999.0.0
https://binaryai.blog.csdn.net/article/details/105418479?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-105418479-blog-124626689.pc_relevant_multi_platform_whitelistv2&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-105418479-blog-124626689.pc_relevant_multi_platform_whitelistv2&utm_relevant_index=1
https://blog.csdn.net/leslie_i/category_11799345.html
2.1 门电路
晶体管
与
或
非
与非
与非实现与
与非实现或
与非实现非
或非
异或 XOR O=AB+AB
同或
MUX(多路复用)
MUX转与
MUX转或
MUX转异或(P52)
2.2
2.2 同步复位、异步复位
异步复位:端口不声明,@(敏感列表)中出现
同步复位:端口声明, @(敏感列表)中不出现
2.3 边沿检测
上升沿 assign rise = a & !reg_a
下降沿 assign fall = !a & reg_a
边沿 assign edge = rise or fall (异或)
2.4 setup time hold time
2.5 乘除,计数
左移
右移
2.6 LATCH FLIP-FLOP
浙公网安备 33010602011771号