FPGA学习笔记1
一、Verilog语言
Verilog HDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。
Verilog 设计的基本单元是模块(module)
它的基本形式为module name
(
a,
b,
c
);
input a;
input b;
output c;
xxxxxxxx
endmodule
name为设计的模块的名字,双括号之间的是模块的信号,并定义其类型,是输入或者输出。然后再将他们用时序逻辑或组合逻辑给定一定的联系,使他们能够实现某种特定的功能。
例如module add(a,b,c);
input a;
input b;
output c;
assign c = a + b;
endmodule
这就是一个简单的加法器的设计。
二、模块功能设计
一个模块的信号设计好之后就是怎样才能让他们实现特定的功能,这时候就要来描述他们之间的逻辑了。
always()块,当括号里的条件符合后,就会进入到always块里去执行相应的语句,一般用来描述时序逻辑。
assign语句,一般用来描述组合逻辑,不用考虑到信号之间的时序匹配问题。
数据信号类型,在功能的设计中也会像C语言一样来定于信号的数据类型,比较常见的有reg型,wire型。
reg英语单词原型为regist,意思是寄存器,用来暂时存储信号,比如定义一个数据reg a[3:0];这时a是用有4位的一个寄存器型数据,它可以用来存储4位2进制数据,input信号默认为reg型。
wire的英文意思为线,在Verilog中,wire型数据就像一条数据线一样,连接两个端口,完成数据传输,output的信号默认为wire型。
paramter 类似于C语言中的宏定义,给一些数据常量给与特定的名称,方便阅读和调用,paramter result = 7,定义result的值为7,还要localparam,他的功能和paramter类似,但localparem定义的数据只能在本模块中有效,在其他模块中并不等于它定义的有效值。localparam定义的参数是不能进行模块的参数传递,而paramter可以。
还要许多数据类型,暂时只学到了这些,所以只列举了几个。