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

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

3天内不再提示

FPGA入门之信号类型

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

第4节 信号类型

Verilog HDL 的信号类型有很多种,主要包括两种数据类型:线网类型(net type) 和寄存器类型( reg type)。在进行工程设计的过程中也只会使用到这两个类型的信号。

4.1 信号位宽

定义信号类型的同时,必须定义好信号的位宽。默认信号的位宽是 1 位,当信号的位宽为 1 时可不表述,如定义位宽为 1 的 wire 型信号 a 可直接用“ wire a;”来表示。 但信号的位宽大于 1 位时就一定要表示出来,如用“ wire [7:0]”来表示该 wire 型信号的位宽为 8 位(位宽数从0开始计)。

信号的位宽取决于要该信号要表示的最大值。该信号能表示的无符号数最大值是: 2n-1,其中n表示该信号的位宽。例如,信号 a 的最大值为 1000,那么信号 a 的位宽必须大于或等于 10 位。

下面分享一个位宽计算技巧:打开电脑的“计算器” 后选用程序员模式,在在 10 进制下输入信号值,如 1000,随后可以查看信号位宽。

4.2 线网类型 wire

线网类型用于对结构化器件之间的物理连线的建模, 如器件的管脚,芯片内部器件如与门的输出等。由于线网类型代表的是物理连接线,因此其不存储逻辑值,必须由器件驱动。通常用 assign 进行赋值, 如 assign A = B ^ C。

wire 类型定义语法如下:

wire [msb: lsb] wire1, wire2, . . .,wireN;

msb 和 lsb 定义了范围,表示了位宽。例如[7:0]是 8 位位宽,也就是可以表示成 8’b0 至 8’b1111_1111;

msb 和 lsb 必须为常数值;

如果没有定义范围,缺省值为 1 位;

没有定义信号数据类型时,缺省为 wire 类型。

注意数组类型按照降序方式,如[7: 0] , 不要写成[0:7]。

下面对上述情况进行举例说明:

wire [3:0] Sat; // Sat 为 4 位线型信号

wire Cnt; //1 位线型信号

wire [31:0] Kisp, Pisp, Lisp ;// Kisp, Pisp, Lisp 都是 32 位的线型信号。

4.3 寄存器类型 reg

reg 是最常用的寄存器类型,寄存器类型通常用于对存储单元的描述,如 D 型触发器、 ROM等。寄存器类型信号的特点是在某种触发机制下分配了一个值,在下一触发机制到来之前保留原值。但必须注意的是: reg 类型的变量不一定是存储单元,如在 always 语句中进行描述的必须是用 reg类型的变量。

reg 类型定义语法如下:

reg [msb: lsb] reg1, reg2, . . . reg N;

msb 和 lsb 定义了范围,表示了位宽。例如[7:0]是 8 位位宽,也就是可以表示成 8’b0 至 8’b1111_1111;

msb 和 lsb 必须为常数值;

如果没有定义范围,缺省值为 1 位;

没有定义信号数据类型时,缺省为 wire 类型,不是 reg 型。

对数组类型按照降序方式,如[7: 0] ;不要写成[0:7]。

例如:

reg [3:0] Sat; // Sat 为 4 位寄存器型信号。

reg Cnt; //1 位寄存器。

reg [31:0] Kisp, Pisp, Lisp ; // Kisp, Pisp, Lisp 都是 32 位的寄存器型信号。

4.4 wire 和 reg 的区别

reg 型信号并不一定生成寄存器。 针对什么时候使用 wire 类型,什么时候用 reg 类型这一问题,本书总结出一套解决方法:在 本模块中使用 always 设计的信号都定义为 reg 型, 其他信号都定义为 wire 型

1679366242(1).png

上述代码中, cnt1 是用 always 设计的,所以定义为 reg 型。 add_cnt1 和 end_cnt 不是由 always 产生的,所以定义为 wire 型。

1679366297(1).png

上述代码中,信号 x 是用 always 设计的,所以要定义为 reg 型。注意: 实际的电路中信号 x 不是寄存器类型,但仍然定义为 reg 型。

1679366311(1).png

以上是例化的代码,其中 df 是例化模块的输出。由于 df 不是由 always 产生的,而是例化产生的, 因此要定义成 wire 型。

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

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

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

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

    关注

    31

    文章

    5300

    浏览量

    119856
  • 数据
    +关注

    关注

    8

    文章

    6830

    浏览量

    88752
  • Verilog
    +关注

    关注

    28

    文章

    1343

    浏览量

    109928
收藏 人收藏

    评论

    相关推荐

    FPGA入门FPGA设计者入门必备!

    电子发烧友网: 在我看来,想要成为一名合格的 FPGA 设计者,需要掌握很多知识和技巧。本文就针对FPGA设计入门者需要掌握的基本功及设计原则展开分析,希望对大家有帮助。 一.5大
    发表于 06-26 15:26 1.4w次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>入门</b>:<b class='flag-5'>FPGA</b>设计者<b class='flag-5'>入门</b>必备!

    FPGA入门资料

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

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

    用notepad++的关联设置Lesson07 特权Xilinx FPGA SF-SP6入门指南 -- ISE与Modelsim联合仿真库编译Lesson08 特权Xilinx FPGA
    发表于 07-22 11:49

    Xilinx FPGA入门连载50:FPGA片内RAM实例chipscope在线调试

    Xilinx FPGA入门连载50:FPGA片内RAM实例chipscope在线调试特权同学,版权所有配套例程和更多资料下载链接:http://pan.baidu.com/s/1jG
    发表于 01-27 13:10

    Xilinx FPGA入门连载52:FPGA片内FIFO实例FIFO配置

    Xilinx FPGA入门连载52:FPGA片内FIFO实例FIFO配置特权同学,版权所有配套例程和更多资料下载链接:http://pan.baidu.com/s/1jGjAhEm1
    发表于 02-29 13:35

    Xilinx FPGA入门连载52:FPGA片内FIFO实例FIFO配置

    Xilinx FPGA入门连载52:FPGA片内FIFO实例FIFO配置特权同学,版权所有配套例程和更多资料下载链接:http://pan.baidu.com/s/1jGjAhEm1
    发表于 02-29 13:35

    Xilinx FPGA入门连载54:FPGA 片内FIFO实例chipscope在线调试

    `Xilinx FPGA入门连载54:FPGA 片内FIFO实例chipscope在线调试特权同学,版权所有配套例程和更多资料下载链接:http://pan.baidu.com/s
    发表于 03-04 13:13

    Xilinx FPGA入门连载58:FPGA 片内异步FIFO实例chipscope在线调试

    `Xilinx FPGA入门连载58:FPGA 片内异步FIFO实例chipscope在线调试特权同学,版权所有配套例程和更多资料下载链接:http://pan.baidu.com/
    发表于 03-16 12:13

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

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

    FPGA入门ModelSim的安装步骤

    FPGA入门:ModelSim的安装本文节选自特权同学的图书《FPGA/CPLD边练边学——快速入门Verilog/VHDL》书中代码请访问网盘:http://pan.baidu.co
    发表于 01-22 06:35

    FPGA入门试验精品

    FPGA入门试验精品,有需要的下来看看啊
    发表于 05-10 11:24 27次下载

    FPGA入门技术教程

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

    KEIL-MDK和STM32的数据类型-入门篇pdf资料下载

    数据类型-入门
    发表于 04-14 10:50 7次下载
    KEIL-MDK和STM32的数据<b class='flag-5'>类型</b>-<b class='flag-5'>之</b><b class='flag-5'>入门</b>篇pdf资料下载

    FPGA入门什么是FPGA

    FPGA 的全称为 Field-Programmable Gate Array ,即现场可编程门阵列。FPGA 是在 PAL、 GAL、 CPLD 等可编程器件的基础上进一步发展的产物, 是作为
    的头像 发表于 03-21 10:21 1183次阅读
    <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 122次阅读