1.Verilog支持3种基本描述方式:
1.1行为描述方式--过程化结构建模
1.2数据流描述方式--连续赋值语句方式建模
1.3结构化描述方式--使用门和模块实例语句描述建模
2.Verilog提供了3种时序控制方法
2.1基于延时的时序控制
2.2基于事件的时序控制
事件是指一个寄存器或者线网变量的值发生变化,事件可以用来触发声明语句或者块语句的执行。Verilog提供4种类型的事件控制:
常规事件控制:@(clk) 、@(posedge clk)、@(negedge clk)、或者q=@(posedge clk) d;
命名时间控制:event received_data;
always @(posedge clk) begin
if(last_data_packet) ->received_data; //触发接收数据事件
end
always@(received_data) data_buf={data_pkt[0],data_pkt[1],data_pkt[2],data_pkt[3]};
or事件控制
电平敏感时序控制:wait表示电平敏感的条件为真
3.Verilog语言中能参数化设计
为了提高模块的重复利用,关键就在于避免硬编码(hard literal),使模块参数化。参数化建模的好处是可以使代码清晰,便于后续维护和修改。只需要修改参数,不用修改其他代码就可以适用于不同的环境中。具体的参数化建模方法有 3 种:
3.1‘define宏定义
3.2 parameter、localparam模块参数化
3.3 ’ifdef等条件编译
指导原则:
1宏定义应该只用于定义系统内全局常量;
2 应该把所有的宏定义仿真一个definition.vh文件中;
3 模块内的常量用localparam;
4 在实例化时会改变的参数,使用parameter,以达到模块可配置和可移植;
5 在定义常量时,如果一个常量依赖于其他常量,那么在定义该常量时就直接用表达式表示出来这种关系。
4.
Verilog可以用于生成模拟激励和指定测试的验证约束条件,比如输入的指定。
两类主要数据类型:线网类型(构件之间的物理连线)、寄存器类型(抽象的数据存储单元)
udp:用户定义原语,组合逻辑原语或者是时序逻辑原语 。
开关级门:pmos、nmos
两个基本逻辑门:and、or、nand