Verilog HDL 学****笔记(一)基本语法特征
一、简单的Verilog模块
module block(a,b,c,d); //模块名为block,有四个口a,b,c,d
input a,b;
output c,d; /*这两行指出哪些是输入,哪些是输出*/
assign c=a|b;
assign d=a&b; //这两行是功能定义
endmodule
该程序中可以看出:
1、整个程序在module和endmodule之间。
2、除最endmodule句外,每句话后加分号。
//单行注释,/* */任意位置注释。
一个程序中可以有多个模块,处于最上方的叫顶模块,下面的叫子模块,子模块需要顶模块来实现整体功能。且,模块可嵌套。(类似于matlab)。
模块需要有模块名,接口,接口I/O说明,内部信号声明(这里好像未体现),功能定义等。
:module 模块名(口一,口二,…,端口N);
2. I/O说明格式如下:
input 端口名一,端口名二,……,端口名N;
output 端口名一,端口名二,……,端口名N;
也可以把I/O说明写到模块声明里,比如上面的模块的声明与I/O声明可改为:
module (input a,input b,output c,output d) ;
:
定义。这种很简单:如例中的:
assign c=a|b;
(我的理解,就相当于用一个C语言里的库函数)
如:and and_inst(q,a,b)
用法是键入元件的名字和相连的引脚即可。
用always块可以实现一些复杂的逻辑,比如用if-else语句等。
(暂不太懂,将来再说)
下面一段先抄上来,慢慢理解:
注意:如果有Verilog模块实现一定的功能,首先应该清楚哪些是同时发生的,哪些是顺序发生的。上面
Verilog HDL 学习笔记(一)基本语法特征 来自淘豆网www.taodocs.com转载请标明出处.