您的位置:技术中心首页 > 硬件语言 >> Verilog学习笔记(More)

Verilog学习笔记(More)

作者:未知   时间:2006-02-27 08:11:11  来自:网上转载  浏览次数:1635  文字大小:【】【】【

参考资料:北大verilog课件,PPT格式

 从PPT直接拷贝的,所以格式有些凌乱,但瑕不掩瑜!

非阻塞(non-blocking)  赋值语句:
 
    always @(posedge clk) 
        begin 
              b <=  a ;
              c <= b;
        end
 
注解:b、c的值在下一个时钟上升延之前变化;
 
阻塞(blocking)  赋值语句:
 
    always @(posedge clk) 
        begin 
              b =  a ;
              c = b;
        end
 
不阻塞(non-blocking)  赋值语句 ( b<= a)
    - 块内的赋值语句同时赋值;
    - b 的值被赋成新值 a 的操作, 是与块内其他
      赋值语句同时完成的;
    - 建议在可综合风格的模块中使用不阻塞赋值。
阻塞(blocking)  赋值语句 ( b = a)
    - 完成该赋值语句后才能做下一句的操作;
    - b 的值立刻被赋成新值 a;
    - 硬件没有对应的电路,因而综合结果未知
 
  • if-else一顶要配套使用,否则else对应的条件在生成电路中用一个锁存器保存。
  • always语句的电平敏感信号要完整,否则漏掉的那个电平也会生成锁存器。
  • 同样道理,case不能缺少default;
Verilog 语法支持多层次多模块设计:
    -   `include 宏指令可以在一个模块中包含多个模
        块;
    -  在一个模块中可以用实例调用别的模块中定义的
       电路结构,构成多层次模块;
    -  在一个模块中可以用多个任务和函数来表 达复杂
       的状态机和结构;
    -  一个设计项目往往由一个顶层测试模块和多个可
       综合模块和若干个外围接口模块构成。
 
 
Verilog测试模块结构:
`timescale 1ns/1ns
`include  可综合模块.v    .  .  .  .
`include  外围电路.v       .  .  .  .
`include  激励信号.v       .  .  .  .
module top;
wire   连线定义  .  .  .  .
Reg    初试化块中寄存器定义  .  .  .  .
initial  begin  
             定义波形记录、输入数据文件、记录输出文件
             监视重要信号、记录重要时刻、设置仿真时间等。              
            end
 
信号模块   xh1( .clock( clk), .reset(rst), .ack(ackn) . . . . .);  
    .   .   .   .   .
可综合模块  mysj1(. clock(clk), reset(rst),.ack(ackn) . . .); 
    .   .   .   .   .
外围模块      ram1(.read(rd), .write(wrt), .data(databus) . . .);
    .   .   .   .   .
endmodule                               
 

 

常用的综合工具:

  - Synplify

  - Exemplar

  - Synopsys Express

  - Synopsys Designer

常用的仿真工具:

   - Verilog -XL

   - NC -Verilog

   - ModelSim

   - VeriBest

   - ViewLogic

 

net类的类型(线网)

 

wire类型是最常用的类型,只有连接功能。

wiretri类型有相同的功能。用户可根据需要将线网定义为wiretri以提高可读性。例如,可以用tri类型表示一个net有多个驱动源。或者将一个net声明为tri以指示这个net可以是高阻态Z(hign-impedance)。可推广至wandtriandwortrior

wandwor有线逻辑功能;与wire的区别见下页的表。

trireg类型很象wire类型,但trireg类型在没有驱动时保持以前的值。这个值的强度随时间减弱。

修改net缺省类型的编译指导:

`default_nettype  <nettype>

 nettype不能是supply1supply0
 
 
 

信号类型确定方法总结如下:

 

信号可以分为端口信号和内部信号。出现在端口列表中的信号是端口信号,其它的信号为内部信号。

对于端口信号,输入端口只能是net类型。输出端口可以是net类型,也可以是register类型。若输出端口在过程块中赋值则为register类型;若在过程块外赋值(包括实例化语句),则为net类型。

内部信号类型与输出端口相同,可以是netregister类型。判断方法也与输出端口相同。若在过程块中赋值,则为register类型;若在过程块外赋值,则为net类型。

若信号既需要在过程块中赋值,又需要在过程块外赋值。这种情况是有可能出现的,如决断信号。这时需要一个中间信号转换。

 

 

 

下面所列是常出的错误及相应的错误信息(error message)

 

用过程语句给一个net类型的或忘记声明类型的信号赋值。

           信息:illegal  …… assignment.

将实例的输出连接到声明为register类型的信号上。

           信息:<name> has illegal output port specification.

将模块的输入信号声明为register类型。

           信息:incompatible declaration, <signal name> ……

责任编辑:5life

更多相关 HDL veirlog VHDL 的文章

HDL语言的历史 [2006-02-27]
Verilog HDL的基础知识 [2006-01-07]
硬件描述语言HDL的现状与发展 [2006-01-06]
verilog HDL笔记 [2006-01-06]
Verilog HDL 程序举例 -- 7段译码器 [2006-01-05]
硬件描述语言(HDL)的基础知识及其应用 [2005-12-18]
谈VHDL/Verilog的可综合性以及对初学者的一些建议 [2005-12-18]
中文版Verilog HDL简明教程 [2005-12-18]
用HDLScore做覆盖率分析 [2005-12-18]
本文共有0条评论,现在显示最新的5条。

栏目导航

电路基础
硬件语言
逻辑验证
电路综合
后端设计
可测设计
基本逻辑
制造工艺
书籍精选
说文解字
工具学习
数字滤波
趣闻逸事
数字锁相
设计杂项
低耗设计

站点最新

更多相关链接

  Verilog 的些许经验
  编程修养[C语言]
  Verilog学习笔记(More)
  编码风格 --- 命名规则
  编码风格 --- 其他
  编码风格 --- 与综合相关
  编码风格 --- 编写风格
  编码风格 --- 注释
  编码风格 --- 设计考虑
  系统级芯片设计语言和验...

栏目最新

更多相关链接

  Verilog 的些许经验
  编程修养[C语言]
  Verilog学习笔记(More)
  编码风格 --- 命名规则
  编码风格 --- 其他
  编码风格 --- 与综合相关
  编码风格 --- 编写风格
  编码风格 --- 注释
  编码风格 --- 设计考虑
  系统级芯片设计语言和验...

热点文章

更多相关链接