文档库 最新最全的文档下载
当前位置:文档库 › 基于FPGA的微处理器设计

基于FPGA的微处理器设计

基于FPGA的微处理器设计
基于FPGA的微处理器设计

毕业设计(论文)

设计(论文)题目基于FPGA的微处理器设计

姓名:

学号:

学院:

专业:

年级

指导教师:

摘要

本文使用结构化编程方法,将微处理器内核按照功能划分为不同的模块,采用VHDL语言设计每一个模块的内部功能和外围接口,设计实现了一种基于FPGA芯片的微处理器系统。

该微处理器主要由控制器、运算器和寄存器组成,具有指令控制、操作控制、时间控制和数据加工等基本功能,可实现四位操作数的各种运算,其指令长度为16位定长,采用了直接寻址方式。最后采用QUARTUSII对设计进行了仿真测试,结果表明设计实现了微处理器的主要功能。

关键字:FPGA,微处理器,VHDL

ABSTRACT

A microprocessor on FPGA is realized by using structured programming. This microprocessor core is divided into several different function modules which are designed using VHDL.

The microprocessor consists of controller, arithmetic unit and registers. It realizes the instruction control, operation control, time sequence control and data processing functions. The direct addressing mode is adopted. The various operations for 4bit operand can be achieved. Its instruction length is 16 bit.

The design is simulated by using QUARTUSII, and the results show that the main functions of a microprocessor are achieved.

Key Words:FPGA, CPU, VHDL

目录

摘要.............................................................................................................................................. I ABSTRACT...................................................................................................................................... I I 第1章绪论. (1)

1.1 背景 (1)

1.2 微处理器的概况 (1)

1.3 课题研究方法及技术背景 (1)

1.3.1 研究方法 (1)

1.3.2 技术背景 (2)

1.4 课题工作内容 (3)

第二章微处理器体系结构 (4)

2.1 CPU的功能和构成 (4)

2.2 指令系统分析 (5)

2.2.1 RISC 与总线结构 (5)

2.2.2 指令系统 (6)

2.3 指令时序分析 (8)

2.3.1 RISC与流水线 (8)

2.3.2 程序计数器与流水线 (8)

2.4 CPU整体结构即设计思想 (9)

2.4.1 CPU的外部引脚规划 (9)

2.4.2 CPU的整体框图 (10)

2.4.3 CPU结构的层次划分 (11)

第三章CPU数据通路设计 (12)

3.1 程序计数器模块PC (12)

3.2 程序存储器PC_RAM (13)

3.3 指令寄存器模块 (14)

3.4 时钟发生器模块 (14)

3.5 寄存器堆TRAM (15)

3.6 ALU模块 (16)

第四章CPU控制单元的设计 (18)

4.1 控制器Control模块 (18)

4.2 有限状态机FSM模块 (19)

4.2.1 有限状态机 (19)

4.2.2 利用的VHDL语言进行状态机描述 (19)

第五章RISC CPU的仿真验证 (21)

5.1 各模块的组合 (21)

5.2 综合RTL电路图 (21)

5.3 RISCCPU的功能仿真验证 (24)

5.3.1 算术运算类指令验证 (24)

5.3.2 逻辑运算类指令验证 (25)

5.3.3 移位类指令验证 (25)

5.3.4 LD数据输出指令仿真 (26)

5.3.5 ST运算数据存储仿真 (26)

5.4 总结 (27)

第六章总结和展望 (28)

参考文献 (29)

致谢 ................................................................................................................ 错误!未定义书签。附录 (30)

第1章绪论

1.1 背景

随着数字通信和工业控制领域的高速发展,超大规模集成电路的集成度和工艺水平不断提高,要求专用集成电路(ASIC)的功能越来越强,功耗越来越低,生产周期越来越短,这些都对芯片设计提出了巨大的挑战,传统的芯片设计方法已经不能适应复杂的应用需求了,将整个应用电子系统集成在一个芯片中(SOC),已成为现代电子系统设计的趋势。简单来说,SOC是一种将多个独立的VLSI设计拼合在一起,来形成某一应用所需的全部功能的集成电路,以其高集成度、低功耗等优点越来越受欢迎[1]。

中国的电子信息产业现在增长迅速,主要集中在移动通信设备、数据通信设备、计算机及消费产品领域。考虑到我国电子信息市场的特殊性,即巨大的移动通信和数字家电市场的核心芯片主要依赖进口的状况。巨大的市场的需求决定了开发SOC的必要性,现在数字家电的片上系统研究己经成为研究的热点之一。研究SOC的设计方法和验证方法具有很大的现实意义[2-3]。其中CPU是SOC的重要组成部分,可以完成简单的数据处理,内存的调度,中断处理等操作。随着百万门级的FPGA芯片、功能复杂的IP核、可重构的嵌入式处理器核以及各种强大EDA 的开发工具的迅速发展,使得设计者在EDA工具的帮助下完成整个系统从行为算法级到物理结构级的全部设计,并最终将一个电子系统集成到一片FPGA中,即SOPC。可见,SOPC是基于FPGA解决方案的SOC,是SOC发展的新阶段。

1.2 微处理器的概况

微处理器是计算机系统中非常之重要的核心组成部分,它用来控制计算机的各种操作过程,通常也被称为CPU,即中央处理器。随着科学技术的迅速发展,微处理器的发展也是非常迅速,它的处理能力已经由过去的4位发展到现在的64位,运算能力和处理能力大大提高,应用领域也从计算机系统扩展到各个相关领域,例如通信、航天和工业控制等。通常,微处理器按照处理能力可以划分为4位、8位、16位、32位和64位微处理器,它的处理能力是逐步提高的。但是,在微控制器的发展过程中,8位机始终是嵌入式低端应用的主要机型[4]。

现今市场上流行的典型的8位微控制器,可以在各种FPGA上实现,设计灵活方便而且易于进行功能扩展。因此研究8位CPU内核具有广泛的现实意义,由于其具有较高的处理性能和较少的资源占用,故具有更加广泛的应用前景。

1.3 课题研究方法及技术背景

1.3.1 研究方法

本课题使用硬件描述语言VHDL采用自顶向下的设计方法设计一个满足要求

的8位CPU内核及外部接口,使用EDA软件QUARTUSII软件完成编码、仿真验证。自顶向下的设计方法就是设计者首先从整体上规划整个系统的功能和性能,然后利用功能分割手段对系统进行划分,分解为规模较小、功能较简单的局部模块,并确立它们之间的相互关系,将设计由上至下进行层次化和模块化,即分层次、分模块地对电子系统进行设计和仿真。不难看出,采用自顶向下的设计方法实际上就是基于芯片的系统设计方法,这种方法有助于在设计早期发现结构设计中的错误,提高设计成功率。

1.3.2 技术背景

1.硬件描述语言VHDL

如今,大多数的EDA工具都采用VHDL作为主要的硬件描述语言,这主要源于VHDL强大的自身功能和特点,下面介绍一下VHDL的优点。

(1)具有强大的描述能力

VHDL既可以描述系统级电路,也可以描述门电路;既可以采用行为描述、寄存器描述或者结构描述,可以方便地建立电子系统模型。

(2)具有共享与复用能力

VHDL采用基于库的设计方法,从而大大减少了工作量,缩短了开发周期。

(3)具有独立于器件和工艺设计的能力

VHDL独立于器件的特点可以使设计人员集中精力来进行电子系统的设计和性能优化,而不需要考虑其他问题。

(4)具有良好的可移植能力。

VHDL的可移植性源于它是一种标准化得硬件语言,因此同一个设计描述可以被不同的工具所支持。

(5)具有向ASIC移植的能力。

2.CISC指令集和RISC指令集

CISC是一种为了便于编程和提高内存访问效率的芯片设计体系。早期的计算机使用汇编语言编程,由于内存速度慢且价格昂贵,使得CISC体系得到了用武之地。它的设计目的是要用最少的机器语言指令来完成所需的计算任务。后来功能需求越来越丰富,因此越来越多的复杂指令被加入到指令系统中,但是还必须保持着前向的兼容性。内容的不断扩充和兼容性的考虑,导致庞大的CISC指令系统形成了。在20世纪90年代中期之前,大多数的微处理器都采用CISC体系包括Intel的80x86和Motorola的6sK系列等[6]。

CISC 体系结构几乎没有考虑流水线的因素,使得指令执行起来耗时而且寻址复杂。1975年,IBM的设计师提出了一种新的体系结构和指令集设计方案,这就是RISC体系结构。典型的RISC处理器具有以下特点:

(1)指令功能简单,各指令的复杂度分布均衡,有利于形成流水线;

(2)控制电路简单,多采用硬连线方式来实现。因为不需要额外的存取微程序存储器来完成指令的执行,因此可以直接使用硬连线方式来设计;

(3)指令定长,指令格式简单,指令编码固定。这样字段固定,使操作码得译码与操作数的存取可以同时执行,使得控制单元的设计简单化;

(4)ALU指令和访存指令分开,并且访存种类很少。

(5)以寄存器对寄存器的运算为主。寄存器对寄存器的运算有助于减少对存储器的访问次数,提高数据的存取速度[7-8]。

1.4 课题工作内容

本文一共分为七章。各章节内容安排如下:

第一章绪论。

第二章微处理器的体系结构。研究了CPU的整体设计,指令系统和时序分析以及流水线的实现。

第三章CPU数据通路设计。详细介绍了通路模块中的程序计数器、指令寄存器、程序存储器等的具体设计和功能实现。

第四章CPU控制单元的设计。详细介绍了控制单元中的控制器和状态机的设计和功能实现。

第五章CPU的仿真验证。验证CPU的部分功能。

第六章总结和展望。

第二章微处理器体系结构

2.1 CPU的功能和构成

CPU是计算机的核心组成部分。计算机进行信息处理可分为以下两个步骤[9]。

(1)将数据和程序(即指令序列)输入到计算机的存储器中;

(2)从第一条指令的地址开始执行该程序,得到所需的结果,结束运行。

CPU的作用是协调和控制计算机的各个部件,并执行程序的指令序列,使其有条不紊的进行,因此必须具备以下基本功能:

取指令:当程序已在存储器中时,首先根据程序入口地址取出一条程序,

为此要发出指令的地址及相关的控制信号;

分析指令:即指令译码,既对当前所取的指令进行分析,指出它要求什么

操作,并产生相应的操作所需要的控制命令;

执行指令:根据分析指令时产生的“操作命令”形成相应的操作控制序列,通过运算器、存储器及输入输出的执行,实现每条指令的功能,其中包括对运算结果的处理及下条指令地址的形成。

将CPU的功能进一步细化,可以概括如下。

(1)能对指令进行译码并执行规定动作;

(2)可以进行算术和逻辑运算;

(3)能与存储器和外设交换数据;

(4)提供整个系统所需的控制。

尽管各种CPU的性能指标和结构细节各不相同,但它们所能完成的基本功能相同,简化CPU内部结构如图2-1所示。

图2-1 简化CPU内部结构

2.2 指令系统分析

指令系统结构是微处理器体系结构的一个重要部分,是微处理器设计的基础。指令格式、寻址方式和指令系统是指令系统结构的重要方面。目前主流CPU 指令可以分为RISC和CISC,由上节介绍可知,RISC微处理器指令系统的指令种类少而经,寻址方式简单,指令格式固定,所以本次设计采用RISC指令系统

2.2.1 RISC 与总线结构

早期的计算机一般都采用冯.诺依曼(Von Neumann)结构,CISC架构的微处理器常采用这种结构。它是在同一个存储空间取指令和数据,采用单地址总线结构,即程序存储器和数据存储器共用一条地址总线,限制了工作带宽,使得控制电路复杂,功耗较大[10-11]。结构见图2-2所示:

图2-2 冯.诺依曼结构图

这种结构有两个明显的缺点:

(1)CPU中控制器和运算器的速度必须与存储器的速度相匹配;

(2)指令和数据的流动都通过同一条总线,使指令和数据的独立性消弱;

目前,RISC架构的微处理器都采用哈佛结构,这种结构具有分离地址总线的两个存储器,其中一个放程序,另一个放数据,其指令和数据空间完全分开,可以同时访问,且一次读出,简化控制电路,提高数据的吞吐率[12]。结构如图2 -3所示。

图2-3 哈佛结构图

这种结构的优点是:

(1)允许数据从程序存储器传递到SRAM,该功能也允许从程序存储器中读取数据表。这对现代微控制器应用十分重要,因为为了使掉电

后数据表不丢失,就要将它放在程序存储器中,RISC架构很好地解

决了这个问题。

(2)读取指令和存储器数据交换可以在多步流水线中同时进行,这在冯.

诺依曼单地址总线结构中很难实现。

基于以上两种体系结构特点的比较,本文设计的微处理器器采用了哈佛结构的体系结构。首先,哈佛结构的指令总线和数据总线分开,可以使用不同位宽的指令和数据,还有一个最大好处就是可以预取指令,这样对流水线是很有用的。其次,该微处理器实现了两级指令流水线,采用哈佛结构可使流水实现的难度大为降低,在采用流水线后,能够有效地提高指令的执行速度。再次,该微处理器采用了硬布线逻辑代替微程序控制的方法,提高了指令的执行速度和效率。

2.2.2 指令系统

本文设计的微控制器采用两级流水线、指令长固定、指令密度适中、控制单元简单的类似RISC指令集,本文自定义指令集,该指令集仅有20条指令,寻址方式简单。每条指令的字长都是16位,包含足够的信息:指令操作码,源操作数地址,目的操作数地址,立即数[13-14]。

1、指令集

2、寻址方式

本文指令系统的寻址方式为下面两种直接寻址方式:

(1)单一寄存器寻址。操作数在目的寄存器;

(2)双寄存器寻址。操作数分别在目的寄存器和源操作寄存器中。

3、指令格式定义

正如以前所提到的,RISC总是有固定长度以便于译码。对设计的微处理,每个指令都是固定的16位长度,其中操作码占用16 位指令字的高4 位。所有的指令码都很容易译码。对两个寄存器的指令,d选择目的寄存器,: r选择源寄存器,4位可以寻址16个寄存器,这种指令格式包括ADD,SU

对于仅需要一个寄存器的指令,d用来寻址目标寄存器。这种指令格式

对于立即数指令,指令中间8位是8位常数,其中H 代表常数的高四位,L代表常数的低四位,d用来寻址目的寄存器。这种指令格式包括MOV,S

4、指令编码

确定了指令的格式,就可以对指令进行编码,这样指令就有唯一的身份识别。指令编码结果如表2所示。

2.3 指令时序分析

2.3.1 RISC与流水线

指令的执行分成两个阶段:取指阶段和执行阶段。在取指阶段,指令机器码被取到指令寄存器,控制单元通过译码知道这是个什么样的指令,需要执行什

么样的操作,需要什么操作数;在执行阶段当前指令以及取指完毕,上一条指令被执行。这样按顺序第1条指令执行完再取第2条指令,第2条执行完在取第3条指令的顺序执行方式执行一条指令最少需要两个时钟周期,如果执行10条指令那么就得需要10个时钟周期,显然这样指令的执行效率不高。为了解决这个问题,本次设计中引入了流水线(pipeline)操作。8位CPU采用两级流水线技术,指令的流水线可以用图2-4来简单的示意:

图2-4 流水线指令执行

由图可以看出,尽管每条指令的完成需要两个周期的时间,但是在流水线结构中,当前指令的取值周期和上一条指令的执行周期在时间上是重叠的,对于这种并行操作,从平均角度来看,相当于一个周期内完成一条指令,因此可以大大提高指令的运行速度[15]。

RISC架构的处理器,每条指令有固定的长度,指令格式只有简单的几种,指令功能不交叉,寻址方式也简单,所以更加有利于实现流水结构。

为了降低执行每条指令所需时钟数,本文也采用两级流水,其功能分别定义为:第一级,取指;第二级,时钟前半周期控制器译码、发出控制信号,时钟后半周期进行对寄存器堆TRAM进行读操作、ALU计算。这样,很显然也能降低执行指令所需的时钟数,取指、执行只用了一个时钟。在时钟上升沿PC产生进入PCRAM的地址,由于PCRAM 有反应时间,经过一段很短的时间读出指令,在下一个时钟上升沿到来时,指令寄存器锁存指令,然后开始对指令进行译码,并产生操作数、目的存储器/寄存器地址、写信号及各种控制信号。

2.3.2 程序计数器与流水线

程序计数器(PC)是程序中寻址取得指令的特殊单元。正是靠PC的移动,CPU才能一条一条的执行指令。同时,程序计数器也是和流水线密切相关的单元。在程序开始执行前,CPU将它的起始地址送入PC,当指令执行时,CPU将自动修改PC的内容,所以PC中的内容总是下一条指令的地址。由于指令通常是顺序执行的,所以修改的过程通常只是简单的PC加1。表2说明了在引入流水线后PC 的具体工作情况:

表3表明,在系统复位时,PC内的值清0,第一个时钟周期,指令寄存器取PC为0的地址的指令,同时PC的值加1;第二个时钟周期,执行0地址的指令,同时读取地址1的指令,同时PC的值加1;第三个时钟周期,重复这样的过程。这样可以得到结论:如果当前CPU正在执行的是第N条指令,那么指令寄存器正在读取的是N+1条指令,此时PC的值应该是N+2。

2.4 CPU整体结构即设计思想

在设计CPU 之前整个结构的特性及由哪些模块组成,这些模块之间的互连关系以及整个CPU的最后输出信号等都是要事先定义好的.。

2.4.1 CPU的外部引脚规划

从CPU外部看整个输入输出如图2-5

图2-5 CPU外部引脚信号

该CPU有5个输入引脚,1个结果输出端口以及一个运算溢出信号。系统的时钟信号将直接驱动驱动整个CPU。WR信号是系统的异步指令输入信号,高电平有效。当WR信号有效时,整个CPU进入指令输入状态,当WR低电平时CPU进入指令读取并完成指令操作的状态,当CPU完成全部输入指令时进入停机状态,此时Start信号重新启动CPU,使其进入等待状态。

2.4.2 CPU的整体框图

系统的顶层结构模块图如图2-6

图2-6 系统的顶层结构模块图

该模块包含了系统的主要模块及它们之间的连接关系。图中的一个一个的模块代表了各个功能模块,将在下面的章节中分别做详细的设计说明。每个模块都将按照EDA设计中自下而上的设计原则分别独立设计。有些模块是比较简单的像指令寄存器(IR),有些模块则是比较难的像ALU模块和控制单元模块。

在设计微处理器的功能模块之前,需要决定如何逻辑实现和处理器锁存数据。

微处理器中有两种不同的逻辑元件:

(1)ALU、MUX、CONCROL单元的元件都是组合逻辑电路。它们的输出仅仅依赖于当前的输入状态,没有内部存储功能;

(2)寄存器堆、临时寄存器都是状态单元,它的输出不仅依赖于输入,还有其自身内部的状态。时钟用来决定状态何时被写入,一个状态可以在任意时刻读取。

微处理器的时钟采用边沿触发的方式,整个系统采用单时钟电路,即提供一个系统时钟,每当时钟边沿到来的时候,向状态单元写入数据。

整个系统可以分为两个单元:取指单元,执行单元。取指单元负责取下条指令,执行单元负责执行当前指令。取指单元和执行单元共同构成了CPU的微控制单元。取指单元的第一个模块是程序计数器(PC),PC中是下条要执行的指令的地址,它是指向程序存储器单元(PROM)来寻址指令的。控制模块是对从指令寄存器(IR)送出指令进行译码从而发出适当的控制信号执行程序的。

系统中包括了很多寄存器的设计包括指令寄存器(IR),程序计数器(PC),这些寄存器大都在我们顶层可见的模块的内部,系统的工作也可以看作就是数据在这些寄存器之间的“迁移”,也即寄存器内容的迁移。微处理器的功能就是体

现在这些这些数据是如何传递的,在传递前的处理是如何处理的,所有这一系列寄存器数据之间的迁移转换就组成了微处理器。

2.4.3 CPU结构的层次划分

正确合理的划分系统是所有数字系统设计成功的关键。子系统的划分过程就是把总体任务划分程若干分任务的过程。本设计将CPU分解为两大子系统:数据通路和控制通路。这种划分将CPU的运算、执行单元与控制部件分离开,是非常合理、自然的。数据通路和控制通路这两大部分又可以细化为更小的模块,ALU模块(算术逻辑单元)、PC_RAM模块(程序存储器)和IR(指令寄存器)、TRAM(寄存器堆)属于数据通路部分,ALU内部又包含更小的模块(加、减、与、或、移位模块);控制模块属于控制通路部分,其中控制模块又由FSM(状态机)和CONTROL(控制器)构成。具体的模块功能实现将在下面两章中详细介绍。

第三章CPU数据通路设计

从这一章开始将详细介绍整个CPU的细化设计模块。通过上一章对CPU的结构划分,已经知道CPU的整个设计分为两个部分:数据通路和控制单元。在这一章中将细分数据通路模块,数据通路是CPU中的执行部件,数据传输、存储、处理都是在数据通路中完成的。在整个CPU的结构框图中,除了控制单元部分,其余部分都是数据通路部分,包括程序计数器PC、程序存储器PC_RAM、指令寄存器IR、寄存器堆TRAM、数据选择器ALUMUX和算术与逻辑单元AL U。

设计数据通路,有两种不同的设计方案。第一种是在所有需要传送数据的部件创建一条直接通路,采用多路选择器或者缓冲器为那些有多个数据源的寄存器从多个可能的输入中选择一个,这种方案适用于规模比较小的微处理器设计。另一种方案是在微处理器内部创建一条总线,并且在各个部件之间使用总线传数据。本设计采用的是第一种方案的设计方法。下面将一一介绍数据通路的各个模块功能及其实现。

3.1 程序计数器模块PC

程序计数器(PC)作为指向指令地址“指针”,决定着下一条要执行的指令。正是有了PC的移动和变化,CPU才能按一定的顺序或预想的情况进行指令的执行。程序计数器PC中存放指令存储器的地址,当一条指令被执行时,程序计数器存放下一条指令的地址。在正常工作的条件下,控制信号选择PC+1作为下一个PC的值输出;当执行JMP指令时,选择来自指令中的跳转地址决定新的PC 值,但是在本次设计中没有涉及到。

图3-1PC模块外部接口信号

图3-1所示是从外部看的PC模块的接口。其中输出的PC是8BitS宽的,因此PC模块可以寻址独立的256个单元。PC_OUT地址输出信号是直接与程序存储器PCRAM相连的。PC_INC控制信号来自控制单元,若PC_INC有效则PC 将执行加1操作。EN信号是程序计数器PC的使能控制信号,只有当该信号有效时PC的相应才能操作才能执行。

3.2 程序存储器PC_RAM

程序存储器是存储微处理器程序,即能执行特定功能的一组指令组合。图3-2显示了程序存储器的结构图。

图3-2 程序存储器示意图

在设计程序存储器模块时,本文是自行设计寄存器堆型的存储器,直接使用一个数组存放二进制数据,通过VHDL 编写一个一定长度的数组实现。因为程序计数器可以寻址到256条指令,所以程序存储器也必需可以至少存放128 条16 位的指令,这样只需申请一个变量Ram,有256个元素,每个元素16 位即可。第一个数组元素下标表示存贮器的0 号地址,第二个数组元素下标表示1 号地址,以此类推至第256个数组元素的下标,即11111111 号存贮器地址。

程序存储器是一个可读可写的模块,其输入端口接入外围程序和地址输入端口,由WR 异步控制其读写状态,WR 高电平有效。当WR 有效时,程序存储器为写状态,即将输入程序存入其输入地址对应的存储单元中, 即执行操作ram(conv_integer(waddr)) <= wdata;当WR 为低电平时,程序存储器处于读状态,其将程序计数器输出地址PC_OUT上对应的存储单元中的指令输出,即执行操作instruction <= ram(conv_integer(pc_in))。这样就可以通过存贮器数组元素和输入地址间的相互赋值实现“读存储器”,“写存储器”,既简单又容易实现。

图3-3程序存储器外部接口信号

程序存储器模块的外部接口信号如图3-3所示,其中读状态地址来自PC模块,输出指令直接送往指令寄存器模块,写状态地址来自CPU输入地址,写入指令存储到对应地址单元中。

指令寄存器在时钟上升沿锁入从程序存储器PC_RAM中读取的指令,并保持到时钟的下一个上升沿,一条指令的执行从指令寄存器锁入指令开始。所以指令寄存器的作用是暂时存放取到的指令,是从程序存储器到控制单元和ALU模块中的中间缓冲模块。

通过上一章的流水线分析部分、指令时序分析部分和程序存储器模块分析部分可以得到,在指令寄存器模块中,当前存放的并不是CPU正在执行的指令,而是下一条指令。同样道理可知,送入控制单元并进行指令译码也是下一条指令。这是由两级流水线的架构决定的,在两级流水线中,CPU在执行当前指令的同时指令寄存器取到下一条指令,并且控制器将下一条指令进行译码。

图3-4指令寄存器外部接口

图3-4所示,指令寄存器的指令流向是:4位操作码IR指令送往控制单元已做译码使用,而根据不同指令分离出来的要操作的立即数DATA、源操作寄存器RR、目的操作寄存器RD送到寄存器堆TRAM模块。指令寄存器外部输入控制信号en是来自控制单元的输入信号,En高电平有效,与PC模块的使能en信号功能上基本一致,它控制着指令寄存器是否可以从程序存储器中加载指令。当en有效时指令寄存器才能更新来自程序存储器的指令。

3.4 时钟发生器模块

时钟发生器TIME_CTRL利用时钟信号CLK生成从时钟信号CLKR,并送往CPU的寄存器堆TRAM中,作为其进行读写操作的时钟信号。CLKR是将CLK 延迟半个周期产生的,有利于流水线的完成。

时钟发生器的外部接口如图3-5。

图3-5 时钟发生器的外部接口

寄存器堆与程序存储器设计相同,都是直接使用一个数组存放二进制数据,通过VHDL 编写一个一定长度的数组实现,同样可以通过集成器数组元素和输入地址间的相互赋值实现“读存储器”,“写存储器”。

在本次CPU设计中TRAM模块用以完成以下几个操作:

1、将立即数写入指定寄存器中。

2、将指定目的操作寄存器地址中的数据读出并输出。

3、将指定源操作寄存器地址中的数据读出。

图3-6 寄存器堆TRAM外部接口

如图12所示,fclkr时钟信号是来自时钟发生器,控制寄存器是否能进行读写操作。在CPU时钟的前半周期,控制器进行译码并发出控制信号,为操作的施行铺好路,在时钟的后半周期,也就是从时钟信号fclkr的上升沿,TRAM在控制信号ram _ctrl、load、store的控制下进行读写操作。

If (rising_edge(fclkr)) then

If (fstore =’1’) then

ram (conv_integer(fromrd))<=fR0

//存储上条指令运算得到的结果elsif (fromram_ctrl = "11") then

toreg_rr<=ram(conv_integer(fromrr));

toreg_rd<=ram(conv_integer(fromrd));

//将指定寄存器的值输出

elsif (fromram_ctrl = "01") then

ram (conv_integer(fromrd))<=value2;

// 存储立即数到目的寄存器

从这段代码可以看出,当控制信号store有效时,TRAM可以完成将运算器的结果写入目的操作寄存器中,若无效,则判断控制信号ram_ctrl的值,根据不同的控制值可以将寄存器的储存值分别写入目的操作寄存器和源操作寄存器中,可以将立即数写入目的操作寄存器中,可以读出指定寄存器的值并输出。

基于FPGA的计数器的程序的设计方案

基于FPGA的计数器的程序设计方案 1.1 FPGA简介 FPGA(Field-Progrmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了 原有可编程器件门电路数有限的缺点。 自1985 年Xilinx 公司推出第一片中大规模现场可编程逻辑器件(FP2GA) 至 今,FPGA 已经历了十几年的历。在这十几年的过程中,可编程器件有了惊人的发展: 从最初的1200 个可利用门,到今天的25 万可利用门,规模增大了200 多倍; FPGA 供应商也从Xilinx 的一枝独秀,到今天近20 个厂商的分庭抗争;FPGA 从单一的基于SRAM结构到今天各种结构类型的出现,都充分体现了可编程器件这一巨大市场的吸引力。FPGA 不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开 发周期短、开发软件投入少、芯片价格 不断降低。由于目前电子产品生命周期相对缩短,相近功能产品的派生设计增多 等特点,促使FPGA 越来越多地取代了ASIC 的市场,特别是对国内众多的科研单位来说,小批量、多品种的产品需求,使得FPGA 成为首选。 1.2 硬件描述语言VHDL特点 功能强大、设计灵活。VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。支持广泛、易于修改。由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。强大的系统硬件描述能力。VHDL具有多层次的设计描述功能,既可以描

基于FPGA的电子抢答器的程序设计

基于FPGA的电子抢答器的程序设计 摘要 随着科学技术日新月异,文化生活日渐丰富,在各类竞赛、抢答场合电子抢答器已经作为一种工具得到了较为广泛的应用。顾名思义,电子抢答器是一种通过抢答者的指示灯显示、数码显示和警示显示等手段准确、公正、直观地判断出最先获得发言权选手的设备。 此次设计有4组抢答输入,每组设置一个抢答按钮供抢答者使用。电路具有第一抢答信号的鉴别和锁存功能。当第一抢答者按下抢答开关时,该组指示灯亮以示抢答成功。同时,电路也具备自锁功能,保证能够实现在一路成功抢答有效后,其他三路均不能抢答。本设计基于VHDL语言,采用FPGA为控制核心,并结合动手实践完成,具有电路简单、操作方便、灵敏可靠等优点。该四路抢答器使用VHDL硬件描述语言进行编程,分为七个模块:判断模块,锁存模块,转换模块,扫描模块,片选模块,定时报警模块和译码模块。编程完成后,使用QuartersII工具软件进行编译仿真验证。 关键词:VHDL,FPGA,四路抢答器,仿真

目录 1 概述 (1) 1.1 设计背景 (1) 1.2 抢答器现状 (1) 1.3 本论文主要完成的工作 (1) 1.4 设计心得 (2) 2 开发工具简介 (3) 2.1 VHDL语言简介 (3) 2.2 FPGA开发过程与应用 (4) 2.2.1 FPGA发展历程及现状 (4) 2.2.2 FPGA工作原理 (4) 2.2.3 FPGA开发流程 (5) 2.3 Quartus II软件 (6) 3系统设计 (8) 3.1 系统设计要求 (8) 3.2 系统设计方案 (8) 3.2.1 系统硬件设计方案 (8) 3.2.2 系统软件设计方案 (8) 3.3.3 系统原理详述 (10) 4 电路程序设计及仿真 (12) 4.1 抢答锁存模块设计 (12) 4.1.1 VHDL源程序 (12) 4.1.2 抢答锁存电路的模块 (13) 4.2 仿真 (14) 总结 (15) 致谢 (17) 参考文献 (18)

FPGA四路电子抢答器设计

课程设计报告 专业班级 课程 FPGA/CPLD原理及应用题目四路电子抢答器设计学号 姓名 同组人 成绩 2013年5月

一、设计目的 1.进一步掌握QUARTUSⅡ软件的使用方法; 2.会使用VHDL语言设计小型数字电路系统; 3.掌握应用QUARTUSⅡ软件设计电路的流程; 4.掌握电子抢答器的设计方法。 二、设计要求 1.系统总体设计 (1)设计一个可以容纳四组参赛队进行比赛的电子抢答器。 (2)具有第一抢答信号的鉴别和锁存功能。在主持人发出抢答指令后,若有参赛者按抢答器按钮,则该组指示灯亮,显示器显示出抢答者的组别。同时,电路处于自锁存状态,使其他组的抢答器按钮不起作用。 (3)具有计时功能。在初始状态时,主持人可以设置答题时间的初始值。在主持人对抢答组别进行确认,并给出倒计时记数开始信号以后,抢答者开始回答问题。此时,显示器从初始值开始倒计时,计到0时停止计数,同时扬声器发出超时警报信号。若参赛者在规定的时间内回答完问题,主持人可以给出计时停止信号,以免扬声器鸣叫。 (4)具有计分功能。在初始状态时,主持人可以给每组设置初始分值。每组抢答完毕后,由主持人打分,答对一次加1分,答错一次减1分。 (5)设置一个系统清除开关,该开关由主持人控制。 (6)具有犯规设置电路。超时抢答者,给予鸣喇叭警示,并显示规范组别。 2.设计方案 系统的输入信号有:各组的抢答按钮A、B、C、D,系统允许抢答信号STA,系统清零信号RST,计分时钟信号CLK,加分按钮端ADD、en,减分端SUB、sta,计时使能端en时钟信号clk,复位rst;系统的输出信号有:四个组抢答成功与否的指示灯控制信号输出口可用a1、b1、c1、d1表示,四个组抢答时的计时数码显示控制信号,抢答成功组别显示的控制信号,各组计分显示的控制信号。整个系统至少有三个主要模块:抢答鉴别模块;抢答计时模块;抢答计分模块,其他功能模块(输出显示模块)。 3.如图为流程图: 开始→抢答→抢答鉴别→回答→加减分数→显示↑↑ 倒计时倒计时 犯规抢答或抢答后答题时间超时鸣喇叭警告。

推荐-基于FPGA的计数器的程序设设计 精品

郑州轻工业学院 电子技术课程设计 题目 _基于FPGA的计数器设计___ _________________________ 学生姓名 _ XXX_________________ 专业班级 _电子信息工程10-01班____ 学号 _5401001030XXX__________ 院(系)电气信息工程学院___ ____ 指导教师 _杜海明耿鑫____________ 完成时间20XX年06月22日_______

郑州轻工业学院 课程设计任务书 题目基于FPGA的计数器的程序设设计_______________ 专业、班级电子信息工程学号姓名 _____ 主要内容、基本要求、主要参考资料等: 主要内容: 要求学生使用硬件描述语言(Verilog 或者VHDL)设计基于FPGA的计数器的 源程序。实现如下功能:显示1个0-9999的四位计数器;四位七段数码管的译码与 显示。理解数码管的译码原理,同时需要做一个分频器,理解时钟分频的原理及意 义。 基本要求: 1、学会quartusII的使用,掌握FPGA 的程序设计方法。 2、掌握硬件描述语言语法。 3、程序设计完成后要求在quartusII中实现功能仿真。 主要参考资料: 1、. [M]..20XX,4 2、陈怀琛.MATLAB及在电子信息课程中的应用[M].北京:电子工业出版 社.20XX,1 完成期限:20XX.6.21—20XX.6.25 指导教师签名: ________________ 课程负责人签名: ___________________ 20XX年6月18日

目录

基于FPGA的计数器的程序设设计 摘要 本文介绍了一种基于FPGA的,由顶层到底层设计的数字频率计。本文主要包括该频率计的设计基础和实现方法以及译码与显示等内容,描述了它的设计平台、工作原理和软硬件实现。本设计主要有分频器、四位计数器、16位锁存器以及数码管显示电路。计数器设计采用VHDL硬件描述语言编程,极大地减少了硬件资源的占用,仿真与分析结果表明,该数字频率计性能优异,软件设计语言灵活,硬件简单,速度快。 关键词FPGA 计数器 VHDL

8路抢答器基于fpga解析

基于FPGA的多路数字抢答器的设计 摘要:本文主要介绍了以FPGA为基础的八路数字抢答器的设计,首先对各模块的功能进行分配,此次设计主要有七个模块,依次为分频模块、抢答模块、加减分模块、倒计时模块、设置倒计时模块、蜂鸣器模块和数字显示模块。主持人按下开始键可以实现抢答开始,选手号的显示,加减分模块,积分的显示,积分的重置,并启动倒计时模块;若有选手犯规或者倒计时记到五秒,停止倒计时,开启蜂鸣器,并为进入加减分模块做准备。此次设计程序用Quartus II12.0为软件开发平台,用Verilog语言来编写,使用模块化编程思想,自上向下,通过寄存器变量来控制各个模块的运行。本次设计采用FPGA来增强时序的灵活性,由于FPGA的I/O端口资源丰富,可以在此基础上稍加修改可以增加很多其他功能的抢答器,因此后期可塑性很强,因为核心是FPGA芯片,外围电路比较简单,可靠性强、运算速度高,因此便于维护,并且维护费用低。 关键词:FPGA、抢答器、倒计时、犯规报警、加减分、显示 目录 第一章绪论................. . (2) 第二章 FPGA原理及相关开发工具软件的介绍 (3) 2.1 FPGA的简介..... . (3) 2.1.1 FPGA的发展与趋势......... .. (3) 2.1.2 FPGA的工作原理及基本特点 (4) 2.1.3 FPGA的开发流程 (5) 2.1.4 FPGA的配置... . (5) 2.2 软件介绍............... .. (6) 2.2.1 Verilog HDL的介绍........... .. (6)

2.2.2 Quartus II软件.................... .. (7) 第三章数字抢答器系统设计方案和主要模块 (8) 3.1 功能描述及设计架构...... .. (8) 3.2 抢答器程序流程图以及各模块代码分析 (10) 3.2.1 抢答器程序结构及主程序流程图 (10) 3.2.2 秒分频模块 (15) 3.2.3 倒计时以及倒计时剩5S时报警模块...... 错误!未定义书签。 3.2.4 倒计时显示及倒数计时设置显示模块 (20) 3.2.5 选手号显示及违规报警模块 (26) 3.2.6倒计时设置模块 (30) 3.2.7顶层模块 (35) 3.3 硬件电路 (37) 3.3.1 按键电路图 (38) 3.3.2 数码管显示电路图 (38) 3.3.2 蜂鸣器电路图 (39) 第四章管脚分配及功能 (40) 第五章总结 (41) 参考文献 (418) 第一章绪论 1.1 课题研究背景 随着社会的发展,各种竞赛比赛日益增多,抢答器以它的方便快捷、直观反映首先取得发言权的选手等优点,深受比赛各方的辛睐,市场前景一片大好。另一方面随着电子科技的发展,抢答器的功能以及实现方式也越来越多,产品的可靠性以及准确性也越来越强。能够实现多路抢答器功能的方式有很多种,主要包括前期的数字电路、模拟电路以及数字电路与模拟电路组合的方式,但是这种方

基于fpga的计数器的程序设计

基于FPGA的计数器的程序设计 摘要 本文介绍了一种基于FPGA的,由顶层到底层设计的数字计数器。本文主要包括该计数器的设计基础和实现方法以及译码与显示等内容,描述了它的设计平台、工作原理和软硬件实现。本设计主要有分频器、四位计数器、16位锁存器以及数码管显示电路四个模块组成。计数器各模块设计采用VHDL硬件描述语言编程,极大地减少了硬件资源的占用,仿真与分析结果表明,该数字计数器性能优异,软件设计语言灵活,硬件简单,速度快。 关键词FPGA计数器VHDL分频器

目录 基于FPGA的计数器的程序设计 (1) 摘要 (1) 1 绪论 (3) 1.1 FPGA简介 (3) 1.2硬件描述语言VHDL简介 (3) 1.3开发工具Quartus II简介 (4) 2整体设计方案 (4) 3各功能模块设计及仿真 (5) 3.1分频器的设计 (5) 3.1.1分频器设计原理 (5) 3.1.2源程序及波形仿真 (6) 3.1.3分频器RTL 电路图 (7) 3.2计数器的设计 (7) 3.2.1分频器设计原理 (7) 3.2.2源程序及波形仿真 (8) 3.2.3 RTL 电路图 (11) 3.3锁存器的设计 (11) 3.3.1锁存器设计原理 (11) 3.3.2锁存器源程序及波形仿真 (12) 3.3.3锁存器RTL电路图 (13) 3.4显示部分的设计 (13) 3.4.1七段数码管显示原理 (13) 3.4.2七段数码管显示源程序及波形仿真 (15) 3.4.3七段数码管显示RTL 电路图 (16) 4系统顶层设计 (17) 4.1.1自顶向下的设计方法 (17) 4.1.2 顶层设计源程序及其仿真波形 (17) 4.1.3系统顶层RTL 电路图 (20) 5总结 (21) 参考文献 (22)

基于FPGA的四路抢答器的Verilog-HDL代码

module qiangda4(clk,clr,inputEn,add,stu,inputL1,inputL2,inputL3,inputL4,Led1 ,Led2,Led3,Buzzer); // 开始声明各个端口 //输入口 input clk,clr,inputEn,add,stu,inputL1,inputL2,inputL3,inputL4; //输出口 output [0:7] Led1; //倒计时时使用的LED控制端 output [0:7] Led2; //数码管控制端 output [0:7] Led3; //分数显示数码管控制端 output Buzzer; //蜂鸣器 //各个寄存器变量声明 reg [0:7] Led1; reg [0:7] Led2; reg [0:7] Led3; reg cnt=32'b0; reg Buzzer; reg score=4’hf;//分数显示寄存器 //配置寄存器,EnFlat是表明开始抢答的标志位 reg EnFlat=1'b0; //BuClk是蜂鸣器的标志位 reg BuClk=1'b0; //BuL是做蜂鸣器的延时用 reg [0:7]BuL=8'd0; //抢答选手标志位 reg answer=3’d0; //各组分数标志位 reg score1=4’d5; reg score2=4’d5; reg score3=4’d5; reg score4=4’d5; //------------初始化模块--------------- always @ (posedge clk)//捕捉时钟 begin //初始化各按键并开始抢答 begin if(inputEn==1'b0) begin //初始化各个标志位和参数

基于FPGA的定时器计数器的设计与实现

基于FPGA的定时器/计数器的设计与实现 摘要 本课题旨在用EDA工具与硬件描述语言设计一个基于Altera公司的FPGA 16位计数器\定时器,可对连续和非连续脉冲进行计数,并且计数器在具有计数定时功能基础上,实现简单脉宽调制功能和捕获比较功能。本设计采用QuartusII编译开发工具使用VerilogHDL 设计语言进行设计,并采用了由上而下的设计方法对计数器进行设计,体现了VerilogHDL 在系统级设计上自上而下设计风格的优点。本设计中采用了三总线的设计方案,使设计更加简洁与规范。本设计所有模块与功能均在Quartus II 7.0_1.4G_Liwz版本下通过编译与仿真,实现了定时器/计数器的设计功能。 关键词:VerilogHDL硬件描述语言;QuartusII;FPGA;定时器/计数器

FPGA-based timer / counter design and implementation This topic aims to use EDA tools to design a 16 bit counter \ timer based on Altera's FPGA by hardware descripe language, which can count continuous and discontinuous pulset, and the counter with the function of capture and PWM. This design uses VerilogHDL language and top-down design method to design the counter on QuartusII compile tool, the design reflect the advantages of VerilogHDL top-down design in system-level design. The design uses a three-bus design, which make design much more specifications and concise. The design and function of all modules are compiled and simulationed on the Quartus II 7.0_1.4G_Liwz versions, and achieve the timer / counter’s features. Key words: VerilogHDL hardware description language; QuartusII; FPGA; timer / counter

简易四路抢答器

单片机课程设计 预习报告 班级:建电141 姓名:付鹏鑫 学号:1412032031 设计题目:四位竞赛抢答器系统设计设计时间:2016.01.03~01.07 评定成绩: 评定教师:

目录 摘要 -------------------------------------------------------------------- 错误!未定义书签。 一、任务分析: -------------------------------------------------------------------------------- 3 二、总体方案: -------------------------------------------------------------------------------- 4 2.1 可行方案--------------------------------------------------- 错误!未定义书签。 2.2 方案设计--------------------------------------------------- 错误!未定义书签。 三、硬件设计: -------------------------------------------------------------------------------- 8 3.1 电路原理图 --------------------------------------------------------------------------- 8 1.AT89C51简介 ------------------------------------------------------------------------ 10 2.PCF8591简介 --------------------------------------------------------------------------- 9 3.RESPACK8及RX8简介 (12) 3.2 器件选择--------------------------------------------------- 错误!未定义书签。 四、软件设计: ---------------------------------------------------- 错误!未定义书签。 4.1程序处理流程 --------------------------------------------- 错误!未定义书签。 4.2 程序流程图 ----------------------------------------------- 错误!未定义书签。 4.3 程序介绍--------------------------------------------------- 错误!未定义书签。 五、调试过程: ------------------------------------------------------------------------------ 22 5.1 调试步骤----------------------------------------------------------------------------- 22 六、参考文献: ---------------------------------------------------- 错误!未定义书签。 错误!未定义书签。 摘要:抢答器作为一种工具,已广泛应用于各自智力与知识竞赛场合。本设计是基于C52单片机系统的四路抢答器。考虑到其限时回答功能,

基于FPGA的抢答器毕业设计.

摘要 本文介绍了一种采用EDA技术,在QuartusII工具软件环境下用VHDL语言编写的数码显示8路抢答器的电路组成、设计思路及功能。 抢答器同时供8名选手或8个代表队比赛,分别用8个按钮[1]~[8]表示。设置一个系统清除和抢答控制开关,该开关由主持人控制。抢答器具有锁存与显示功能,即选手按动按钮,锁存相应的编号,扬声器发出声响提示,并在七段数码管上显示选手号码。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。 系统主芯片采用EP2C35F484C8,由基本时钟发生电路模块,复位电路模块,键盘防抖动模块,键盘扫描模块,数码管驱动模块,报警频率选择模块组成。经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,从而完成抢答器功能。 关键词:抢答器;硬件描述语言;可编程逻辑门阵列;

Abstract This article introduces an EDA technology tools in QuartusII environment using VHDL language digital display 8 answering device circuit design ideas and features. Responder same time for eight players or eight team competition, with eight buttons, respectively [1] ~ [8] said. Setting clear and answer in a system control switch, the switch control by the moderator. Responder has a latch and display, the player press the button, latch the corresponding number, speaker audible prompts, and seven-segment digital tube display in player numbers. Players answer in the implementation of the priority latch, first answer in player numbers has been maintained to host the system cleared. System main chip EP2C35F484C8, from the basic clock circuit module, reset the circuit module, keyboard judder module, the keyboard scan module, a digital control drive module, alarm frequency selection module. The compilation and simulation process is designed, in the programmable logic device to download verification, thus completing the Responder feature. Key words:Responder;Very Hardware Description Language; FPGA;

基于FPGA十进制同步计数器

十进制同步计数器 一、实验目的 1.学习十进制同步计数器的Verilog硬件设计 2.学会并掌握Quartus II软件的使用 3.学会并掌握modelsim仿真软件的使用 二、实验原理 进制计数器具有电路结构简单、运算方便等特点,但是日常生活中我们所接触的大部分都是十进制数,特别是当二进制数的位数较多时,阅读非常困难,还有必要讨论十进制计数器。在十进制计数体制中,每位数都可能是0,1,2,…,9十个数码中的任意一个,且“逢十进一”。根据计数器的构成原理,必须由四个触发器的状态来表示一位十进制数的四位二进制编码。 第2个计数脉冲来到后,其状态为0010。以下类推,可以得到如表1所示的状态表。但需注意:在第9个脉冲来到后,亦即计数器处于1001态时,低电平封住了F2的置1端,Q1的高电平又使K4=1,故第十个计数脉冲来到后,F2、F3状态不变,F1、F4同时置0,计数器跳过多余的6个状态,完成一次十进制计数循环。 表1 同步十进制加法计数器状态表 为了满足十进制加法计数器的原理,本实验用Verilog程序在FPGA/CPLD 中来实现。首先设计一个程序,程序为脉冲输入,设输出的四位码为q[3:0],十进制计数值为count,脉冲上升沿时q值+1,直到q=9时count=1,q置零重新开始计数直至下一个q=9,count=2,依次循环。

三、实验任务 1.根据实验目的编写verilog程序 2.将设计好的Verilog译码器程序在Quartus II上进行编译 3.对程序进行适配、仿真,给出其所有信号的时序仿真波形图(注意仿真波形 输入激励信号的设置)。本实验要求自己设置clr值,理解清零的意义 四、实验步骤: 1.建立工作库文件和编辑设计文文件 任何一项设计都是一项Project(工程),而把一个工程下的所有文件放在一个文件夹内是一个非常好的习惯,以便于我们整理,利用和提取不同工程下的文件,而此文件夹将被EDA软件默认为Work Library(工作库),所以第一步先根据自己的习惯,建立个新的文件夹。 (1)新建文件夹:在E盘建立并保存工程,文件夹取名myproject,工程取名为cnt10_1 (2)输入源程序:打开Quartus II,选择菜单File-->New-->Design Files-->VerilogHDL File-->OK(如下图所示) 代码如下: module cnt10_1(clr, clk, q, cout); input clr, clk; output[3:0] q; output cout; reg[3:0] q; reg cout; always @(posedge clk) begin if (clr) q = 0; else begin if (q == 9) q = 0; else q = q + 1;

VHDL语言四人抢答器

中南林业科技大学 课程设计报告 设计名称:基于VHDL语言的四人抢答器姓名:杜涵学号:20134491 专业班级:电子信息工程一班 院(系):计算机与信息工程学院 设计时间:2015年12月8日 设计地点:东园22栋201

目录 一、设计题目……………………………………………… 二、设计要求……………………………………………… 三、设计目的……………………………………………… 四、设计背景……………………………………………… 五、使用工具……………………………………………… 六、设计原理……………………………………………… 七、设计结构……………………………………………… 八、原理图………………………………………………… 九、模块程序……………………………………………… 十、引脚分配………………………………………………十一、设计结果验证………………………………………十二、总结…………………………………………………

一、设计题目:基于VHDL语言的四路抢答器 二丶设计要求: 1、设计制作一个竞赛抢答器,每组受控于一个抢答开关,分别为S1, S2, S3, S4。 2、控制键K,用于控制整个系统清零, K=0,系统清零;抬起复位键时,K=1,抢答开始。 3、每答对一题计十分,每次答题时间不能超过60秒。 4、第一抢答者按下抢答按钮,对应的led灯点亮,同时数码管显示是第几位抢答者,并封锁其他各组的按钮,即其他任何一组按键都不会再使电路响应。与此同时,数码管开始显示60秒的倒计时。通过K键复位,开始下一轮抢答。 三、设计目的 1.通过设计竞赛抢答器的实例来体会设计实际产品的过程,在学好理论的基础上,提高动手实践能力。 2.学习怎样用vhdl语言来描述自己的设计思路,调试硬件后,能够使产品实现功能。 3.进一步掌握用vhdl语言编写数字电路。 4.在做课题过程中,掌握多位共阴极扫描显示数码管的驱动及编码,学会使用和调试硬件。

基于FPGA的二十四进制计数器

实验名称:二十四进制计数器二十四进制计数器

实验步骤或程序: 十进制计数器程序: library ieee; use ieee.std_logic_1164.all; entity count10 is port(ep,et,clk,nld,nrd: in std_logic; d: in std_logic_vector(3 downto 0); q:buffer std_logic_vector(3 downto 0); c:buffer std_logic ); end count10; architecture rtl of count10 is begin process(ep,et,clk,nld,nrd,d) begin if ep='1' and et='1' then if nrd='0' then q<="0000"; c<='0'; else if clk'event and clk='1' then if nld='0' then q<=d;

else case q is when"0000"=>q<="0001";c<='0'; when"0001"=>q<="0010";c<='0'; when"0010"=>q<="0011";c<='0'; when"0011"=>q<="0100";c<='0'; when"0100"=>q<="0101";c<='0'; when"0101"=>q<="0110";c<='0'; when"0110"=>q<="0111";c<='0'; when"0111"=>q<="1000";c<='0'; when"1000"=>q<="1001";c<='1'; when others=>q<="0000"; c<='0'; end case; end if; else q<=q; c<=c; end if; end if; else q<=q; c<=c; end if; end process; end rtl; 管脚设置: 二十四进制计数器:

基于fpga的四路抢答器课程设计报告

一、课题设计的基础和实验条件 1.工作基础 (1)数字电路,模拟电路的学习;对所需使用的芯片管脚及 功能的了解;掌握了基本的数字电路设计流程。 (2)学会使用MAX+PLUS 软件设计数字电路; 了解EDA实验开发系统。 2.实验条件 (1)提供有目标芯片:FPGA-型号EP7128SLC84-15的实验开发系统、数码显示器、二极管、三极管、钮子开关; (2)电路设计器件: AND4、NOT、D触发器等 二、设计目标 1. 4人抢答器(四名选手分别为:R1,R2,R3,R4); 2. 主持人启动及复位开关HT; 3. 七段显示码显示选手的编号; 4. 抢答器具有“互锁”功能; 三设计电路图及仿真 该设计属于较为复杂的中小规模数字系统设计,按照系统的功能要求和自顶向下的层次化设计思想,该抢答器可以分为三个模块,他们分别为:抢答器控制模块——IN,该模块用于控制选手及主持人的动作;编码模块——qiwei,用于将选手的编号编码以便用数码管显示输出; (1)抢答器控制模块IN的设计: 该模块在任意一位选手首先按下抢答键后,其输出高电平给D锁存器,并将输出结果送至编码器qiwei, 该模块的主持人按键HOST按钮可以实现系统的复位。其原理图为:

选手的输出信号发出之后,需要把输出转换为数字,故需要加一个七位译码器。(2)七位译码器的设计: 通过编程定义生成了一个七位译码器: 生成此七位译码器的程序如下:

(3)生成完整设计图: 两个模块进行连接即得到最终的实验电路图: (4)设计图的仿真: 对设计的电路进行仿真得到仿真图如下:

从仿真结果可以看出符合功能要求。 (5)连接引脚图: 根据设计图选择适当的引脚连接得到下图的引脚图

基于FPGA的环形计数器设计

龙源期刊网 https://www.wendangku.net/doc/0918881109.html, 基于FPGA的环形计数器设计 作者:段品凡郭昭利王彦博张哲曾健于海霞 来源:《电脑知识与技术》2019年第09期 摘要:设计一个能自启动的模8右移扭环形计数器和模4右移环形计数器,以Verilog语言进行程序编写,并设以FPGA应用设计为基础,使用Quartus Ⅱ进行仿真。 关键词:FPGA;Verilog;Quartus Ⅱ。 中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2019)09-0217-02 在信息化时代的今天,无论是工厂的生产,还是日常生活,自动化的程度越来越高,在许多场合,人,已不再是必须主角,而代替人类完成诸多工作的是高度自动化的设备,而其中关键的一环便是计数器。 1 原理 1.1 FPGA简介 以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多數的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。 1.2 计数模块简介 此模块为本次设计的主模块,由两个小模块IC181模块(模8右移扭环形计数器模块)和IC182模块(模4右移环形计数器模块)组成,完成本设计的计数功能。其中,扭环形计数器又称约翰逊计数器,它具有电路结构简单,工作速度快且循环码等优点,因而应用较广。 2 总体设计 2.1 总体框图 2.2 总体流程图 3 具体设计

基于FPGA的计数器设计

一级建造师工程经济模拟题100道 得分规则:备选答案为ABCD四项的为单项选择题,每题1分,每题的备选项中,只有1个最符合题意:备选答案为ABCDE五项的为多项选择题,每题2分,每题的备选项中,有2个或2个以上符合题意,至少有1个错项。错选,本题不得分;少选,所选的每个选项得0.5分。 1、在工程经济学中,作为衡量资金时间价值的绝对尺度,利息是指( )。P2 A.占用资金所付出的代价 B.放弃使用资金所得的补偿 C.考虑通货膨胀所得的补偿 D.资金的一种机会成本 E.投资者的一种收益 2、利率是各国调整国民经济的杠杆之一。其高低首先取决于( )。P2 A.金融市场借贷资本的供求状况 B.借贷资本的期限 C.通货膨胀的波动影响 D.社会平均利润率的高低 3、下列关于利息和利率的说法中,正确的有( )。P2-3 A.利息是占用资金所付出的代价 B.利息能够促进企业加强经济核算 C.利率的高低取决于平均投资利润率的高低 D.利息是衡量资金时间价值的绝对尺度 E.利息和利率是以信用方式动员和筹集资金的动力 4、在工程经济分析中,通常采用( )计算资金的时间价值。P5 A、连续复利 B、间断复利 C、连续单利 D、瞬时单利 5、关于现金流量图绘制规则的说法,正确的有( )。P5 A.横轴为时间轴,整个横轴表示经济系统寿命期 B.横轴的起点表示时间序列第一期期末 C.横轴上每一间隔代表一个计息周期 D.与横轴相连的垂直箭线代表现金流量 E.垂直箭线的长短应体现各时点现金流量的大小 6、要正确绘制现金流量图,必须把握好现金流量的要素主要包括( )。P6 A.现金流量的时间点 B.现金流量的大小 C.现金流量的运动状态 D.现金流量的方向 E.现金流量的作用点 7、现金流量的分布情况,说明( )。P8 A.从收益方面来看,获得时间越早,数额越多,其现值越大 B.从收益方面来看,获得时间越早,数额越少,其现值越大 C.建设项目早投产,早获收益,多获收益,才能达到最佳经济效益

基于FPGA技术实现智能抢答器的设计

河北工业大学城市学院 毕业设计说明书 作者:陈厚黎学号: 098063 系:信息工程系 专业:电子科学与技术 题目:基于FPGA技术实现智能抢答器的设计指导者:伍萍辉教授 (姓名) (专业技术职务) 评阅者: (姓名) (专业技术职务) 年月日

目次 1引言............................................................................................................................................. - 1 -1.1 本课题的发展现状................................................................................................................ - 1 -1.2 本课题研究的目的和意义.................................................................................................. - 1 - 1.3、实现方法概述...................................................................................................................... - 2 - 2 基本应用电路设计................................................................................................................ - 5 -2.1 抢答器设计基本要求.......................................................................................................... - 5 -2.2 硬件电路设计........................................................................................................................ - 6 - 2.3 软件程序设计........................................................................................................................ - 6 - 3 系统总体电路图...................................................................................................................... - 18 - 4 编程及测试.............................................................................................................................. - 19 -结论.......................................................................................................................................... - 20 -参考文献................................................................................................................................ - 21 -致谢.......................................................................................................................................... - 22 -附录.............................................................................................................................................. - 23 -

verilog_hdl_fpga抢答器

FPGA期末结业论文基于FPGA&VerilogHDL的四路抢答器院系:物理与电子学院 专业:电子信息科学与技术 任课教师: 学号: 姓名: 2013年12月

目录 (0)摘要 (2) (1)引言 (3) 1.1关于课程设计 (3) 1.1.1课程设计目的 (3) 1.1.2课程设计内容 (3) 1.2开发工具简介 (4) 1.2.1 EDA技术 (4) 1.2.2 硬件描述语言-Verilog HDL (4) 1.2.3 Verilog HDL设计流程 (5) 1.2.4 FPGA基本特点 (5) 1.2.5 FPGA工作原理 (5) (2)概述 (5) 2.1 设计过程 (5) 2.1.1系统设计要求 (5) 2.1.2系统设计方案 (6) (3)系统设计 (6) 3.1系统组图 (6) 3.2系统主源程序 (8) (4)仿真综合 (10) (5)结论 (13) (6)参考文献 (13) (7)附录 (13)

0摘要 抢答器是在竞赛、文体娱乐活动(抢答活动)中,能准确、公正、直观地判断出抢答者的机器。电子抢答器的中心构造一般都是由抢答器由单片机以及外围电路组成。 本设计是以四路抢答为基本概念。从实际应用出发,利用电子设计自动化( EDA)技术,用可编程逻辑器件设计具有扩充功能的抢答器。它以Verilog HDL硬件描述语言作为平台,结合动手实验而完成的。它的特点是电路简单、制作方便、操作简单、方便、性能可靠,实用于多种智力竞赛活动。本抢答器的电路主要有四部分组成:鉴别锁存电路、FPGA主芯片EP1C3T144C8电路、计分电路以及扫描显示模块的电路,并利用Quartus II工具软件完成了Verilog HDL源程序编写和硬件下载。这个抢答器设计基本上满足了实际比赛应用中的各种需要。在实际中有很大的用途。 关键词:抢答器 Quartus II Verilog HDL EP1C3T144C8

相关文档
相关文档 最新文档