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

 

 

posted @ 2021-03-07 17:20  bingbingo  阅读(42)  评论(0)    收藏  举报