当前位置:文档之家› 基于FPGA的USB20控制器设计

基于FPGA的USB20控制器设计

基于FPGA的USB20控制器设计
基于FPGA的USB20控制器设计

基于FPGA的USB2.0控制器设计

摘要:介绍了一种用VHDL设计USB2.0功能控制器的方法,详术了其原理和设计思想,并在FPGA上予以实现。

关键词:USB VHDL FPGA

在视频存储和图像宽带领域中,经常遇到实时高速数据传输的要求。2000年4月,由Intel、Microsoft、NEC、Compaq、Lucent、Phillips等公司共同制订的USB2.0(Universal Serial Bus)传输协议,其速度远远超过了目前使用IEEE1394接口进行视频传输的400Mbps,达到了480Mbps;而且具有即插即用的PnP(Plug And Play)、可进行菊花链式的级联(通过USB HUB进行外围扩展)、可串连多达127个USB设备等优点。应用该协议可支持实时语音、音频和视频数据的传输。

本文针对高速数据传输需求,根据USB2.0的协议规范,利用VHDL语言实现符合该协议的功能控制器,在视频压解系统中使数据在PC与外设之间高速传输。如图1所示由视频A/D采集的原始视频数据,在Philips公司生产的TM1300专用视频处理器中压缩后,通过USB控制器送至PC机。PC机的整个通过USB控制器传输到TM1300,解压后发送至视频D/A。

1 控制器结构原理

USB2.0控制器结构框图如图2所示。控制器主要由两个部分组成,其一为与外设的接口,另一个是内部协议层逻辑PL(Protocol Layer)。内部存储器仲裁器实现对内部DMA和外部总线对存储器访问之间的仲裁。PL则实现USB的数据I/O和控制。

接口有三种:一种是与微控制器之间的功能接口;一种是与单口同步静态存储器(SSRAM)之间的接口;另外一种是与物理层之间的接口。这里符合UTMI(USB

Transceiver Macrocell Interface)规范定义。

2 控制器实现

控制器接口的信号框图如图3所示。存储器采用标准的单口SRAM,其信号接口由32位数据线SRAM_DATA、15位地址线SRAM_ADDR及读写信号(SRAM_WE和SRAM_RD)组成,系统所需SRAM的容量为2 15×32bit=128KB。

而与微控制器之间的接口信号包括32位数据线DATA、18位地址线ADDR以及DMA 请求和响应信号(DMA_REQ和DMA_ACK)。由于要支持到128KB,需要17位地址

线,另外还需要一根地址线来选通SSRAM和USB控制器内部的寄存器,总共需要18根地址线addr[17:0]。定义如下:

USB_RF_SEL <= !addr[17];

USB_MEM_SEL <=addr[17];

第18位地址addr[17]为高时选择缓冲存储器,否则选择内部寄存器。地址

addr[16:2]直接用于存储器SSRAM的地址。

2.1 UTMI接口

UTMI接口信号包括:与发送数据相关的信号(TxValid、TxReady等),与接收数据相关的信号(RxActive、RxValid、RxError等)以及16位双向数据线。

在物理层,该控制器需要一个外部的USB收发器(Transceiver),本文采用的是Philips公司的ISP1501芯片。该芯片用作USB2.0的模拟前端,从USB电缆来的差分信号进行反转不归零码(NRZI)解码和位解填充转换成16位并行数据;反之,16位并行数据通过一个差分驱动电路经过串行化、位填充和NRZI编码输出到USB电缆上。ISP1501通过管脚MODE0和MODE1决定收发器的工作模式,共有4种工作模式:MODE[1:0]为“00”时,收发器处于断开状态;为“01”时处于全速(Full Speed)模式(此时USB带宽为12Mb/s);为“10”时是高速(High Speed)模式(此时USB最大带宽是480Mb/s);为“11”时是HS chirp模式。

UTMI接口通过译码MODE[1:0]来控制ISP1501在HS和FS之间转变。

If mode_hs='1'then

MODE<='10'

Elsif mode_hs='0'then

MODE<='01'

End if;

2.2 协议层

控制器的核心逻辑位于PL(Protocl Layer)模块,负责管理所有USB数据I/O 和控制通信,其结构如图4所示。

DMA和存储器接口提供随机存储器访问和DMA操作。该模块使PL和外部微控制器采用DMA方式访问SSRAM。当外部总线有访问SRAM的请求时,且PL没有请求访问存储器,控制逻辑如下:req、ack分别对应外部总线和存储器之间的请求和响应信号,din、addr和we分别是外部总线给出的数据、地址和写信号,mreq

是内部DMA向存储器发送的请求信号,mdin、maddr和mwe分别是内部DMA给出的数据、地址和写信号。

sel <=(req OR ack_r) AND(NOT mreq);

if sel='1' then

sram_out<=din;

sram_adr<=addr;

sram_we<=req AND we;

else

sram_out<=mdin;

sram_adr<=maddr;

sram_we <=mwe;

end if;

由控制逻辑可看出,内部DMA操作的优先级比外部总线高。

协议引擎(Protocol Engine)处理所有标准的USB握手信号和控制通信。分组组装器组装分组并送入输出FIFO,先组装分组头,插入适当的PID(分组标识)和校验和,然后加入数据域。分组拆装器先解码出PID和序列号以及校验和,再从8位PID取低4位(或高4位取反)得到PID[3:0],通过USB2.0协议的PID

类型定义译码出PID名,判断是Token分组(OUT、IN、SOF和SETUP)还是DATA 分组(DATA0、DATA1、DATA2和MDATA)。

Pid_Token<=pid_OUT OR pid_IN OR pid_SOF OR pid_SETUP;

Pid_DATA <=pid_DATA OR pid_DATA1 OR pid_DATA2 OR pid_MDATA;

如果是Token分组(格式定义如图5所示),则将后续的16bit数据分别放入两个8bit临时Token寄存器token0和token1,然后取出分组中的7位地址、4

位端点号及5位CRC校验码。

Token_fadr<=token0[6:0];

Token_endp<=token1[2:0] & token0[7];

Token_crc5<=token1[7:3];

对于特殊的Token须进行特殊的处理,本文实现的控制器只对SOF这一特殊Token进行操作,解出PID后的11位帧号及5位CRC5校验码。

Frame_no<=token1[2:0] & token0;

Token_crc5<=token1[7:3];

检验校验码是否出错,如果出错等待下一个Token,否则将地址、端点号和帧号等放入相应寄存器。Token类型如果是IN,则执行组装分组并发送寄分组;如果是OUT则拆卸接收到的数据分组。对于其他不支持的Token则视为错误处理:Pid_ERROR<=pid_ACK OR pid_NACK OR pid_STALL OR pid_NYET OR pid_PRE OR pid_ERR OR pid_SPLIT OR pid_PING;如果出错则不进行Token的解码,而等待下一个Token的到来。

如果是DATA分组,则紧接着PID的是最大载荷为1024字节的数据和16位CRC16校验码。对数据的处理先写入端点寄存器,然后通过DMA操作写入SSRAM。下面详细介绍端点寄存器和DMA操作

2.3 端点操作

数据的传输实际上通过端点(Endpoint)进行,控制器通过写端点的寄存器来配置端点,该控制器最多可有16个端点,每个端点有相应的4个寄存器:Epn_CSR、Epn_INT、Epn_BUF0和Epn_BUF1(这里n=0、1、2或3),其格式如图6所示。本

文使用addr[8:2]7根据地址线来访问这些寄存器,addr[8:4]用来选择端点号,其值(16进制)从4到19分别表Epn(n=0...15)。addr[3:2]指定寄存器类型:“00”代表CSR(Control Status Register);“01”代表中断寄存器;“10”指向Buffer0;“11”代表Buffer1。这两个Buffer用来作临时数据存储,Buffer0和Buffer1分别作为专用的输入/输出缓冲器来提高USB的数据吞吐能力。双Buffer能够减少微控制器和驱动软件之间的延迟。其中端点的CSR寄存器指定端点的工作模式并且向控制器报告指定端点的状态。Ep_CSR[31:30]必须初始化为“00”(最初使用Buffer0),通过读这2位可以知道下次所要处理的缓冲器;为“01”时,指定Buffer1。Ep_CSR[27:26]和Ep_CSR[25:24]分别指定端点类型和传输类型,其类型编码参见表1。Ep_CSR[21:18]指定端点号,总共可以有16个端点。Ep_CSR[15]时DMA使能位,为“1”时允许外部DMA操作,否则不允许DMA操作。

表1 类型编码表

当控制器收到中断时,读中断源寄存器(Ep_INT[6:0])来判断中断源和产生的原因。可自定义中断源,如Ep_INT[2]定义为该控制器接收到不支持的PID而产生的中断:Ep_INT[2]<=Pid_ERROR。Ep_INT[4]和Ep_INT[3]分别表示Buffer1和Buffer0的满或空的状态位。

Ep_BUF[31](标记缓冲器是否被使用过)在使用后被控制器置“1”,在清空或重填充该缓冲器后,控制器清除该位。该闰初始化时为“0”。Ep_BUF[30:17]指定缓冲器能容纳的字节数。Ep_BUF[16:0]缓冲器的指针,装载存储器SRAM中数据的地址。

控制端点(Endpoint0)比较特殊,由于它既要接收也要发送数据,因此对于控制端点,Buffer0用于OUT缓冲器,Buffer1则是IN缓冲器。从SETUP和OUT 分组来的数据,写入Buffer0,IN分组的数据则是从Buffer1中获取。

2.4 DMA操作

DMA操作允许控制器与功能接口之间数据的透明传输。一旦设置了DMA操作,则不需要微控制器的干预。每个端点有一对DMA_REQ和DMA_ACK信号。当CSR寄存器中DMA使能信号位(Ep_CSR[15])被置位时,USB控制器使用DMA_REQ和DMA_ACK 这两个信号来进行DMA的流控制。当缓冲区有数据或为空需要填充时发送DMA 请求信号DMA_REQ,每传输4字节,响应一个DMA_ACK信号。

由于USB2.0协议定义的事务操作以8bit为单位,因此完成一次32bit的DMA 操作需要进行4次写8bit。内部DMA采用高效的One-hot状态机设计方法,状态转换如图7所示。当需要将接收到的数据存储到SRAM(rx_dma_en=1)时进入WAIT_MRD状态,在该状态选中一个临时数据寄存器,并向存储器发送请求信号mreq,从存储器中预取4字节(当接收到的数据少于4字节时,保证有4字节的数据写入存储器)到该寄存器中,然后进入MEM_WR状态。当PL的分组拆装器接收到1字节数据时,将该字节写入临时存储器,转入下一状态MEM_WR1;当分组拆装器没数据给DMA仲裁器时则进入MEM_WR2状态,在此状态将临时存储器中的数据写入SRAM,然后回到IDLE状态。在操作过程中,使用计数器adr_cb对传输字节数进行计数,通过addr_cb[1:0]的值标识当前传输的是32bit中的哪个字节。计数器sizu_c每接收1字节数值加1。

在需要读取SRAM中的数据(tx_dma_en=1)时,DMA仲裁器由IDIE状态进入MEM_RD1状态,读取4字节数据到发送缓冲区中,然后进入状态MEM_RD2,再读4字节进入状态MEM_RD3,这8字节轮流使用Buffer0和Buffer1缓冲区:

在需要读取SRAM中的数据(tx_dma_en=1)时,DMA仲裁器由IDLE状态进入MEM_RD1状态,读取4字节数据到发送缓冲区中,然后进入状态MEM_RD2,再读4字节进入状态MEM_RD3,这8字节轮流使用Buffer0和Buffer1缓冲区:

if((NOT adr_cb[2]) AND mack

then Buffer0<=SRAM_DATA_I;

elsif (adr_cb[2] AND mack)

then Buffer1<=SRAM_DATA_I;

end if;

在MEM_RD3状态判断是否还需要读下一个数据,如果需要再进入状态MEM_RD2,否则在传输完所有字节后,返回到IDLE状态。在发送数据过程中,使用14bit 计数器sizd_c决定传输字节数,取自Ep_BUF[30:17],每发送1字节数据,它

的值减1。在图7中的各个状态中,由于超时、CRC校验错误或得到的数据发生错误时,PE产生的Abort信号会使当前状态都回到IDLE。

文中阐述了USB2.0功能控制器的一种实现方案。其VHDL语言实现代码,已在XILINX公司的FPGA Virtex XVV3006fg456中通过了Xilinx ISE的仿真、综合及布局布线。FPGA的规模是32万门,1536个CLB(可配置逻辑单元)。该控制模块占用2050个Slice(66%),使用了1697个Slice触发器(27%)和3047个4输入LUT表(49%)。整个FPGA的速度可达到56.870MHz,完全满足视频数据的高速传输(对32bit数据操作,达到480Mb/s的速度时钟只需15MHz)。该方案实现的控制器便于修改且易于实现,可作为一个功能模块嵌入到SOC中,可使不同情况最大限度地灵活设计片上系统。

基于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的智能交通灯的设计毕业设计

目录 摘要 ............................................................. I 1 前言 (1) 2 交通红绿灯控制电路的发展与技术现状 (2) 2.1 交通控制系统以及交通红绿灯控制电路的发展现状 (2) 2.2 智能交通红绿灯控制电路技术的现状 (3) 3 VHDL、FPGA、Quartus ii简介 (5) 3.1 VHDL简介 (5) 3.1.1 VHDL简介 (5) 3.1.2 VHDL语言的特点 (6) 3.2 FPGA简介 (8) 3.2.1 PLD器件的设计特点 (8) 3.2.2 FPGA的基本结构 (10) 3.2.3 采用FPGA设计逻辑电路的优点 (11) 3.3 Quartus II 的简介 (12) 4 具体方案论证与设计 (13) 4.1 具体方案论证 (13) 4.2系统算法设计 (15) 4.3 具体电路原理图 (16) 4.4 电路仿真图 (16) 5 实验结果 (17) 总结 (18) 参考文献 ......................................... 错误!未定义书签。附录: .. (19)

基于FPGA的十字路口交通信号灯 摘要 本文主要介绍十字路口交通灯控制器的设计。首先,介绍交通控制系统以及交通红绿灯控制电路的发展现状;然后采用硬件描述语言进行的交通灯控制器设计。重点介绍了控制系统各部分的设计,以及各个模块之间的同步处理。为了克服交通信号灯控制系统传统设计方法的弊端,更加适应城镇交通现状,利用VHDL语言、采用层次化混合输入方式,设计了具有3种信号灯和倒计时显示器的交通信号灯控制系统,在 QuartusⅡ下进行仿真,并下载到FPGA中制作成实际的硬件电路进行了模拟运行.使用该方法设计的交通灯控制系统电路简单、运行可靠、易于实现,可实现对交通信号的控制和显示功能。 关键词 FPGA;QUARTUS ii;HDPLD;十字路口交通灯控制器; Based on FPGA intersection traffic lights Abstract This paper describes the design of intersection traffic signal controller.First, the introduction of traffic control systems and traffic light control circuit of the development status; then using language designed for the traffic light controller.Focus on various parts of the control system

基于FPGA下的交通灯控制器设计

引言 随着城乡的经济发展,车辆的数量在迅速的增加,交通阻塞的问题已经严重影响了人们的出行。 现在的社会是一个数字化程度相当高的社会,很多的系统设计师都愿意把自己的设计设计成集成电路芯片,芯片可以在实际中方便使用。随着EDA技术的发展,嵌入式通用及标准FPGA器件的呼之欲出,片上系统(SOC)已经近在咫尺。FPGA/CPLD 以其不可替代的地位及伴随而来的极具知识经济特征的IP芯片产业的崛起,正越来越受到业内人士的密切关注。FPGA就是在这样的背景下诞生的,它在数字电路中的地位也越来越高,这样迅速的发展源于它的众多特点。交通等是保障交通道路畅通和安全的重要工具,而控制器是交通灯控制的主要部分,它可以通过很多种方式来实现。在这许许多多的方法之中,使用FPGA和VHDL语言设计的交通灯控制器,比起其他的方法显得更加灵活、易于改动,并且它的设计周期性更加短。 城市中的交通事故频繁发生,威胁着人们的生命健康和工作生活,交通阻塞问题在延迟出行时间的同时,还会造成更多的空气污染和噪声污染。在这种情况下,根据每个道路的实际情况来设置交通灯,使道路更加通畅,这对构建和谐畅通的城市交通有着十分重要的意义。

第一章软件介绍 1.1 QuartusⅡ介绍 本次毕业设计是基于FPGA下的设计,FPGA是现场可编程门阵列,FPGA开发工具种类很多、智能化高、功能非常的强大。可编程QuartusⅡ是一个为逻辑器件编程提供编程环境的软件,它能够支持VHDL、Verilog HDL语言的设计。在该软件环境下,设计者可以实现程序的编写、编译、仿真、图形设计、图形的仿真等许许多多的功能。在做交通灯控制器设计时选择的编程语言是VHDL语言。 在这里简单的介绍一下QuartusⅡ的基本部分。图1-1-1是一幅启动界面的图片。在设计前需要对软件进行初步的了解,在图中已经明显的标出了每一部分的名称。 图 1-1-1 启动界面 开始设计前我们需要新建一个工程,首先要在启动界面上的菜单栏中找到File,单击它选择它下拉菜单中的“New Project Wizard”时会出现图1-1-2所显示的对话框,把项目名称按照需要填好后单击Next,便会进入图 1-1-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

通过Verilog实现交通灯设计实验报告

电子科技大学 实 验 报 告 一、实验室名称:虚拟仪器实验室 二、实验项目名称:交通灯设计实验 三、实验学时:4学时 四、实验原理

假设交通灯处于南北和东西两条大街的“十”字路口,如图1所示。用FPGA 开发板的LED 灯来模拟红、黄、绿3种颜色信号,并按一定顺序、时延来点亮LED ,如图2所示。图3给出了交通灯的状态转移图。设计使用频率为1Hz 的时钟来驱动电路(注1:仿真时采用1MHz 的时钟来驱动电路),则停留1个时钟可得到1S 的延时,类似停留3个时钟可得到3S 的延时,停留15个时钟可得到15S 的延时(注2:开发板工作时钟为50MHz )。 北 南 西东 图1. 六个彩色LED 可以表示一组交通信号灯 图2. 交通灯状态 南北 东西 红 黄 绿 红 黄 绿 S0 1 0 0 0 0 1 S1 1 0 0 0 1 0 S2 1 0 0 1 0 0 S3 0 0 1 1 0 0 S4 0 1 0 1 0 0 S5 1 0 0 1 0 0

图3. 交通灯的状态转移图 顶层模块 时钟分频模块状态机跳转模块 图4. 交通灯的原理框图 五、实验目的 本实验是有限状态机的典型综合实验,掌握如何使用状态转移图来定义Mealy状态机和Moore状态机,熟悉利用HDL代码输入方式进行电路的设计和仿真的流程,掌握Verilog语言的基本语法。并通过一个交通灯的设计掌握利用EDA软件(Xilinx ISE 13.2)进行HDL代码输入方式的电子线路设计与仿真的详细流程。。 六、实验内容 在Xilinx ISE 13.2上完成交通灯设计,输入设计文件,生成二进制码流文件下载到FPGA开发板上进行验证。 七、实验器材(设备、元器件)

基于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的定时器计数器的设计与实现

基于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

基于FPGA的交通灯课程设计报告

总体设计要求和技术要点 1.任务及要求 (1)设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。 (2)红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号。 (3)主干道处于常允许通行的状态,支干道有车来时才允许通行。主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。 (4)主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。 (5)在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。 (6)按《湖南涉外经济学院课程设计管理办法》要求提交课程设计报告。 工作内容及时间进度安排 第17周:周1---周2 :立题、论证方案设计 周3---周5 :程序设计与调试 第18周:周1---周3 :硬件调试与测试、撰写课程设计报告 周4---周5 :验收答辩 课程设计成果 1.与设计内容对应的软件程序 2.课程设计总结报告

摘要 本实验为自主选题设计实验,实验选择具有倒计时显示功能的红黄绿三色交通设计,实验中采用VHDL 作为设计功能描述语言,选用Altera公司的EP1K30144-PIN TQFP最为主控芯片,实验报告中简要介绍了FPGA器件,并给出了设计原理图,详细的介绍了交通灯的设计流程,实验报告中还附有实验代码实验结果照片图。 Abstract This experiment designed for independent choice experiment, experiment choice which has the function of the countdown display red yellow green traffic design, description language (VHDL as design function is applied in the experiments, the most main control chip select MAX II EPM240T100C5 Altera company, experiment report, this paper briefly introduces the MAX II device series, and gives the design diagram, detailed introduces the traffic lights of the design process, the experiment report with the code results photo graph.

基于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;

基于FPGA的交通灯设计说明

交通信号灯控制器

目录 第一章系统设计 1.1设计要求 (3) 1.2 方案比较 (3) 1.3方案论证 (3) 1.3.1总体思路 (4) 1.3.2设计方案 (5) 第二章单元电路设计 2.1 4位二进制计数器 (6) 2.2 两位二进制计数器 (6) 2.3定时时间到检测电路 (6) 2.4红黄绿灯输出控制电路 (6) 2.5计时器 (6) 第三章软件设计 3.1用VHDL编写程序 (6) 3.2 程序流程 (7) 3.3程序清单及仿真 (7) 第四章系统测试 (7) 第五章结论 (8) 参考文献 (9) 附录 (10)

0 引言 随着经济的飞速发展,现代化交通管理成了当今的热点问题。一个完善的交通控制功能,可使混乱的交通变得井然有序,从而保障了人们的正常外出。本系统通过设计一交通信号灯控制器,达到交通控制的目的。除实现交通灯基本的控制功能外,系统还可显示该灯本次距灯灭所剩的时间,具有更完善的控制功能,使行人提前做好起、停准备,具有更强的实用性。 第1章 系统设计 1.1设计要求 (1) 交通灯从绿变红时,有4秒黄灯亮的间隔时间。 (2) 交通灯红变绿是直接进行的,没有间隔时间。 (3) 主干道上的绿灯时间为20秒,支干道的绿灯时间为10秒。 (4) 在任意时间,显示每个状态到该状态结束所需要的时间。 1.2方案比较 要实现对交通灯的控制,有很多的方案可供选择。 方案一:由两块CMOS 集成电路完成定时和序列控制功能,三只双向晶体管完成实际的电源切换功能。电路中采用10V 负电源(可由市电电压经降压、整流、滤波、稳压而得)、CD4049集成电路、计数器CD4017等器件。其中双向晶闸管选用400V 、4A 的,二极管选用BY127型和1N4148型,稳压管选用10V 、1W 的。因直接使用市电工作,故在安装和使用时安全系数较低,且硬件电路复杂,所用器件多。 方案二:运用VHDL 语言分别控制分频和状态机两个模块, 即信号源经分频器分频后得到1Hz 脉冲,输出脉冲控制状态机中预置四个状态的循环,从而达到交通控制作用.该方案电路结构简单,使用器件少,易于安装和使用.但不宜于电路扩展,适用围小,应用不广泛. 方案三:采用VHDL 语言输入的方式实现交通信号灯控制器,并灵活运用了通用元件CBU14和CBU12作为4位二进制计数器和两位二进制计数器,简化了硬件电路,同时也给调试、维护和功能的扩展、性能的提高带来了极大的方便。 分析以上三种方案的优缺点,显然第三种方案具有更大的优越性、灵活性,所以采用第三种方案进行设计。 1.3 方案论证 1.3.1 总体思路 系统交通管理示意图如图1.3.1. 主干道 支干道 图1.3.1 路口交通管理示意图 由此可得出交通信号灯A 、B 、C 、D 的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的环形计数器设计

龙源期刊网 https://www.doczj.com/doc/b410899879.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的交通灯(verilog)

基于同步FSM交通信号控制器 试验目的 1、进一步熟悉FSM原理; 2、交通信号控制逻辑的抽象建模方法; 3、掌握同步有限状态机的置位与复位方法; 3、掌握编写可综合的FSM一般指导原则; 试验原理 Verilog HDL和VHDL亍为描述用于综合还只有十年的历史,可综合风格的VerilogHDL和VHD啲语法只是它们各自语言的一个子集;HDL的可综合性研究近年来非常活跃,可综合子集的国际标准目前尚未最后形成,因此,各厂商的综合器所支持的HDL子集也略有不同;对于有关可综合的VerilogHDL的内容我们只着重于介绍RTL算法级和门级结构的描述;把一个时序逻辑抽象成一个同步有限状态机是设计可综合VerilogHDL 模块的关键。有限状态机是设计各种时序逻辑电路的关键。具体的有限状态机的原理可以参看试验七有关原理的介绍。下面介绍一般的可综合有限状态机的编写原则 每个always 块只能有一个事件控制@(event_expression) ,而且要紧跟在 always 关键字后面; always 可以表示时序逻辑或者组合逻辑;也可以用always 块既表示电平敏感的锁存器又同时表示组合逻辑; 带有posedge或negedge关键字的事件表达式表示边沿触发的时序逻辑,没有posedge或negedge关键字的表示组合逻辑或者电平敏感的锁存器,或者两者都表示; 每个表示时序的always 块只能由一个时钟跳变沿触发,置位和复位最好也由该始终跳变沿触发; 每个在always 块中赋值的信号必须定义为reg 类型或者整型; Always 块中应该避免组合反馈回路; 实验步骤和实验内容 1、本试验交通信号控制灯的逻辑关系该交通信号灯控制器用于控制一条主干道与一 条乡村公路的交叉口的交通 ( 如图8-1 所示) ,它必须具有下面的功能;由于主干道上来往的车辆较多,因此控制主干道的交通信号灯具有最高优先级,在默认情况下,主干道的绿灯点亮;乡村公路间断性地有车经过,有车来时乡村公路的交通灯必须变为绿灯,只需维持一段足够的时间,以便让车通过。只要乡村公路上不再有车辆,那么乡村公路上的绿灯马上变为黄灯,然后变为红灯;同时,主干道上的绿灯重新点亮;一传感器用于监视乡村公路上是否有车等待,它向控制器输入信号X;如果X=1,则

基于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的交通灯设计报告

合肥学院综合课程设计报告 题目:基于FPGA的交通灯设计 专业:电子信息工程 班级:09电子(2)班 姓名:周峰 导师: 成绩: 2012年12月11日

基于FPGA的交通灯设计 一:题目要求 1:主干道绿灯时,支干道红灯亮,反之亦然,两者交替允许通行。主干道每次放行40秒,支干道每次放行30秒。每次路灯亮,前10秒为左转灯亮,后5秒为黄灯亮。余下为直行灯亮、 2:能实现正常的倒计时显示功能。 3:能实现总体清零功能;计数器由初始状态开始计数,对应状态的指示灯亮。二:题目分析 1:在十字路口东西方向和南北方向各设一组左转灯、;显示的顺序为:左转灯绿灯黄灯红灯。 2:设计一个倒计时显示器。倒计时只显示总体时间。主干道左转灯、红灯、绿灯和黄灯亮的时间分别是10秒、30秒、25秒、5秒。支干道左转灯、红灯、绿灯和黄灯亮的时间分别是10秒、40秒、15秒、5秒状态表如表3-1所示:3 三:选择方案 1:方案一 在VHDL设计描述中,采用自顶向下的设计思路,该思路在自顶向下的VHDL 设计描述中,通常把整个设计的系统划分为几个模块,然后采用结构描述方式对整个系统进行描述。根据实验设计的结构功能,来确定使用哪些模块以及这些模块之间的关系。通过上面的分析,不难得知可以把交通灯控制系统划分为3个模块:时钟模块、控制模块、分频模块。 2:方案二 不采用方案一的分模块设计,直接用进程写程序。该程序由7个进程组成,进程P1将CLK信号分频后产生1秒信号,P2形成0-49的计数器,进程P3、P4用来控制的信号灯亮灭的,其中P5、P6产生数码管显示的倒数的十进制形式。进程P7实现状态转换和产生状态转换的控制信号,进而控制数码管显示。 由于方案一中使用进程会使程序变得很复杂,不易理解,所以我采用了方案二。

基于FPGA的数字时钟的设计1.(精选)

基于FPGA的数字时钟的设计课题:基于FPGA的数字时钟的设计 学院:电气信息工程学院 专业:测量控制与仪器 班级: 08测控(2)班 姓名:潘志东 学号: 08314239 合作者姓名:颜志林 2010 年12 月12 日

综述 近年来随着数字技术的迅速发展,各种中、大规模集成电路在数字系统、控制系统、信号处理等方面都得到了广泛的应用。这就迫切要求理工科大学生熟悉和掌握常用中、大规模集成电路功能及其在实际中的应用方法,除通过实验教学培养数字电路的基本实验方法、分析问题和故障检查方法以及双踪示波器等常用仪器使用方法等基本电路的基本实验技能外,还必须培养大学生工程设计和组织实验能力。 本次课程设计的目的在于培养学生对基本电路的应用和掌握,使学生在实验原理的指导下,初步具备基本电路的分析和设计能力,并掌握其应用方法;自行拟定实验步骤,检查和排除故障、分析和处理实验结果及撰写实验报告的能力。综合实验的设计目的是培养学生初步掌握小型数字系统的设计能力,包括选择设计方案,进行电路设计、安装、调试等环节,运用所学知识进行工程设计、提高实验技能的实践。数字电子钟是一种计时装置,它具有时、分、秒计时功能和显示时间功能;具有整点报时功能。 本次设计我查阅了大量的文献资料,学到了很多关于数字电路方面的知识,并且更加巩固和掌握了课堂上所学的课本知识,使自己对数字电子技术有了更进一步的认识和了解。

1、课题要求 1.1课程设计的性质与任务 本课程是电子与信息类专业的专业的专业基础必修课——“数字电路”的配套实验课程。目的在于培养学生的理论联系实际,分析和解决问题的能力。通过本课程设计,使学生在理论设计、计算机仿真、指标调测、故障排除等方面得到进一步的训练,加强学生的实践能力。学生通过设计、仿真、调试、撰写设计报告等过程,培养学生的动手能力和严谨的工作作风。 1.2课程设计的基本技术要求 1)根据课题要求,复习巩固数字电路有关专业基础知识; 2)掌握数字电路的设计方法,特别是熟悉模块化的设计思想; 3) 掌握QUARTUS-2软件的使用方法; 4) 熟练掌握EDA工具的使用,特别是原理图输入,波形仿真,能对仿真波形进行分析; 5) 具备EDA技术基础,能够熟练使用VHDL语言进行编程,掌握层次化设计方法; 6) 掌握多功能数字钟的工作原理,学会不同进制计数器及时钟控制电路的设计方法; 7) 能根据设计要求对设计电路进行仿真和测试; 8) 掌握将所设计软件下载到FPGA芯片的下载步骤等等。 9) 将硬件与软件连接起来,调试电路的功能。 1.3课程设计的功能要求 基本功能:能进行正常的时、分、秒计时功能,分别由6个数码管显示24小时,60分钟,60秒钟的计数器显示。 附加功能:1)能利用硬件部分按键实现“校时”“校分”“清零”功能; 2)能利用蜂鸣器做整点报时:当计时到达59’59’’时开始报时,鸣叫时间1秒钟; 3)定时闹铃:本设计中设置的是在七点时进行闹钟功能,鸣叫过程中,能够进行中断闹铃工作。 本人工作:负责软件的编程与波形的仿真分析。 2、方案设计与分析

基于FPGA的交通灯设计(状态机)

基于FPGA的交通灯设计规范 一、功能描述: 本设计实现一个交通信号灯,具体功能如下: 1.异步信号复位,复位后1组为红灯亮2组为绿灯亮,数码管显示从24开始 依次递减计数 2.实现红黄绿灯的延时交替亮灭,分两组灯,1组红灯亮时,2组为黄灯,5 秒后,1组红灯亮,2组绿灯亮;25秒后,1组黄灯亮,2组红灯亮;5秒后,1组绿灯亮,2组红灯亮。如此交替重复 3.计时时间25秒、5秒显示在数码管上。分别为:从24依次递减到0,从4 依次递减到0 二、输入输出信号描述:

系统结构框图 顶层模块说明: 1、fenpin:将50MHz晶振转为1Hz作为时钟频率; 2、delay:计数延时; 3、state:指出状态转移顺序; 4、shuma:将计数延时用数码管输出显示。 设计说明: 设计分为分频、延时、状态机、数码管显示四个模块。分频,将50MHz的系统时钟转为1Hz。计数延时,让状态机能在合适的时间点进行状态切换。状态机,完成状态间的切换,输出。数码管显示,将延时模块的计时输出值转换为数码管输出显示。 状态机的输出状态信号标志flag=out[1]|out[4],即为:判断此时的两组输出是否有黄灯亮。flag_data=flag,作为计数延时模块的输入,用状态信号标志flag_data和计数值cnt来共同控制计数模块是5秒还是25秒。 四、子模块描述: 4.1、fenpin:分频模块 1、功能描述 将实验板上的50MHz的石英晶振频率转为1Hz。 2、管脚描述

每当clock时钟上升沿来临时,内部寄存器sum从0递加,加至25000000时,对clk进行取反操作,则可得到频率为1Hz的clk时钟 4.2、delay:延时模块 1、功能描述 计数延时,让状态机能在合适的时间点进行状态切换。 用计数值和状态信号标志的与结果(cnt==0 && flag_data)来判断计数延时的初始值应为24还是4 4.3、state:状态机模块 1、功能描述 完成状态间的切换,输出。 状态信号标志flag=out[1]|out[4]。即为检测当前是否有黄灯亮。 注:out[5:3]对应1组灯的:红黄绿 out[2:0]对应2组灯的:红黄绿 4.4、shuma:数码管显示模块 1、功能描述 将延时模块的计时输出值转换为数码管输出显示。

基于FPGA的出租车简易计数器

一、任务: 设计一个出租车计价器,主要功能为: 1、当出租车启动时,开始记里程数,并且计费,起始费用为7.0元; 2、当出租车等待时,不计数和收取费用; 3、当出租车停止时,不进行任何计数和收费。 二、目的: 1、培养综合运用知识和独立开展实践创新的能力; 2、掌握FPGA设计步骤及流程; 3、深入学习V erilog HDL,了解其编程环境; 4、学会运用Modelsim和Quartus II等编程仿真软件; 5、将硬件语言编程与硬件实物功能演示相结合,加深理解V erilog HDL 的学习; 三、使用环境: 1、软件:Modelsim和Quartus II等编程仿真软件; 2、硬件:FPGA DE2开发板。 四、课程设计详细方案及功能验证: 1、设计规范: 1、功能描述 1.当按动计价启动按钮时,开始计价,按车轮转动一周产生一个时钟脉冲,且一周距离为2m。 2.当里程数在3km内时(包括3km),计价器显示起步价7.0元。

3.当里程数大于3km时,每km增加2元。 4. 里程数精确到0.1km,价格精确到0.1元,价格和里程数用数码管显示。 2、顶层划分

管脚功能: 管脚名称PIN 功能 CLK input 输入时钟50M rst input 复位信号 start input 计价启动/暂停/停止信号 Led1 output 里程数信号十位 Led2 output 里程数信号个位 Led3 output 里程数信号小数点后一位 Led4 output 价格信号十位 Led5 output 价格信号个位 Led6 output 价格信号小数点后一位 3、子模块描述 1、分频模块 <1>功能描述: 通过分频,产生一个10hz的分频时钟信号。 <2>管脚功能: 管脚名称PIN 功能 CLK input 原时钟信号counter input 计数信号rst input 复位信号 start input 计价启动/暂停/停止信号 fclk output 分频时钟信号 即模拟车轮每转动一圈所用时 间 <3>实现原理: 当复位信号有效时,counter,fclk清零,当复位信号无效且计价开

基于FPGA的计数器

FPGA课程设计 题目:基于FPGA的计数显示控制设计 班级:微电子学1001班 姓名:李蓓 学号: 1006080101

一:设计任务 1.基于VHDL 语言完成十进制加法计数器设计 2.基于VHDL 语言完成分频器的设计 3.基于VHDL 语言完成数码管动态扫描显示设计 4.将上述设计按一定的连接关系连接起来,使其实现如下功能:指定输入时钟频率为50HZ 。 a 在数码管上显示0—9十进制数; b 数字跳变时间为1s ; c 可以通过按键实现显示开启、停止、复位功能。 二、总体设计方案 1.基于QuartusII 软件完成十进制加法计数器、分频器、数码管动态扫描显示设计; 2.采用Modelsim 仿真软件对上述设计进行仿真验证; 3.将上述各模块按照一定的连接关系连接,使其实现功能。 此次试验共分为三个模块进行,分别是分频计,计数器,和译码显示电路。这几个部分的完成都必须靠QuartusII 和Modelsim 完成。 本设计采用数控分频计,可以对信号实现不同分频比,输出信号作为计数器输入。当系统正常工作时,输入信号标提供频率,经过分频器分频,产生计数信号送入计数器模块,计数模块对输入的脉冲个数进行计数数结束后,将计数结果送入锁存器中,保证系统可以稳定显示数据,计数结果能够显示在七段数码显示管上。 图1:设计方案 输入clk 复位端cr 使能端en 三、各功能模块设计 1.十进制加法计数器的设计 分频器 计数器 数码管显示

1.1工作原理 计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T 触发器、D触发器及JK触发器等。计数器在数字系统中应用广泛。 十进制加数的合法设计范围为0到9,故当输入的加数大于9的时候要将其统一变换成0。本实验采用一个带有异步复位和使能端的十进制加法计数器,这种计数器有许多实际的用处。 1.2源程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity add10 is port(clk,cr,en:in std_logic; Q:out std_logic_vector(3 downto 0)); end entity add10; architecture arch of add10 is begin process(clk,cr,en) variable Q1:std_logic_vector(3 downto 0); begin if(cr='1')then Q1:="0000"; elsif(clk'event and clk='1')then if(en='1')then if(Q1<9)then Q1:=Q1+1; else Q1:="0000"; end if; end if; end if; Q<=Q1; end process; end architecture arch; 1.3仿真波形

相关主题
文本预览
相关文档 最新文档