自学FPGA:Verilog基本语法规则(一)

发布时间:2020-3-15 14:54    发布者:dameihuaxia
1.词法规定
  1.1间隔符
  (类似于C语言

  1.2标识符和关键词
      标识符:英文字母、数字、$符和下划线组成(首字符必须为英文字母或下划线)。

      转义标识符:如:\***。

2.四种逻辑值
0        逻辑0、逻辑假
1        逻辑1、逻辑真
x或X        不确定值(未知逻辑状态)
z或Z        高阻态
3.八种强度值
                                                                        最强————>最弱
强度等级名称        supply        strong       
pull

large        weak        medium        small        highz
类型        驱动        驱动        驱动        存储        驱动        存储        存储        高阻抗
4.常量及其表示
  4.1整数型表示
    格式:   

<+/- size>'
  例如:

3'b101          //3位二进制数101
5'o37           //5位八进制数37
8'b1001_1100    //八位二进制数,等同于8'b10011100
  注意:在这里的‘_’无实际意义,可以随便在整数或实数中使用,方便读数。



  4.2实数型常量
(实数通过四舍五入转换为整数)

  例如:

  42.45转换为整数42; 92.5,92.699转化为93;-15.62转换为-16.  



  4.3字符串常量
(每个字符串包括空格都被看做8位的ACSII值序列)

  例如:

  存储字符串"FPGA"就需要定义一个8*4位的变量。

reg [8*4:1] messsage;
initial begin
    message = "FPGA";
end
  对于初学者来说,reg、initial这些请无视掉,只用了解这个格式就行。



  4.4参数语句
  格式:

parameter
    param1 = xxxx,
    param2 = xxxx,
    ......;
  parameter声明的符号常量常量通常出现在module(模块)内部,参数常用于指令yan'延迟、变量的wei'位宽和状态值de等(类似于C语言的局部参数)

  补:define是宏定义,通常放在module外部,改常量是一个全局变量。

  localparam(局部参数)是模块内部参数(无传递,类似于C语言的函数内部参数)。

  5.数据类型
  5.1线网类型
  wire、tri(wire为一般连线;tri为驱动的线网);

  wor、trior(一个线网被多个信号驱动qing情况);

  wand、triand(一个线网被多个信号驱动qing情况);

  trireg(电荷保持特性);

  tri1(上拉电阻);

  tri0(下拉电阻);

  supply1(电源建模、高点平);

  supply0(对地建模、低电平)。



  线网变量声明:

<[msb:lsb]>变量1,2,3,...,n;
  例如:

wire A,B;                //两个1位wire类型的变量
wire [7:0] Databus;      //Databus位8位向量的wire变量
supply0 logic_0,vss;     //‘地’
supply1 logic_1,vdd;     //‘电源线’
  建议别对同一变量多次赋值。



  5.2寄存器类型
(只能在initial或always块内部被赋值)

  reg、integer、time未赋值前为x;

  real、realtime默认值是0.

  reg:寄存器变量,默认值是x

  格式

reg <[msb:lsb]> 变量1,2,3,...,n;
  例如:

reg clock,a;      //1位的reg型变量clock,a;
reg [3:0] cnt;    //4位的reg型变量cnt,等效于:cnt[3],cnt[2],cnt[1],cnt[0];
  integer:整数型寄存器变量

  (变量保持的是整数值)

  格式:

integer 1,2,3,...,n<[msb:lsb]>;
  例如:

integer A,B,C;         //3个整数型变量;
integer HINT[3:0];     //一个由四个整数变量组成的数组;
  tiem型变量主要用于存储和处理仿真时间

time 1,2,3,...,n [msb:lsb]
  reale和realtime变量通产用于对实数型产量常量进行存储和运算,实数不能定义范围,默认值是0

real 1,2,3,...,n;          //实型变量声明
realtime 1,2,3,...,n;      //实型时间变量声明
  参考文献
  1.《FPGA自学笔记——设计与验证》

  2.《可编程逻辑电路设计基础教程》

  3.《Verilog HDL与FPGA数字系统设计》

  4.《Verilog HDL入门》
————————————————
版权声明:本文为CSDN博主「JaysonRen」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/JaysonRen/article/details/82179137

本文地址:https://www.eechina.com/thread-579067-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表