集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 3139|回复: 3

零基础学FPGA(三)Verilog语法基基础基础

[复制链接]
fpga_feixiang 发表于 2017-11-16 15:11:38 | 显示全部楼层 |阅读模式
1、模块的结构

  模块呢,是Verilog的基本设计单元,它主要是由两部分组成,一个是接口,另一个是逻辑。下面举一个小例子说明一下:

  module xiaomo (a,b,c,d);

  input a,b;

  output c,d;

  assign c=a|b;

  assign d=a&b;

  endmodule

  所谓接口就是第二,三行,说明了一个模块的信号流向,很明显,a,b是输入,c,d是输出;第四第五行是逻辑,即输入和输出之间的关系即c的值是a或b的结果。assign 是连续赋值语句,这个以后再说。

  第一行是模块的端口声明,即说明一个模块具体有那几个接口,有多少接口写多少,直接套模板就可以module(接口1,接口2……);endmodule代表此模块结束;

  2、模块的内容

  模块的内容包括3个部分,I/O说明,内部信号说明和功能定义。

  关于I/O说明有三种格式,即输入、输出、输入输出,第三种格式代表信号可以双向传送。在写I/O说明的时候要注明信号位宽,即由几位组成,例如 input [7:0] xiaomo;代表输入一个8位的信号“小墨”,注意这里要用中括号,第一位是位宽减1,接一个冒号,再接数字0,再接端口名;

  关于内部信号说明要用到和端口有关的wire和reg类型变量的声明。模板和上面类似,关于reg和wire变量后面再说。

  关于功能定义是模块中最重要的部分,有三种方法可在模块中产生逻辑

  (1)用assign声明语句,assign 语句主要用于组合逻辑电路

  (2)用实例元件,例如 and #2 u1(q,a,b);(这个我自己概念也有点模糊,不知道怎么解释)

  (3)用always块,例如 always @(clk or clr)

  begin

  ………

  end;

  always语句既可以用于描述组合逻辑,也可以描述时序逻辑,但主要以描述时序逻辑电路为主。

  小结

  在verilog语法中,所有的过程块(包括initial块,always块),连续赋值语句,实例引用都是并行的,也就是说在一个模块中遇到这些语句就是同时执行的,而且没有先后次序。只有连续赋值语句assign和实例引用语句可以独立于过程块存在于模块的功能定义部分,即这两种语句可以不用在那两个过程块里执行,也可以在模块的功能定义部分执行,例如第一个例子。

  这些和C语言有点不同,对于初学者来说应该都要弄明白。

  3、数据类型、变量、常量

  对于初学者来说,数据类型只要掌握好reg,wire,integer和parameter型就够了,其他类型可以暂时不用去理会。

  (1)常量就不说了,比较基础。

  (2)参数型(parameter型)

  parameter是用来定义一个常量的,个人理解和C语言里面的int,float 语句一样,不一样的是parameter既可以定义整型,也可以定义浮点型或者是表达式。例如

  

360桌面截图20140225201109.jpg


  (3)变量

  wire型数据常用来表示用以assign关键字指定的组合逻辑信号。Verilog程序模块中输入、输出信号类型默认时自动定义成wire型。例子

  

360桌面截图20140225202514.jpg


  reg型数据是寄存器变量,常用来表示always块中的指定信号,常代表触发器。注意,在always块中被赋值 的每一个信号都必须定义为reg型

  。

  

360桌面截图20140225202921.jpg


  

360桌面截图20140225203249.jpg


  上面这句话表示不理解,求大神解释...先放这儿吧..

  memory型

  由于Verilog中没有多维数组的存在,memory数据就是通过扩展reg型数据的地址范围来生成的,他的格式为

  reg[n-1:0] 存储器名[m-1:0];

  我举个例子,比如我定义 reg[7:0] xiaomo[255:0];

  这句话的意思是说,我定义了一个名叫“小墨”的存储器,这个存储器中有256个8位reg型寄存器,只要理解了这句话,就差不多了。注意,当没有中括号时代表的是一位,例如

  reg xiaomo[m-1:0];代表一个名为“小墨”的存储器,里面有m个1位的reg型寄存器。
zxopenljx 发表于 2019-8-4 08:42:33 | 显示全部楼层
谢谢楼主分享
月影星痕 发表于 2019-8-4 09:26:08 | 显示全部楼层
零基础学FPGA(三)Verilog语法基基础基础
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-24 00:23 , Processed in 0.056928 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表