毕业设计177西北大学学士学位论文verilog语言随机存储器的应用探讨与实践.doc

毕业设计177西北大学学士学位论文verilog语言随机存储器的应用探讨与实践

收藏

压缩包内文档预览:(预览前20页/共30页)
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:546210    类型:共享资源    大小:301.46KB    格式:ZIP    上传时间:2015-12-01 上传人:QQ28****1120 IP属地:辽宁
6
积分
关 键 词:
电器电子毕业设计论文
资源描述:
毕业设计177西北大学学士学位论文verilog语言随机存储器的应用探讨与实践,电器电子毕业设计论文
内容简介:
摘 要 Verilog是一种用于数字逻辑电路设计的语言。它既是一种行为描述语言,也是一种结构描述语言。也就是说,既可以用电路的功能描述也可用元器件和它们之间的连接来建立所设计电路的 verilog模型。本次设计就是以 verilog语言为设计工具,它是在现场可编程门阵列( FPGA)上实现的。软件环境是 xilinx的 ISE8连接 modisim. 本文主要是对可编程逻辑器件 随机存储器的应用探讨与实践 ,主要讲了与毕设有关的 verilog语言, ISE开发环境及随机存储器程序在 ISE上的模拟过程。 主要工作有: 1.熟悉随机存储器的工作过程及其构造; 2.用 verilog语言编写模拟程序。 3.在 ISE上对程序进行编译模拟结果 关键词 :verilog,现场可编程门阵列 ,随机存储器 ABSTRACT Verilog is a language which used in the numeral logic circuit design. It is a kind of behavior description language. And it is also a kind of structure description language. In other words, the verilog model of the designed circuit can be established by the circuit function description and the connection between components. This design took verilog language as the design tool and implemented on FPGA. The software environment is the connection between xilinx ISE6 and modisim. This paper mainly discussed the programmable logical component (random memory). The verilog language, ISE development environment and random memory programs during the simulation process on ISE which related to graduate design in it. The main work included: 1.familiared with the work process and its structure of random memory. 2.made simulation programs with verilog language. 3.compiled analogue results of programs on ISE. Key words: verilog, FPGA, Random memory nts 西北大学学士学位论文 2 目录 第一章 前言 . 4 1.1 研究背景 ,目的 :. 4 1.2 论文的主要工作 . 4 1.3 论文的组织 . 4 第二章 verilog HDL . 5 2.1 Verilog 语言简介 . 5 2.2verilog HDL 历史 . 5 2.3 设计流程 . 6 2.4verilog 语言语法 : . 6 2.4.1 端口 . 6 2.4.2 常量 . 7 2.4.3 变 量 . 7 2.5 Verilog 代码编写风格 : . 7 2.6 与 Verilog 语言相关的 HLD 介绍 . 9 2.6.1 ASIC 技术的发展 . 9 2.6.2 HLD 符合目前对电路的两个要求 . 10 2.6.3 电路设计方法 . 10 2.6.4 电路设计应该采用的方法 . 10 2.7 Verilog 语言的主要能力 . 10 第三章 FPGA 简介 . 12 3.1FPGA 的概念 . 12 3.2FPGA 的基本特点 . 12 3.3FPGA 的工作原理 . 12 3.4FPGA 设计流程 . 12 3.4.1 功能仿真 . 13 3.4.2 逻辑综合 . 14 3.4.3 前仿真 . 14 3.4.4 布局布线 . 15 3.4.5 后仿真 . 15 3.5 FPGA 前景 . 16 3.6FPGA 常用器件介绍 . 16 3.6.1 固定功能器件 . 16 3.6.2 可编程器件 . 17 3.6.3 可重编程器件 . 17 3.6.4 可重配置器件 . 17 3.6.5 可复用器件 . 17 3.6.6 可升级器件 . 18 nts 西北大学学士学位论文 3 第四章随机存储器 . 18 4.1 随机存储器的组成 . 18 4.1.1 存储体 . 18 4.1.2 地址译码器 . 18 4.1.3I/O 电路 : . 18 4.1.4 驱动器 . 18 4.1.5 片选与读 /写控制电路 . 18 4.1.6 输出 驱动电路 . 18 4.2 存储器实例 . 19 第五章程序原代码及说明 . 20 5.1 程序原代码 . 20 5.2 说明 . 21 第六章 ISE 环境及仿真 . 22 6.1 新建工程 . 22 6.2 编写并调试程序 . 24 6.3 创建并调试测试文件 . 24 6.4 模拟结果 . 26 第七章结论与展望 . 27 致谢 . 28 参考文献 . 28 nts 西北大学学士学位论文 4 第一章 前言 1.1 研究背景 ,目的 : 数字信号处理系统研究人员产生比较理想的算法思路后 ,在计算机上用 C 或其它语言验证 ,但是它是有缺陷的 .在许多工程上需要有实时 响应的要求 ,这时 ,如果我们仅仅使用通用的微处理器和一般的语言 ,往往无法满足在几个 ms 甚至 us 内要对大量数据完成复杂运算的实时响应的要求 .我们不得不设计专用的高速硬线逻辑来完成运算 ,这就既要有好的算法又要有好的设计工具 .用 verilog HDL编写程序设计硬件的好处在于易于理解易于维护 ,调试电路速度快 ,而且有许多易于掌握的仿真 ,综合和布局布线工具 ,这都是 C 语言所无法比拟的 . 用 verilog HDL 设计计算机电路具有很多优点 ,而用传统设计方法 电路原理图输入法只能设计些规模小 ,简单的电路 ,你还必须熟悉所选器件 的内部结构和外部引线 ,这大大延长设计周期 .采用 verilog HDL 输入法最大优点是其与工艺的无关性 ,从而降低工作量 ,缩短了设计时间 . 本研究就是用 verilog 语言模拟随机存储器的工作过程 ,为它的仿真综合设计以及投片生产打下基础具有非常深远的意义 . 1.2 论文的主要工作 我的主要工作体现在 ISE上用 verilog 编写出随机存储器的模拟程序,所以论文主要体现在对随机存储器工作过程的理解以及 verilog编程技术的探索实践: ( 1) 从计算机组成原理上了解随机存储器的组成,以及各部件的工作过程; ( 2) 熟悉 verilog 语 言语法及编程流程; ( 3) 对 FPGA 有一个大致了解; ( 4) 了解 ISE8.0 和 modisim的环境,对其安装使用有一定掌握。 1.3 论文的组织 全文共分六章: 第一章 前言:介绍了本文研究背景,目的及主要工作; 第二章 Verilog HDL 语言:介绍了语言历史语法及编程流程; 第三章 FPGA简介:介绍了 FPGA的一般知识; 第四章 随机存储器简介:介绍了随机存储器的结构及工作过程; 第五章 程序原代码:介绍了程序代码及对此进行的解释说明; 第六章 ISE工作环境:介绍了 ISE的使用方法; 第七章 结论与展望:总结本文的成果,指出需要进一步开展的工作。 nts 西北大学学士学位论文 5 第二章 verilog HDL 2.1 Verilog 语言简介 Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。由于 Verilog HDL 既是机器可读的语言也是人类可读的语言,因此它支持硬件设计的开发、验证、综 合和测试;硬件数据之间的通信;硬件的设计、维护和修改。现在, Verilog HDL已经成为数字系统设计的首选语言,并成为综合、验证和布局布线技术的基础。 Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外, Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。 Verilog HDL语言不仅定义了语法,而 且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用 Verilog仿真器进行验证。语言从C 编程语言中继承了多种操作符和结构。 Verilog HDL 提供了扩展的建模能力,其中许多扩展最初很难理解。但是, Verilog HDL 语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然 ,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。 Verilog硬件描述语言( Verilog HDL)使各种设计工具(包括验证仿真、时序分析、测试分析以及综合)能够在多个抽象 层次上以标准文本格式描述数字系统,简单、直观并富有效率。由于其丰富的功能, Verilog HDL已经成为数字系统设计的首选语言。 Verilog包含了丰富的内建原语,包括逻辑门、用户定义的原语、开关以及线逻辑。它还具有器件管脚间的时延和时序检查功能。从本质上讲, Verilog 所具有的混合抽象层次由两种数据类型所提供,这两种数据类型是线网( net)和变量( variable)。对于连续赋值,变量和线网的表达式能够连续地将值驱动到线网,它提供了基本的结构级建模方法。对于过程赋值,变量和网络值的计算结果可以存储于变 量当中,它提供了基本的行为级建模方法。 一个用 Verilog HDL 描述的设计包含一组模块,每一个模块都包含一个 I/O接口和一个功能描述。模块的功能描述可以是结构级的、行为级的、也可以是结构级和行为级的混合。这些模块组成一个层次化结构并使用线网进行互连。 Verilog语言可以通过使用编程语言接口( Programming Language Interface,PLI)和 Verilog程序接口( Verilog Procedural Interface,VPI)进行扩展。 PLI/VPI是一些例程的集合,它使得外 部函数能够访问包含在 Verilog HDL描述内部的信息,推动了与仿真之间的动态交互。 PLI/VPI的应用包括将 Verilog HDL 仿真器与其它仿真和 CAD系统、用户定制的调试任务、时延计算以及标注器相连接。 2.2verilog HDL 历史 Verilog HDL 是硬件描述语言的一种,用于数字电子系统的设计。他允许设计者nts 西北大学学士学位论文 6 用它来进行各种级别的逻辑设计,可以用它进行数字逻辑系统的仿真验证,时序分析,逻辑综合。他是目前应用最广泛的一种硬件描述语言。 Verilog HDL 是在 1983 年,由 GDA(Gate Way Design Automation)公司的 phil moorby 首创的。他后来成为 Verilog-XL 的主要设计者和 Cadence 公司 (Cadence Design System)的第一个合伙人 .在 1984-1985 年, Moorby 设计出第一个关于Verilog-XL仿真器 ,1986年 ,他对 Verilog HDL的发展又作出了另一个巨大贡献 :即提出了用于快速门级仿真的 XL 算法 .随着 Verilog-XL 算法的成功, Verilog HDL 语言得到迅速发展。 1990年 ,Cadence公司决定公开 Verilog HDL语言。鉴于的优越性 ,LEEE于 1995年制定了 Verilog HDL 的 LEEE标准 ,即 Verilog HDL1364-1995. 2.3 设计流程 采用自顶向下的设计是我的基本体会 ,利用层次化 ,结构化的设计方法 ,一个完整的硬件设计任务首先由总设计师划分若干个可操作的模块 ,编制出相应的模型 ,通过仿真加以验证后 ,再把这些模块分配给下一层的工作人员 ,这就允许多个设计者同时设计一个硬件系统中的不同模块 ,其中每个设计者负责自己所承担的部分 ,而由上一层设计师对其下层设计者完成的设计用行为级上层模块对其所 做的设计进行验证 . 自顶向下的设计 (即 TOP-DOWN 设计 )是从系统开始 ,把系统划分为若干基本单元 ,然后再把每个基本单元划分为下一层次的基本单元 ,一直这样做下去 ,直到可以直接用 EDA元件库中的元件来实现为止 . 2.4verilog 语言语法 : 下面介绍与本次编程有关的语法 .verilog的基本设计单元是 ”模块 ”.一个模块是由两部分组成的 :一部分描述接口 ,另一部分描述逻辑功能即定义输入是如何影响输出的 . 2.4.1 端口 模块的端口声明了模块的输入输出口 .其格式 module 模块名 (口 1,口 2,口3,.)模块的内容包括 I/O说明 ,内部信号声明 ,功能定义 .I/O说明的格式如下 , 输入口 :input 端口名 1,端口名 2,.端口名 I; 系统级设计 模块 A 模块 B 模块 C 模块 A1 模块 A2 模块 A3 模块 B1 模块 B2 模块 C1 模块 C2 nts 西北大学学士学位论文 7 输出口 :output 端口名 1,端口名 2,.端口名 I. 2.4.2 常量 在程序运行中,其值不能被改变的量称为常量。首先对数字中的整数作一说明,B或 b代表二进制整数,数字表达方式为位宽进制数字, x 代 表不定值 ,z 代表高阻值,如 4b10x0. 2.4.3 变量 即在程序运行过程中其值可以改变的量。 Reg型是寄存器数据类型通过赋值语句可以改变寄存器储存的值。 Reg型数据常用来表示用于“ always”模块内的指定信号,常代表触发器。通常,在设计中要由” always”块通过使用行为描述语句来表达逻辑关系。在“ always”块内被赋值的每一个信号都必须定义成 reg型。 Memory型是 verilogHDL 通过对 reg型变量建立数组来对存储器建模,可以描述RAM型存储器。数组中的每一个单元通过一个数组索引来进行寻 址。 Memory型数据是通过扩展 reg型数据的地址范围来生成的。其格式为: regn-1:0存储器名 m-1:0;在这里, regn-1:0定义了存储器中每一个存储单元的大小,即该存储单元是一个 N位的寄存器。存储器名后的 M-1: 0则定义了该存储器中有多少这样的寄存器,最后用分号结束定义语句。 下面介绍块语句 begin-end,它是顺序块,特点是( 1)块内的语句是按顺序执行的,即只有上面一条语句执行完后,下面的一条语句才能够执行。( 2)每条语句的延迟时间是相对于前一条语句的仿真时间而言的( 3)直到最后一条语句执行完,程序流程控制才跳出该语句块。 If语句用来判定所给定的条件是否满足,根据判定的结果决定执行给出的两种操作。 Case 语句是一种多分支选择语句, if 语句只有两个分支可供选择,实际问题中常需要用到多分支选择, case语句可直接处理多分支选择。 2.5 Verilog 代码编写风格 : 下面是我的一些编程体会 ,Verilog 代码编写规范,经常是一个不太受欢迎的话题,但却是非常有必要的。 每个代码编写者都有自己的编写习惯,而且都喜欢按照自己的习惯去编写代码。与自己编写风格相近的 代码,阅读起来容易接受和理解。相反和自己编写风格差别较大的代码,阅读和接受起来就困难一些。曾有编程大师总结说,一个优秀的程序员,能维护的代码长度大约在 1万行数量级。代码的整洁程度,很大程度上影响着代码的维护难度。遵循代码编写规范书写的代码,很容易阅读、理解、维护、修改、跟踪调试、整理文档。相反代码编写风格随意的代码,通常晦涩、凌乱,会给开发者本人的调试、修改工作带来困难,也会给合作者带来很大麻烦。(实际上英文 Coding Style有另一层涵义,更偏重的是,某一个电路,用那一种形式的语言描述,才能将电路描述 得更准确,综合以后产生的电路更合理。 我想说的 是,编写 Verilog 代码时的书写习惯。) (1)强调编写规范的宗旨 :缩小篇幅 ,提高整洁度 ,便于跟踪、分析、调试 ,增强可读性,帮助阅读者理解 ,便于整理文档 ,便于交流合作 nts 西北大学学士学位论文 8 (2) 变量及信号命名规范 a系统级信号的命名 系统级信号指复位信号,置位信号,时钟信号等需要输送到各个模块的全局信号;系统信号以字符串 Sys开头。 b 低电平有效的信号后一律加下划线和字母 n。如: SysRst_n; FifoFull_n; c. 经过锁存器锁存后的信号,后加下划线和字母 r,与锁存前的信号区别。如CpuRamRd 信号,经锁存后应命名为 CpuRamRd_r。低电平有效的信号经过锁存器锁存后,其命名应在 _n后加 r。如 CpuRamRd_n信号,经锁存后应命名为 CpuRamRd_nr 多级锁存的信号,可多加 r 以标明。如 CpuRamRd 信号,经两级触发器锁存后,应命名为 CpuRamRd_rr。 d 模块的命 名 在系统设计阶段应该为每个模块进行命名。命名的方法是,将模块英文名称的各个单词首字母组合起来,形成 3到 5个字符的缩 写。若模块的英文名只有一个单词,可取该单词的前 3个字母。各模块的命名以 3个字母为宜。例如: Arithmatic Logical Unit模块,命名为 ALU。 Data Memory Interface 模块,命名为 DMI。 Decoder模块,命名为 DEC。 e 模块之间的接口信号的命名 所有变量命名分为两个部分,第一部分表明数据方向,其中数据发出方在前 ,数据接收方在后,第二部分为数据名称。两部分之间用下划线隔离开。第一部分全部大写,第二部分所有具有明确意义的英文名全部拼写或缩写的第一个字母大 写 ,其余部分小写。举例: CPUMMU_WrReq,下划线左边是第一部分,代表数据方向是从 CPU模块发向存储器管理单元模块( MMU)。下划线右边 Wr为 Write的缩写 ,Req是 Request的缩写。两个缩写的第一个字母都大写,便于理解。整个变量连起来的意思就是 CPU发送给 MMU的写请求信号。模块上下层次间信号的命名也遵循本规定。若某个信号从一个模块传递到多个模块,其命名应视信号的主要路径而定。 f 模块内部信号 模块内部的信号由几个单词连接而成,缩写要求能基本表明本单词的含义;单词除常用的 缩写方法外(如: Clock-Clk, Write-Wr, Read-Rd 等),一律取该单词的前几个字母( 如: Frequency-Freq, Variable-Var 等);每个缩写单词的第一个字母大写;若遇两个大写字母相邻,中间添加一个下划线(如 DivN_Cntr);举例: SdramWrEn_n; FlashAddrLatchEn; (3)编码格式规范 a 分节书写,各节之间加 1到多行空格。如每个 always,initial 语句都是一节 ,每节基本上完成一个特定的功能,即用于描述某几个信号 的产生。在每节之前有几行注释对该节代码加以描述,至少列出本节中描述的信号的含义。 b行首不要使用空格来对齐,而是用 Tab 键, Tab键的宽度设为 4个字符宽度。行尾不要有多余的空格。 c 注释 ,使用 /进行的注释行以分号结束;使用 /* */进行的注释, /*和 */各占nts 西北大学学士学位论文 9 用一行,并且顶头;例: / Edge detector used to synchronize the input signal; d 空格的使用:不同变量,以及变量与符号、变量与括号之间都应当保留一个空格。 Verilog 关键字与其它任何字符串之间都应当保留一个空格。如: Always ( )使用大括号和小括号时,前括号的后边和后括号的前边应当留有一个空格。逻辑运算符、算术运算符、比较运算符等运算符的两侧各留一个空格,与变量分隔开来 ;单操作数运算符例外,直接位于操作数前,不使用空格。使用 /进行的注释,在 /后应当有一个空格;注释行的末尾不要有多余的空格。例: assign SramAddrBus = AddrBus31:24, AddrBus7:0 ; assign DivCntr3:0 = DivCntr3:0 + 4b0001; assign Result = Operand; e同一个层次的所有语句左端对齐; Initial、 always等语句块的 begin关键词跟在本行的末尾,相应的 end关键词与 Initial、 always对齐;这样做的好处是避免因 begin独占一行而造成行数太多;例: always ( posedge SysClk or negedge SysRst ) begin if( !SysRst ) DataOut Project Navigator,显示如下 界面: 图 6-1 选择 File New Project,显示如下界面,填写工程名称,存放地址,选择 module类型 (注意 :这里的工程名称是随意取的 ,跟后面毕设工程名称不同 ) nts 西北大学学士学位论文 23 图 6-2 点击下一步过程中会出现如下界面,点击 New Source,创建新的程序 图 6-3 有 10种程序类型,我们选用 verilog编写的程序,因此选用 verilog module 类型,填写程序名称。 nts 西北大学学士学位论文 24 图 6-4 6.2 编写并调试程序 在编辑界面将程序编好,保存 。 这时可以点击 原程序图标,再点击左下角 Launch ModelSim Simulator编译连接 Modelsim,判断是否有语法等错误(逻辑错误不能找出)编译成功显示如图 图 6-5 6.3 创建并调试测试文件 nts 西北大学学士学位论文 25 然后在左下图框中点击 create new sourse,在出现的对话框中选择 test bench waveform 选项,输入文件名,路径名,可生成后缀为 .tbw 文件,如下图应点击对话框中第三项 图 6-6 我将程序编辑好并生成 tbw文件后如下: 图 6-7 nts 西北大学学士学位论文 26 6.4 模拟结果 可以进行模拟,模拟在 ddd.tbw 下进行, 最后结果如图 图 6-8 图 6-8 中 “ 16, 10, 2”表示数据为几进制;“ 0, 100, 200”表示 0时刻, 100时刻等,单位为纳秒;加号和减号可以调整每 100纳秒间的空格长度;方向向右的箭头所指表示输入端口,向左的表示输出端口:( in
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:毕业设计177西北大学学士学位论文verilog语言随机存储器的应用探讨与实践
链接地址:https://www.renrendoc.com/p-546210.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!