您的位置:首页 > 健康 > 养生 > 米联客-FPGA程序设计Verilog语法入门篇连载-03 Verilog语法_基础语法

米联客-FPGA程序设计Verilog语法入门篇连载-03 Verilog语法_基础语法

2024/10/6 10:27:31 来源:https://blog.csdn.net/u011570052/article/details/141197857  浏览:    关键词:米联客-FPGA程序设计Verilog语法入门篇连载-03 Verilog语法_基础语法

软件版本:无

操作系统:WIN10 64bit

硬件平台:适用所有系列FPGA

板卡获取平台:https://milianke.tmall.com/

登录“米联客”FPGA社区 http://www.uisrc.com 视频课程、答疑解惑!

1概述

本节主要讲解基础语法包含语法格式注释标识符关键字数值类与表示字符串

2语法简介

2.1 格式

1、不换行例:

always@(*)begin case(s)2'b00:q <= d[0];2'b01:q <= d[1];2'b10:q <= d[2];2'b11:q <= d[3];endcase end

2、换行例:

always@(*)
begincase(s)2'b00:q <= d[0];2'b01:q <= d[1];2'b10:q <= d[2];2'b11:q <= d[3];endcase
end

一般的书写方式推荐使用换行这个形式,比较容易理解和方便阅读。

2.2 注释

注释一般分为两种,一种单行注释,使用“//”;另一种多行注释,使用“/*  */”。例:

module MUX4_1(input [3:0]d,//MUX输入input [1:0]s,//选择信号output reg q);
/*
4选1 MUX设计
使用的组合逻辑设计
寄存输出
*/
always@(*)
begincase(s)2'b00:q <= d[0];2'b01:q <= d[1];2'b10:q <= d[2];2'b11:q <= d[3];endcase
end

其中关键符号“//”表示单行注释,“/*    */”表示多行注释,使用注释可以使得程序设计可读性较高,方便进行编程理解。

2.3 关键字与标识符

Verilog HDL中的标识符可以是任意一组字母、数字、$符号和_(下划线)符号的组合,但标识符的第一个字符必须是字母或者下划线开头,不能是$符号和数字。另外注意,标识符是区分大小写的。

Verilog HDL定义了一系列保留字,叫做关键字,它仅用于某些上下文中。注意只有小写的关键词才是保留字。

下面列出了Verilog-1364-2005语言中的所有关键字。

  1. always
  2. and
  3. assign
  4. automatic
  5. begin
  6. buf
  7. buff0
  8. buff1
  9. case
  10. casex
  11. casez
  12. cell
  13. cmos
  14. config
  15. deassign
  16. default
  17. defparam
  18. disable
  19. edge
  20. else
  21. end
  22. endcase
  23. endconfig
  24. endfunction
  25. endgenerate
  26. endmodule
  27. endprimitive
  28. endspecify
  29. endtable
  30. endtask
  31. event
  1. for
  2. function
  3. force
  4. forever
  5. fork
  6. generate
  7. genvar
  8. highz0
  9. highz1
  10. if
  11. ifnone
  12. ifcdir
  13. include
  14. initial
  15. inout
  16. input
  17. instance
  18. integer
  19. join
  20. large
  21. liblist
  22. library
  23. localparameter
  24. macromodule
  25. medium
  26. module
  27. nand
  28. negedge
  29. nmos
  30. nor
  31. not
  1. notif0
  2. notif1
  3. noshowcancelled
  4. notif0
  5. notif1
  6. pmos
  7. pulsestyle_onevent
  8. pulsestyle_ondetect
  9. rcmos
  10. real
  11. realtime
  12. reg
  13. release
  14. repeat
  15. rnmos
  16. rpmos
  17. rtran
  18. rtranif0
  19. rtranif1
  20. scalared
  21. showcanclled
  22. signed
  23. small
  24. specify
  25. specparam
  26. strong0
  27. strong1
  28. supply0
  29. supply1
  30. table
  31. task
  32. time
  1. tran
  2. or
  3. posedge
  4. output
  5. parameter
  6. tranif0
  7. tranif1
  8. tri
  9. tri0
  10. tri1
  11. triand
  12. trior
  13. trireg
  14. unsigned
  15. use
  16. uwire
  17. vertored
  18. wait
  19. wand
  20. weak0
  21. weak1
  22. while
  23. wire
  24. wor
  25. xnor
  26. xor
  27. primitive
  28. pull0
  29. pull1
  30. pulldown
  31. pullup

这里仅列出关键字,不进行具体的讲解,等后续语法用到进行详细讲解。亦或感兴趣的可以自己去查资料了解各关键字含义。

2.4 数值种类及表示方法

2.4.1数值种类

Verilog 中有四种基本的值来表示数字电路中的电平逻辑:

  1. 0:逻辑 0 低电平
  2. 1:逻辑 1 高电平
  3. x 或 X:未知
  4. z 或 Z:高阻态

“x”意味着信号数值的不确定,信号可能为 1,也可能为 0。

“z”意味着信号处于高阻态,常见于信号(input, reg)没有驱动时的数字逻辑结果。比如一个 pad 的 input 呈现高阻状态时,其逻辑值和上下拉的状态有关系。上拉则逻辑值为 1,下拉则为 0 。

2.4.2数值表示方法

Verilog 中有四种合法的基数格式,分别是二进制,八进制,十进制,十六进制,分别使用下列字符标识:

  1. 二进制 'b / 'B
  2. 八进制 'o / 'O
  3. 十进制 'd / 'D
  4. 十六进制 'h / 'H

数值可以指明位宽,也可以不指明位宽。一般格式为<位宽><进制><数字>

比如

指明位宽

assign test=16’h2581;

不指明位宽

assign test=’h2581;

2.5 字符串

字符串是由双引号包括起来的字符队列。字符串不能多行书写,即字符串中不能包含回车符。当字符串存储于寄存器中,每个字符要占8位,字符以ASCII代码形式存储。Verilog HDL语言的字符串的定义和C语言不一样。在C语言中需要用而在Verilog HDL语言中不需要用ASCII代码的0字符来表示字符串的结束。例如,为存储字符串 "www.uisrc.com", 需要 13*8bit 的存储单元。例:

reg [0: 13*8-1]       string ;assign string = "www. uisrc.com";

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com