0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA入门之模块结构

jf_78858299 来源:CSDN 作者:原来如此呀 2023-03-21 10:35 次阅读

3.1 模块介绍

模块( module)是 Verilog 的基本描述单位, 是用于描述某个设计的功能或结构及与其他模块通信的外部端口

模块在概念上可等同一个器件,就如调用通用器件(与门、三态门等)或通用宏单元(计数器、ALU、 CPU)等。因此,一个模块可在另一个模块中调用,一个电路设计可由多个模块组合而成。一个模块的设计只是一个系统设计中的某个层次设计,模块设计可采用多种建模方式。

Verilog 的基本设计单元是―模块‖。采用模块化的设计使系统看起来更有条理也便于仿真和测试,因此整个项目的设计思想就是模块套模块,自顶向下依次展开。 在一个工程的设计里,每个模块实现特定的功能,模块间可进行层次的嵌套。

对大型的数字电路进行设计时,可以将其分割成大小不一的小模块,每个小模块实现特定的功能,最后通过由顶层模块调用子模块的方式来实现整体功能,这就是 Top-Down 的设计思想。 本书主要以 Verilog 硬件描述语言为主,模块是 Verilog 的基本描述单位,用于描述每个设计的功能和结构,以及其他模块通信的外部接口

模块有五个主要部分:端口定义、参数定义(可选)、 I/O 说明、内部信号声明、功能定义。模块总是以关键词 module 开始,以关键词 endmodule 结尾。它的一般语法结构如下所示:

1679366060(1).png

3.2 模块名和端口定义

第 1 至 5 行声明了模块的名字和输入输出口。其格式如下:module 模块名(端口 1,端口 2,端口 3, ……);其中模块是以 module 开始,以 endmodule 结束。模块名是模块唯一的标识符, 一般建议模块名尽量用能够描述其功能的名字来命名,并且模块名和文件名相同。

模块的端口表示的是模块的输入和输出口名,也是其与其他模块联系端口的标识。

3.3 参数定义

第 8 行参数定义是将常量用符号代替以增加代码可读性和可修改性。这是一个可选择的语句,用不到的情况下可以省略,参数定义一般格式如下:

parameter DATA_W = x;

3.4 接口定义

第 9 至 12 行是 I/O(输入/输出)说明,模块的端口可以是输入端口、输出端口或双向端口。其说明格式如下。

输入端口: input [信号位宽-1 : 0] 端口名 1;

input [信号位宽-1 : 0] 端口名 2;

……;

输出端口:output [信号位宽-1 : 0] 端口名 1;

output [信号位宽-1 : 0] 端口名 2;

……;

双向端口: inout [信号位宽-1 : 0] 端口名 1;

inout [信号位宽-1 : 0] 端口名 2;

……;

3.5 信号类型

第 14 至 17 行定义了信号的类型。 这些信号是在模块内使用到的信号,并且与端口有关的 wire和 reg 类型变量(即线网型与寄存器型)。 其声明方式如下:

reg [width-1 : 0] R 变量 1, R 变量 2 ……;

wire [width-1 : 0] W 变量 1, W 变量 2……;

如果没有定义信号类型,默认是 wire 型,并且信号位宽为 1。

3.6 功能描述

第 21 至 31 行是功能描述部分。模块中最重要的部分是逻辑功能定义部分, 有三种方法可在模块中产生逻辑。

用“assign”声明语句,如描

述一个两输入与门: assign a = b & c。 详细功能见“功能描述-组合逻辑”一节。

用“always”块。即前面介绍的时序逻辑和组合逻辑。

模块例化。详细功能见“模块例化”一节。

3.7 模块例化

对数字系统的设计一般采用的是自顶向下的设计方式, 可将系统划分成几个功能模块,每个功能模块再划分成下一层的子模块。每个模块的设计对应一个 module , 每个 module 设计成一个 Verilog HDL 程序文件。因此,对一个系统的顶层模块采用结构化设计,即顶层模块分别调用了各个功能模块。

一个模块能够在另外一个模块中被引用,这样就建立了描述的层次。模块实例化语句形式如下:

module_nameinstance_name(port_associations) ;

信号端口可以通过位置或名称关联, 但是关联方式不能够混合使用。端口关联形式如下:port_expr / /通过位置。.

PortName (port_expr) / /通过名称。

1679366012(1).png

1679366003(1).png

建议:在例化的端口映射中请采用名字关联,这样,当被调用的模块管脚改变时不易出错。在实例化中,可能有些管脚没用到,可在映射中采用空白处理,如:

1679365973(1).png

输入管脚悬空端口的输入为高阻 Z,由于输出管脚是被悬空的,该输出管脚废弃不用。

————————————————

版权声明:本文为CSDN博主「原来如此呀」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/Royalic/article/details/121151907

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块
    +关注

    关注

    7

    文章

    2654

    浏览量

    47282
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10798

    浏览量

    210708
  • Verilog
    +关注

    关注

    28

    文章

    1343

    浏览量

    109913
  • 计数器
    +关注

    关注

    32

    文章

    2252

    浏览量

    94250
  • 器件
    +关注

    关注

    4

    文章

    302

    浏览量

    27762
收藏 人收藏

    评论

    相关推荐

    FPGA如何从入门到高手?

    本文首先介绍了FPGA的特点与FPGA芯片结构,其次分析了FPGA与ASIC及CPLD对比,最后介绍了FPGA基础
    发表于 05-30 08:39 3.7w次阅读
    <b class='flag-5'>FPGA</b>如何从<b class='flag-5'>入门</b>到高手?

    如何快速入门FPGA

    电路。它允许用户通过编程对内部的逻辑模块和I/O模块进行重新配置,以实现特定功能。FPGA具有静态可重复编程和动态在系统重构的特性。 熟悉FPGA的基本
    发表于 04-28 08:54

    如何快速入门FPGA

    电路。它允许用户通过编程对内部的逻辑模块和I/O模块进行重新配置,以实现特定功能。FPGA具有静态可重复编程和动态在系统重构的特性。 熟悉FPGA的基本
    发表于 04-28 09:06

    FPGA入门资料

    本帖最后由 eehome 于 2013-1-5 09:55 编辑 哪位大侠有FPGA入门级的资料,跪求!!!关于FPGA可以实现哪些功能,进行哪些方面的功能扩展,比如内嵌硬核、
    发表于 07-22 08:45

    FPGA入门知识介绍

    FPGA入门知识还应该包含FPGA工作原理、FPGA的基本特点、FPGA芯片结构等基础的知识,
    发表于 08-16 10:32

    FPGA入门:内里本质探索——器件结构

    本帖最后由 rousong1989 于 2015-1-27 11:45 编辑 FPGA入门:内里本质探索——器件结构本文节选自特权同学的图书《FPGA/CPLD边练边学——快速
    发表于 01-27 11:43

    Xilinx FPGA无痛入门,海量教程免费下载

    SF-SP6入门指南 -- PLL实例基本配置Lesson27 特权Xilinx FPGA SF-SP6入门指南 -- PLL实例
    发表于 07-22 11:49

    Xilinx FPGA入门连载38:SRAM读写测试设计概述

    `Xilinx FPGA入门连载40:SRAM读写测试设计概述特权同学,版权所有配套例程和更多资料下载链接:http://pan.baidu.com/s/1jGjAhEm 1 功能简介如图所示,本
    发表于 12-18 12:57

    Xilinx FPGA入门PLL实例的基本配置

    Xilinx FPGA入门连载24:PLL实例基本配置 1 工程移植可以复制上一个实例sp6ex7的整个工程文件夹,更名为sp6ex8。然后在ISE中打开这个新的工程。 2 新建IP核文件
    发表于 01-21 21:33

    JavaWeb入门响应的结构

    JavaWeb入门—响应的结构
    发表于 05-15 06:00

    [NI技术]-LabVIEW-FPGA代码模块设计

    [NI技术]-LabVIEW-FPGA代码模块设计,入门级资料。
    发表于 05-17 16:41 34次下载

    FPGA入门技术教程

    FPGA入门技术教程,适合新手刚入门的时候看
    发表于 01-24 16:29 47次下载

    FPGA模块化设计与AlteraHardCopy结构化ASIC

    本文档的主要内容详细介绍的是FPGA模块化设计与AlteraHardCopy结构化ASIC。
    发表于 01-20 17:03 6次下载
    <b class='flag-5'>FPGA</b><b class='flag-5'>模块</b>化设计与AlteraHardCopy<b class='flag-5'>结构</b>化ASIC

    FPGA入门什么是FPGA

    专用集成电路( ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。简而言之, FPGA 就是一个可以通过编程来改变内部结构的芯片 。
    的头像 发表于 03-21 10:21 1138次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>入门</b><b class='flag-5'>之</b>什么是<b class='flag-5'>FPGA</b>

    FPGA编程语言的入门教程

    FPGA(现场可编程逻辑门阵列)的编程涉及特定的硬件描述语言(HDL),其中Verilog和VHDL是最常用的两种。以下是一个FPGA编程语言(以Verilog为例)的入门教程: 一、Verilog
    的头像 发表于 10-25 09:21 110次阅读