FPGA学习笔记1

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可以。

还要许多数据类型,暂时只学到了这些,所以只列举了几个。

你可能感兴趣的:(FPGA)