您的位置 首页 电路

零根底学FPGA(三)Verilog语法基根底根底(上)

这几天复习了一下Verilog的语法知识,就借此写写我对这些东西的想法吧。感觉呢,是和C语言差不多,具有C语言基础的朋友学起来应该没什么问题,和C语言相同的地方就不说了吧,重点说一下不同点吧。

  这几天温习了一下Verilog的语法常识,就借此写写我对这些东西的主意吧。感觉呢,是和C言语差不多,具有C言语根底的朋友学起来应该没什么问题,和C言语相同的当地就不说了吧,要点说一下不同点吧。

  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型寄存器。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/dianlu/117440.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部