SOC设计及Verilog学习笔记二

第二章   Verilog HDL:
描述层次:门级,RTL级(C=a&b),行为级
注释://    /* */
大小写敏感
宏定义define
数值:1、0、x(b不定)、z(高阻)
模块例化--函数调用(多例化多调用)
并行执行

module muxtwo (out,a,b,sel);
input a,b,sel;
output out;
reg out;(声明---被赋值的变量需定义类型);

always @(sel or a or b)----内信号发生变化,导致下方执行
 if (!sel) out<=a;
else out<=b;

endmodule
----------------------------3.13日---------------------------
功能划分-层次化设计(一个顶层模块)
内部端口不用写在()内
调用(软件)=例化(硬件)
多位数据定义 output [3: 0] Q
-------------------------------------------------------
模块验证-Simulation(激励控制-DUT-输出)
--------------测试环境-Test bench--------------:
module test;(无端口)
//数据类型声明
//例化(注意信号顺序与模块一致)
//激励信号赋值
initial(只执行一次)/always(循环)--这两种内部信号内赋值为reg,其余为wire
begin
a=0;b=1;sel=0;
#5(延时5ns) b=0;
#5  其余信号变化
$finish(可选)
end
endmodule 
--------------------------------------------------
仿真流程:
建立Project
写Verilog
编译
运行(指定顶层模块)
查看波形
---------------------------------------------------
组合逻辑:(赋值两种皆可,对应不同数据类型及赋值符号)
assign——wire——=
always——reg——<=
要求out跟随in随时变化
----------------------------------------------------
时序逻辑:(只能用always赋值,类型一定为reg)
寄存器=触发器DFF
reg Q;
always @(posedge clk)
Q<=D;
锁存器(尽量不用)-工具对其不友好
上升/下降沿-posedge/negedge
要求out跟随in指定时间变化
----------------------------------------------------
----------------------------语法-------------------
信号合并分解:
a={a1,a2,a3,...}
{a1,a2,a3,...}=a
数值表达:
B/D/H
2'B00,16'H55,10'D1023


 

你可能感兴趣的:(数字IC设计)