毕业设计(论文)-verilog语言随机存储器的应用探讨与实践.doc_第1页
毕业设计(论文)-verilog语言随机存储器的应用探讨与实践.doc_第2页
免费预览已结束,剩余28页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西北大学学士学位论文摘 要 verilog是一种用于数字逻辑电路设计的语言。它既是一种行为描述语言,也是一种结构描述语言。也就是说,既可以用电路的功能描述也可用元器件和它们之间的连接来建立所设计电路的verilog模型。本次设计就是以 verilog语言为设计工具,它是在现场可编程门阵列(fpga)上实现的。软件环境是xilinx的ise8连接modisim. 本文主要是对可编程逻辑器件随机存储器的应用探讨与实践,主要讲了与毕设有关的verilog语言,ise开发环境及随机存储器程序在ise上的模拟过程。主要工作有: 1.熟悉随机存储器的工作过程及其构造; 2.用verilog语言编写模拟程序。 3.在ise上对程序进行编译模拟结果关键词:verilog,现场可编程门阵列,随机存储器 abstractverilog is a language which used in the numeral logic circuit design. it is a kind of behaviordescription 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 piled analogue results of programs on ise. key words: verilog, fpga, random memory 目录第一章 前言51.1研究背景,目的:51.2论文的主要工作51.3论文的组织5第二章verilog hdl62.1 verilog语言简介62.2verilog hdl历史62.3设计流程72.4verilog语言语法:72.4.1端口72.4.2常量72.4.3变量82.5 verilog代码编写风格:82.6与verilog语言相关的hld介绍102.6.1 asic技术的发展102.6.2 hld符合目前对电路的两个要求112.6.3 电路设计方法112.6.4 电路设计应该采用的方法112.7 verilog语言的主要能力11第三章fpga简介133.1fpga的概念133.2fpga的基本特点133.3fpga的工作原理133.4fpga设计流程133.4.1功能仿真143.4.2逻辑综合153.4.3前仿真153.4.4布局布线163.4.5后仿真163.5 fpga前景173.6fpga常用器件介绍173.6.1固定功能器件173.6.2可编程器件183.6.3可重编程器件183.6.4可重配置器件183.6.5可复用器件183.6.6可升级器件18第四章随机存储器194.1随机存储器的组成194.1.1存储体194.1.2地址译码器194.1.3i/o电路:194.1.4驱动器194.1.5片选与读/写控制电路194.1.6输出驱动电路194.2存储器实例19第五章程序原代码及说明215.1程序原代码215.2说明21第六章ise环境及仿真236.1新建工程236.2编写并调试程序246.3 创建并调试测试文件256.4模拟结果26第七章结论与展望28致谢29参考文献29 第一章 前言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的使用方法;第七章 结论与展望:总结本文的成果,指出需要进一步开展的工作。 第二章verilog hdl2.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是硬件描述语言的一种,用于数字电子系统的设计。他允许设计者用它来进行各种级别的逻辑设计,可以用它进行数字逻辑系统的仿真验证,时序分析,逻辑综合。他是目前应用最广泛的一种硬件描述语言。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设计流程采用自顶向下的设计是我的基本体会,利用层次化,结构化的设计方法,一个完整的硬件设计任务首先由总设计师划分若干个可操作的模块,编制出相应的模型,通过仿真加以验证后,再把这些模块分配给下一层的工作人员,这就允许多个设计者同时设计一个硬件系统中的不同模块,其中每个设计者负责自己所承担的部分,而由上一层设计师对其下层设计者完成的设计用行为级上层模块对其所做的设计进行验证. 系统级设计模块b模块c模块a 模块c2模块c1模块b1模块b2模块a3模块a2模块a1 自顶向下的设计(即top-down设计)是从系统开始,把系统划分为若干基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接用eda元件库中的元件来实现为止.2.4verilog语言语法:下面介绍与本次编程有关的语法.verilog的基本设计单元是”模块”.一个模块是由两部分组成的:一部分描述接口,另一部分描述逻辑功能即定义输入是如何影响输出的.2.4.1端口模块的端口声明了模块的输入输出口.其格式module 模块名(口1,口2,口3,.)模块的内容包括i/o说明,内部信号声明,功能定义.i/o说明的格式如下,输入口:input 端口名1,端口名2,.端口名i;输出口:output 端口名1,端口名2,.端口名i.2.4.2常量在程序运行中,其值不能被改变的量称为常量。首先对数字中的整数作一说明,b或b代表二进制整数,数字表达方式为位宽进制数字,x代表不定值,z代表高阻值,如4b10x变量即在程序运行过程中其值可以改变的量。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)强调编写规范的宗旨:缩小篇幅,提高整洁度,便于跟踪、分析、调试,增强可读性,帮助阅读者理解,便于整理文档,便于交流合作 (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 注释,使用/进行的注释行以分号结束;使用/* */进行的注释,/*和*/各占用一行,并且顶头;例:/ edge detector used to synchronize the input signal; d空格的使用:不同变量,以及变量与符号、变量与括号之间都应当保留一个空格。verilog关键字与其它任何字符串之间都应当保留一个空格。如:always ()使用大括号和小括号时,前括号的后边和后括号的前边应当留有一个空格。逻辑运算符、算术运算符、比较运算符等运算符的两侧各留一个空格,与变量分隔开来;单操作数运算符例外,直接位于操作数前,不使用空格。使用/进行的注释,在/后应当有一个空格;注释行的末尾不要有多余的空格。例:assign sramaddrbus = addrbus31:24, addrb

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论