查看: 6050|回复: 4

Verilog HDL基本知识介绍分享(1)——Verilog 简介

[复制链接]
  • TA的每日心情
    擦汗
    2015-11-30 10:57
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2015-11-19 14:21:00 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 一蓑烟雨zsy 于 2015-11-19 14:27 编辑

    近期准备抽空准备做一个Verilog HDL 的简单分享,以供初学者了解学习,技术认知有限,有错误处欢迎大家指出来一起交流。file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image001.gif
    一、Verilog 语言简介

    1.硬件描述语言说明

    概念:硬件描述语言(HardwareDiscription Language, HDL)以文本形式来描述数字系统硬件结构和行为,是一种用形式化方法来描述数字电路和系统的语言,可以从上层到下层逐渐描述自己的设计思想,即用一系列分层次的模块来表示复杂的数字系统,并逐层进行验证仿真,再把具体的模块组合由综合工具转化成门级网络表,然后再利用布局布线工具把网络表转化为具体电路结构的实现。
    优势:文本形式描述,有利于将系统划分子模块化,便于团队开发,通用性和可移植性强。


    2.Veriolg  VS  VHDL

    水太深,没学过VHDL,不敢妄加品论,想了解的可以参考http://blog.sina.com.cn/s/blog_5084855b0100b08i.html这篇博客。


    3.Verilog HDL C语言
    Verilog 语言从C语言发展而来,因此具备了C语言简洁、易用的特点。主要差别体现在以下三点:
    1)互连:在硬件系统中,互连是一个非常重要的组成部分,而在C语言中,并没有直接可以用于表示模块间互连的变量;而Verilog HDL 中的wire型变量配合一些驱动结构,能有效的描述出网线的互连。
    2)并发:C语言天生是串行的,不能描述硬件之间的并发特性。C语言编译后,其机器指令在CPU的高速缓冲队列中基本是顺序执行的;而Verilog可以有效描述并行的硬件系统。
    3)时间:运行C程序时,没有一个严格的时间概念,程序运行时间的长短主要取决于处理器本身的性能;而Verilog语言本身定义了绝对和相对的时间度量,在仿真时可以通过时间度量与周期关系描述信号之间的时间关系。


    4.Verilog HDL 可以用来做什么?
    1)基本逻辑门电路的实现;
    2)可以用户自定义原语(UDP),既可以是组合逻辑原语,也可以是时序逻辑原语;
    3)开关级基本结构模型(如pmos和nmos等)
    4)提供显示语言结构指定设计中的端口到端口延时以及路径延时,以及设计的时序检查
    5)支持3种方式或混合方式建模:行为描述方式(使用过程化结构建模)、数据流方式(使用连续赋值语句方式建模)和结构化方式(使用门和模块实例语句描述建模)。
    6)两种数据类型:线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。
    7)能够描述层次设计,可使用模块实例结构描述任何层次。
    8)能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级
    。。。。。。
    太多了,数不胜数


    二、Verilog HDL 设计流程
    典型的FPGA/CPLD设计流程如下
    QQ截图20151119140825.png

    三、Verilog HDL 模块设计
    1.概念:用于描述某个设计的功能或结构及其与其他模块通信的外部端口。

    模块对应着的硬件电路,他们之间是并行运行的,也是分层的,高层模块通过调用、链接底层模块的实例来实现复杂的功能。如果要将所有的功能模块连接成一个完整的系统,则需要一个模块将所有的子模块连接起来,这一模块也被称为顶层模块(
    Top Module)。为了便于管理,一般一个.v文件实现一个模块

    2.模块的基本结构一个完整的Verilog HDL 模块结构如下所述:

    modulemodule_name(port_list)    //模块开始

        //声明各种变量、信号
        reg            //寄存器
        wire           //网线
        parameter      //参数
        input          //输入信号
        output         //输出信号
        inout        //输入输出信号
        function     //函数
       task        //任务

    //程序代码
    initial assignment
    always assignment
    module assignment
    gate assignment
    UDP assignment
    continuous assignment

    endmodule  //模块结束

    实际中不需要具备以上所有结构特征,基本模块结构如下,可以满足一般模块设计
    module <模块名> <端口列表>
        <定义>
        <模块条目>
    endmodule

    其中,
    <模块名>   是模块唯一性的标识符;
              <端口列表> 定义了和其余模块进行通信链接的信号,根据数据流方向可以分为输入、输出和双向端口3类;
              <定义>     用于指定数据对象为寄存器型、存储器型、网线型及过程块;
              <模块条目> 可以是initial结构、always结构、连续赋值或模块实例。

    3.端口说明模块端口是指模块与外界交互信息的接口,包括如下三种类型:
    input:输入接口,模块从外界读取数据的接口,在模块内不可写。
    output:输出接口,模块往外界送出数据的接口,在模块内不可读。
    inout:输入/输出端口,也称为双向端口,可读取数据也可送出数据,双向流动。
    上述3类端口中,input端口只能是wire数据类型;output端口即可是wirel类型,也可为reg类型;inout只能申明为wire类型。

    关于wirereg两种类型的区别这里就不详细讨论了,可以参考下面两个链接:http://blog.chinaunix.net/uid-21227800-id-65935.html
    http://wenku.baidu.com/link?url= ... 55QN_-xNChR-MRQrAMW
    今天的分享就到这里了,下次继续,敬请期待。

    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2017-12-4 18:33
  • 签到天数: 94 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2015-11-19 17:42:15 | 显示全部楼层
    赞赞赞      好好膜拜一下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-2-14 12:16
  • 签到天数: 827 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2015-11-19 21:42:47 | 显示全部楼层
    谢谢分享学习一下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-11-19 11:07
  • 签到天数: 226 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2017-1-29 20:18:55 | 显示全部楼层
    谢谢,新手学习了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-2-27 22:16
  • 签到天数: 1568 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2017-12-21 11:15:32 | 显示全部楼层
    谢谢分享学习一下基础知识
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-20 06:20 , Processed in 0.150490 second(s), 24 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.