关于学习FPGA,Verilog HDL,的基本知识㈠

(一)初识Verilog HDL

Verilog HDL既是一种行为描述语言,也是一种结构描述语言。如果按照一定的规则和风格编写代码,就可以将功能模块通过工具自动转化为门级互连的结构模块。

Verilog硬件描述语言具有以下功能与特点。

1、基本逻辑门如and or和,nand等都内置在语言中。

2、用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。

3、Verilog HDL中有两类数据类型:线网数据类型和寄存器数据类型。线网数据类型表示构件间的物理连线,而寄存器数据类型表示抽象的数据存储元件。

4、提供强有力的文件读写能力。

5、Verilog HDL 的表述能力

描述级别抽象级别功能描述物理模型
行为级    系统级用语言提供的高级结构实现所设计模块外部性能的模型芯片、电路板和物理划分的子模块
算法级用语言提供的高级功能实现算法运行的模块部件之间的物理连接、电路板
RTL级描述数据如何在寄存器之间流动和如何处理、控制这些数据流动的模型芯片、宏单元
逻辑级  门级描述逻辑门和逻辑门之间的模型标准单元分布
电路级开关级描述器件中三极管和存储节点以及他们之间连接的模型晶体管分布

(二)Verilog HDL 的开发流程

(三)Verilog HDL 的基本概念

1.1程序格式

     模块是Verilog HDL的基本描述单位用于描述某个设计的功能或结构,以及与其他模块通信的外部接口。在Verilog HDL中使用大约100个预定义的关键词定义该语言的结构,Verilog HDL使用一个或多个模块对数字电路建模,模块代表硬件上的逻辑实体,其范围可以从简单的门到整个大的系统。一个模块可以包括整个设计模型或者设计模型的一部分。

    每个模块都是以关键词module开始,以关键词endmodule来结尾。模块定义的一般格式如下:

module  模块名(端口名1,端口名2,端口名3,...);
    端口类型说明(input,ouput,inout);
    参数定义(可选);
    数据类型定义(wire,reg等);
    
实例化低层模块和基本门级元件;
连续赋值语句(assign);
过程块结构(initial 和 always)
  行为描述语句;
endmodule

说明如下:

        1、“模块名”是模块唯一的标识符。

        2、圆括号中以逗号分隔列出的端口名是该模块的输入,输出端口。

        3、“端口类型说明”为input(输入),output(输出),inout(双向端口)三者之一,凡是在模块名后面圆括号中出现的端口名,都必须明确的说明其端口类型。

        4、“参数定义”是将常量用符号常量代替,以增加程序的可读性和可修改性,他是一个可选择的语句。

        5、“数据类型定义”部分用来指定模块内所用的数据对象是寄存器类型(reg等),还是连线类型(wire等)。

        6、数据流描述方式。用数据流描述方式对一个设计建模的最基本机制是使用连续赋值语句(assign),在连续赋值语句中,逻辑表达式右边的变量受到持续监控,一旦这些变量中任何一个发生变化,整个表达是将被重新计算,并将变化赋值给左边的线网变量。对组合逻辑电路建模,使用该方法非常方便。

举个例子

        构建一个没有输入的电路和一个输出输出常量0;

代码如下:

module top_module(
    output zero
);// Module body starts after semicolon
    assign zero = 0;
endmodule

时序图如下:

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值