The logic type was introduced in SystemVerilog. It supersedes the reg type, which was a perennial source of confusion in Verilog. logic should be used everywhere except on signals with multiple drivers. Signals with multiple drivers are called nets.
    Regs -> logic / nets(multiple drivers). 还有一个类型是tri.
    注意,具有多个驱动程序的信号(例如,三态总线)必须声明为一个网络net,而不是logic.
    Int-2值逻辑
    tri-3值逻辑
    logic-4值逻辑
    使用以上三种datatype已经足够。其中logic最常用。

    Ethernet局域网,以太网,范围小;internet互联网,范围大。
    Vhdl的数据类型是严格的,容易和systemverilog混淆,后续看代码只关注systemverilog部分。

    为了更好地描述电路,我们需要更多的工具,包括变量、数据类型(node)、运算符、流程控制、函数(fx)。为了更高地掌握,推荐一个刷题平台HDLBits。HDLBits-178道题,分成3周,周一习题课(改到周三).关注best pratice部分,可以从难度高(成功率低)的入手.

    不推荐使用拓展赋值符号、不推荐使用隐藏规则
    ||两个符号代表逻辑运算,先判断true或者false,再进行逻辑运算
    state总是成对地出现,state和next_state。通过快捷键 从type中拉出来,一般同名的会直接接上,按照需要来修改

    vector字面值-填充-使用’0/‘1/‘z/‘x来初始化整个vector,可以避免可能的字面值尺寸失配。
    一个整数,比如12,其实是一个32位的Int。所以在多于32位时,vector字面值的填充要格外注意。

    异步复位areset,a代表异步Asynchronous

    一般地,casez + ?来表示don’t care。不要用x或者z(可能会混淆),问号?是更好的选择。
    可以在case前用初始值覆盖,不会造成违例。唯一的美中不足是用DVT画出状态转移图时,其实是根据case进行画图,之前覆盖的内容并不会被画出来,这样的状态转移图可能会带来混淆。覆盖了可以不用default,举例:
    segment = 00
    case(s)
    1’b0: segment = 01

    Q1如何写好状态机FSM
    A1分为MOORE和MEALY,把握之间的差异
    image.pngimage.png
    Q2如何写好testbench
    A2testbench使用===和!==.使用严格比较更有利于测试
    注意学习对于上升沿(取测试向量)和下降沿(施加激励)的使用
    注意学习终止条件if(testvectors[vectorum] === 4’bx)充分利用了仿真特性(未定义即为x)
    image.pngimage.png
    discrepancies-差异
    [3:0]-little-endian-小端序
    [0:3]-big-endian-大端序
    subtle-微妙的
    subtleties-微妙之处
    error-prone-容易出错
    interim-中间态,过渡态