Verilog HDL 建模概述
出处:wanglin312 发布于:2007-04-29 10:09:31
连线;器件也可简单归纳为组合逻辑器件(如与或非门等)和时序逻辑器件(如寄存器、锁存
器、RAM等)。一个数字系统(硬件)就是多个器件通过一定的连线关系组合在一块的。因此,
Verilog HDL 的建模实际上就是如何使用HDL语言对数字电路的两种基本要素的特性及相互之间的
关系进行描述的过程。
模块(module )是Verilog 的基本描述单位,用于描述某个设计的功能或结构及与其他模块通
信的外部端口。
模块在概念上可等同一个器件就如我们调用通用器件(与门、三态门等)或通用宏单元(计
数器、ALU、CPU)等,因此,一个模块可在另一个模块中调用。
一个电路设计可由多个模块组合而成,因此一个模块的设计只是一个系统设计中的某个层次
设计,模块设计可采用多种建模方式。
下面先介绍几个简单的Verilog HDL 程序。
例[1] 加法器
module addr (a, b, cin, count, sum);
input [2:0] a;
input [2:0] b;
input cin;
output count;
output [2:0] sum;
assign {count,sum} = a +b + cin;
endmodule
该例描述一个3位加法器,从例子可看出整个模块是以module 开始,endmodule 结束。
input [1:0] a,b; // declare the input signal ;
output equare ; // declare the output signal;
assign equare = (a == b) ? 1:0 ;
/ * if a = b , output 1, otherwise 0;*/
endmodule
2004-08-16 第9页,共41页
版权所有,侵权必究
绝密
Verilog HDL 入门教程请输入文档编号
读懂代码,对编译并不起作用。
input din;
input d_en;
output d_out;
// -- Enter your statements here -- //
assign d_out = d_en ? din :'bz;
endmodule
module trist (din, d_en, d_out);
input din;
input d_en;
output d_out;
// -- statements here -- //
endmodule
该例描述了一个三态驱动器。其中三态驱动门在模块 mytri 中描述,而在模块trist 中调用了模
例化名 u_mytri 。
通过上面的实例可看出,一个设计是由一个个模块(module )构成的。一个模块的设计如
下:
1、模块内容是嵌在module 和endmodule 两个语句之间。每个模块实现特定的功能,模块可进
行层次的嵌套,因此可以将大型的数字电路设计分割成大小不一的小模块来实现特定的功能,
后通过由顶层模块调用子模块来实现整体功能,这就是Top-Down 的设计思想,如 3.3.1的例[3]。
模块的端口定义部分:
如上例: module addr (a, b, cin, count, sum); 其中module 是模块的保留字,addr 是模块的名
模块的内容,包括I/O说明,内部信号、调用模块等的声明语句和功能定义语句。
I/O说明语句如:input [2:0] a; input [2:0] b; input cin; output count; 其中的input 、
版权所有,侵权必究
绝密
Verilog HDL 入门教程请输入文档编号
mytri u_mytri(din,d_en,d_out);
功能描述用来产生各种逻辑(主要是组合逻辑和时序逻辑,可用多种方法进行描述,具体的
用法下面章节有介绍),还可用来实例化一个器件,该器件可以是厂家的器件库也可以是我们自
己用HDL设计的模块(相当于在原理图输入时调用一个库元件)。在逻辑功能描述中,主要用到
assign 和always 两个语句。
当然,对测试模块,可以没有输入输出口。
4、Verilog HDL 的书写格式自由,一行可以写几个语句,也可以一个语句分几行写。具体由
代码书写规范约束。
5、除endmodule 语句外,每个语句后面需有分号表示该语句结束。
1. 一个模块的基本语法如下:
一个模块的基本语法如下:
module module_name (port1, port2, ......) ;
input, output, inout,
reg, wire, parameter,
function, task, . . .
//S t a t e m e n t s :
Initial statement
Always statement
Module instantiation
Gate instantiation
Continuous assignment
endmodule
数等进行描述。语句区用来对功能进行描述如:器件调用(Module instantiation )等。
一个模块用一个文件;
模块名与文件名要同名;
一行一句语句。
信号方向按输入、输出、双向顺序描述。
设计模块时可尽量考虑采用参数化,提高设计的重用。
以上是初学者的建议,具体的或深入的方面可看相关的文档。下面的有关语法建议类似。
来源:零八我的爱
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- PLC的34个基础知识2024/1/17 16:25:58
- 印刷电路板的组装方法2023/9/15 17:04:46
- 模拟量输入测量值显示满量程(上溢)的故障处理方法2023/8/31 11:09:13
- 什么是PLC?看完就明白2023/5/5 16:37:01
- 可编程逻辑控制器 (PLC) 中的梯形逻辑2023/4/23 15:48:34