VHDL语言与EDA课程设计
基于VHDL语言信号发生器的设计.EDA课程设计

基于VHDL语言信号发生器的设计1、设计目的1) 掌握使用EDA工具设计信号发生器系统的设计思路和设计方法,体会使用EDA综合过程中电路设计方法和设计思路的不同,理解层次化设计理念。
2) 熟悉在Quartus II环境中,用文本输入方式与原理图输入方式完成电路的设计,同时掌握使用这两种方式相结合的EDA设计思路。
3) 通过这一部分的学习,对VHDL语言的设计方法进行进一步的学习,对其相关语言设计规范进行更深层次的掌握,能够更加熟练的做一些编程设计2、设计的主要内容和要求通过使用VHDL语言及Quartus II软件,设计多功能信号发生器的每个模块,将正弦波模块,方波模块,三角波模块,阶梯波模块创建相应的元件符号,同时设计好4选1数据选择器模块,再通过原理图输入方式,将各个模块组合起来,设计成一个完整的多种信号发生器电路,同时将各个模块单独进行仿真,设计各个模块的仿真波形,最后进行总原理图电路仿真,设计该信号发生器的总的仿真波形。
信号发生器:体现在它能自动的实现四种波形的转换。
根据题目的分析与整体构思可知,要完成设计任务必须完成以下要求:1、设计好用于波形切换的四路数据选择器selector4_1;2、设计好用于总电路设计的各个信号输出模块;3、设计好数模(D/A)转换器。
3、整体设计方案基本设计方案:在现有单一信号发生器的基础上,加上其它信号模块,通过组合与设计,用数模转换器(D/A)将选中的信号源发出的信号由数字信号转换为模拟信号,再用示波器显示出来,其信号发生器的结构框图如图3.1所示。
信号发生器由各个单一信号模块组合而成,其中信号产生模块将产生所需的各种信号,信号发生器的控制模块可以用数据选择器实现,用4选1数据选择器实现对四种信号的选择。
最后将波形数据送入D/A转换器,将数字信号转换为模拟信号输出。
用示波器测试D/A转换器的输出,可以观测到4种信号的输出。
时钟信号信号产生信号控制D/A转换输出信号选择信号图3.1信号发生器结构框图通过查找资料把各类信号模块的程序输入到Quartus Ⅱ中进行运行仿真,每一步都要慎重小心,错误难免的,还需要通过课本和资料一一更正。
EDA 技术与 VHDL 程序设计基础教程习题答案

2.Altera的第四代EDA集成开发环境为(C)
A Modelsim
B MUX+Plus II
C Quartus II
D ISE
3.下列EDA工具中,支持状态图输入方式的是(B)
A Quartus II
B ISE
C ispDesignEXPERT
D Syplify Pro
D Cyclone
7.下列配置方式不属于FPGA配置模式的是(D)
A主动串行配置模式
B被动串行配置模式
C主动并行配置模式
D被动从属配置模式
8.下列因素中通常不属于CPLD/FPGA选型条件的是(D)
A逻辑资源
B功耗和封装
C价格和速度
D产地
2.8.3
1.结合本章学习的知识,简述CPLD的基本结构?
答:虽然CPLD种类繁多、特点各异,共同之处总结起来可以概括为三个部分:
配置与绕线(Place and Routing)
绕线后的电路功能验证(Post Layout Verification)
8.为什么要进行硬件电路的后仿真验证和测试?
答:后仿真考虑了实际器件的模型参数,能够更好的模拟实际电路工作状态。测试是检验设计合格的最直接的方式。
第2章EDA习题答案
2.8.1
1.可编程逻辑器件的英文全称是Programmable Logic Device
4.目前比较流行的主流厂家的EDA软件有Quartus II、ISE、ModelSim、ispLEVER
5.常用的设计输入方式有原理图输入、文本输入、状态机输入
6.常用的硬件描述语言有VHDL、Verilog
7.逻辑综合后生成的网表文件为EDIF
EDA教案--2VHDL语言

例如:PORT(a,b:IN STD_LOGIC; s:IN STD_LOGIC; y:OUT STD_LOGIC);
端口方向包括: IN; --输入, 符号: OUT; --输出, 符号: INOUT;--双向, 符号: BUFFER; --具有读功能的输出,符号:
EDA教案--2VHDL语言
一、 VHDL程序设计基本结构
库、程序包
实体(ENTITY)
设
计
结构体
实
(ARCHITECTURE)
体
进程
或其它并行结构
配置(CONFIGURATION)
库、程序包
库(LIBRARY)——存放预先设计好的程序包和 数据的集合体。
程序包(PACKAGE)——将已定义的数据类型、 元件调用说明及子程序收集在一起,供VHDL设计实 体共享和调用,若干个包则形成库。
(15 DOWNTO 0);
信号赋值语句: 目标信号名<=表达式
例如:x<=9; y<=x; z<=x AFTER 5ns;
信号与变量的区别: (1)使用场合不同;(变量:进程;信号:结构体) (2)变量用“:=”号赋值,其值被立即使用(无 时间延迟);而信号用“<=”赋值,其值可以附加 延迟。
3. 常数(CONSTANT) 规则:常数在程序前部定义,且一旦被赋值就不能再 改变。 常数定义格式: CONSTANT 常数名:数据类型:=初值;
GENERIC(m:TIME:=1 ns);--说明m是 一个值为1ns的时间参数
则程序语句:tmp1 <= d0 AND se1 AFTER m;--表 示d0 AND se1经1ns延迟后才送到tem1。
(2)端口说明是描述器件的外部接口信号的说 明,相当于器件的引脚说明。其格式为: PORT(端口名{,端口名}:方向 数据类型名;
梁祝乐曲_乐曲硬件演奏电路的VHDL设计_eda课程设计

一、设计题目:乐曲硬件演奏电路的VHDL设计二、设计目标:了解一般乐曲演奏电路设计设计方法,学习VHDL语言,熟悉EDA设计软件QuartusII和MAX+plusⅡ,加强独立完成电子设计的能力。
(1)能够播放“梁祝”乐曲。
(2)能够通过LED显示音阶。
(3)(选作)具有“播放/停止”功能,并在此基础上实现“按键演奏”的电子琴功能。
主芯片型号为FLEX10K10LC84-4三、实验电路的工作原理:(演奏电路逻辑图)组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能够连续演奏所需的两个基本要素,设计演奏电路的关键就是获得这两个要素所对应的数值以及通过纯硬件的手段来利用这些数值实现所希望乐曲的演奏效果。
演奏电路逻辑图有三部分:音乐节拍和音调发生器、简谱码对应的分频预置数查表电路、数控分频与演奏发生器。
演奏电路逻辑图:四、设计内容:1.完成程序的编辑工作。
2.将音乐数据制作成LMP_ROM文件.3.将程序加载到MAX+plusⅡ中进行编译、仿真,并保存仿真结果。
4.到实验室进行下载验证。
引脚进行锁定,然后下载到实验芯片中观察实验结果。
五、仿真结果:1.音乐节拍和音调发生器(NoteTabs.VHD)notetabs模块中设置了一个8位二进制计数器(计数最大值138),作为音符数据ROM的地址发生器。
这个计数器的计数频率选为4Hz,即每一个计数值的停留时间为0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。
随着notetabs模块中的计数器按4Hz的时钟速率作为加法计数时,即随地址值递增时,音符数据ROM中的音符数据将从ROM中通过ToneIndex[3..0]端口输向ToneTaba模块,“梁祝”乐曲就开始连续自然的演奏起来了。
Notetabs模块仿真图:2.简谱码对应的分频预置数查表电路(ToneTaba.VHD)音符的持续时间需根据乐曲的速度及每个音符的节拍数来确定,tonetaba 模块的功能首先是为speakera提供决定所发音符的预置数,而此数在speakera 输入口停留的时间即为此音符的节拍值。
EDA技术与VHDL_汇总

EDA技术与VHDL_汇总EDA(电子设计自动化)技术与VHDL(可编程硬件描述语言)是在电子设计领域中广泛应用的两种技术。
EDA技术是指利用计算机辅助设计软件来帮助工程师进行电子电路的设计和验证,提高设计效率和降低成本。
而VHDL是一种硬件描述语言,用于描述电子系统的行为和结构,是EDA技术的重要工具之一、本文将针对EDA技术和VHDL进行综述。
EDA技术是电子设计流程中的重要环节,包括电路设计、电路模拟、布局与布线、物理验证等多个方面。
其中,电路设计主要关注电路行为和结构的设计,通过EDA软件可以对电路进行逻辑综合、时序优化等操作,从而生成最终的电路结构。
电路模拟是对设计电路进行仿真和验证的过程,通过EDA软件可以模拟电路的工作状态,检查设计是否符合预期要求。
布局与布线是将逻辑电路转化为物理电路的过程,在电路板上布置元件并进行连线,以满足电路的功能和性能要求。
物理验证则是根据设计规则和约束对布局和布线结果进行验证,确保电路能够正常工作。
VHDL是一种硬件描述语言,用于描述电子系统的行为和结构。
VHDL提供了抽象层次,可以描述从逻辑门到整个系统的各个层次。
使用VHDL,设计者可以对系统进行模块化描述,将整个系统分解为多个模块并进行独立设计。
VHDL还提供了丰富的工具和语法,用于描述电路的结构、时序、数据流等信息。
通过VHDL描述的电路可以通过EDA软件进行综合、仿真、布局与布线等操作。
VHDL还具有良好的可移植性,设计者可以在不同EDA软件和不同平台上进行开发和验证。
EDA技术与VHDL的结合可以提高电子设计的效率和质量。
通过EDA软件,设计者可以利用图形界面进行电路设计,快速搭建和验证电路结构。
在设计过程中,VHDL可以使设计者在高层次上描述电路功能和结构,提高设计抽象和可重用性。
此外,通过EDA软件可以进行电路的仿真和验证,帮助设计者对电路进行性能、时序等方面的优化,减少设计错误的风险。
在布局与布线阶段,EDA软件可以自动完成复杂的布局与布线操作,优化电路的尺寸和信号传输路径,提高电路的可靠性和性能。
配套课件 EDA技术与VHDL程序设计基础教程

它支持原理图、VHDL和Verilog 语言文本输入方式和波形或EDIF 格式的文件作为输入,且支持这 些文件的混合设计。
Quartus II的GUI界面
EDA技术与VHDL程序开发基础教程
五、EDA集成开发工具
ISE+ModelSim
ispLEVER
EDA技术与VHDL程序开发基础教程
。(b)中三条竖线A、B、C也为输入线,输入到或门的横线为和线。和线与
输入线的交叉点为编程点。
当输入线与和线相连通时,
在编程点处以“×”表示。
Y=AB
可以看出,图中电路表示
Y=A+B+C
的逻辑表达式分别为Y=AB
和Y=A+B+C。
ABC
ABC
(a)
(b)
EDA技术与VHDL程序开发基础教程
三、 CPLD的基本结构和工作原理
EDA技术与VHDL程序开发基础教程
第1章 EDA概述
重点内容:
EDA技术发展和应用 EDA工程设计流程 EDA集成开发工具
EDA技术与VHDL程序开发基础教程
一、EDA工程简介
EDA(Electronic Design Automation)工程是现代电子信息工程领 域中一门发展迅速的新技术。
流程
需求分析
算法设计 (Algorithm Optimization)
构架设计 (Architecture Exploration)
RTL 设计 (RTL Design)
RTL 验证 (RTL Verification)
综合 (Synthesis)
门级验证 (Gate-level Verification)
《EDA(VHDL)课程设计》任务书

3.四组数字智力抢答器的VHDL设计(每班1-30号的双号选择)
系统设计要求是:
(1)设计制作一个可容纳四组参赛者的数字智力抢答器,每组设置一个抢答按钮供抢答者使用。
(1)主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。
(2)主干道处于常允许通行状态,而支干道有车来才允许通行。
(3)当主、支道均有车时,两者交替允许通行,主干道每次放行45s,支干道每次放行25s,在每次由亮绿灯变成亮红灯的转换过程中,要亮5s的黄灯作为过渡,并进行减计时显示。
设计的基本要求
3.输入、输出接口说明
4.报告中有分频器、定时器相关模块的功能仿真和时序仿真结果。
5.编写内容充实、完整和规范的课程设计报告书。
6.课程设计报告要求校对仔细,无错字,A4纸打印,左侧装订。
主要参考文献
[1]谭会生,张昌凡.EDA技术及应用.西安:西安电子科技大学出版社,2006,12.
[2]潘松,黄继业.EDA技术实用教程.北京:科学出版社,2008,8.
2.99分钟定时器的VHDL设计(每班1-30号的单号选择)
任务要求:具有整体清零(reset)功能,定时99分钟。以秒速度递增至99分钟停止,启动报警(cout)5秒钟。具有置位(cn)控制,即cn高电平时,clk脉冲上升沿到来,计数加一;cn低电平时,置位结束,进入倒计时阶段,以秒速度使输出计数减一至零结束,并同时报警(cout)5秒钟。
为了防止雷同,建议每班1-4号设计2.5分频,5-8号设计3.5分频,9-12号设计4.5分频,13-16号设计5.5分频,17-20号设计6.5分频,21-24号设计7.5分频,25-28设计8.5分频,29-32设计9.5分频,33-36设计10.5分频,37-40号设计11.5分频,41-44号设计12.5分频计数器。
VHDL语言在EDA设计中的应用

任何 文本编 辑器都 可以进行 , 可 以 也
用 专 用 的 VHD L编 辑 环 境 , 件保 存 为 .h 文 v d文 件. 3 12 功 能 仿 真 文 件 调 入 VHDL仿 真 软 件 ( u ru .. Q ats I) 行 功 能 仿 真 , 查 逻 辑 功 能 是 否 正 确 ( 叫 前 仿 真 , I进 检 也
[ 键词] 关 VHDL Quru ; DA  ̄ at s IE I [ 图 分 类 号 ] P 1 中 T 32 [ 献标识码] 文 A [ 章 编 号 ] 08 6 7 (0 7 O一 O 8 一 O 文 1 0 - 0 22 0 )6 O3 2
1 引 言
随 着 半 导 体 技 术 的 迅 速 发 展 , 现 代 数 字 系 统 设 计 在 中 , 场 可 编 程 器 件 ( P A 和 C L 的 使 用 越 来 越 广 现 FG P D)
的原 因.
பைடு நூலகம்
最后 , VHD L所 给 出 的 逻 辑 的模 拟 与 调 试 为 设 计 工
解决 方案 均采 用 计算 机 自顶 向下 的设 计 方 式 : 底 层 设 计 在
时对 逻辑 进 行 必要 的描 述 , 依 赖 特 定 的 软 件 执 行 逻 辑 优 并
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南人文科技学院课程设计报告课程名称: VHDL语言与EDA课程设计~设计题目:出租车自动计价器设计系别:专业:班级:学生姓名:学号:起止日期: 2011年6月13日~2011年6月26日$指导教师:教研室主任:摘要随着我国社会经济的全面发展,各大中小城市的出租车营运事业发展迅速,出租车已经成为人们日常出行选择较为普遍的交通工具。
出租车计价器是出租车营运收费的专用智能化仪表,是出租车市场规范化、标准化以及减少司机与乘客之间发生纠纷的重要设备。
一种功能完备、简单易用、计量准确的出租车计价器是加强出租车行业管理、提高服务质量的必备品。
根据预定的设计要求和设计思路,我们使用VHDL硬件描述语言设计了一个实际的基于Altera FPGA芯片的出租车自动计价器系统,介绍了该系统的电路结构和程序设计。
通过在软件中编译和下载测试,得到了仿真波形和关键的设计结果。
经过在实验箱上进行硬件测试,证明该出租车计价系统具有实用出租车计价器的基本功能,如能进一步完善,将可以实用化和市场化。
关键词:出租车自动计价器;VHDL; FPGA ;目录设计要求 ................................................. 错误!未定义书签。
1、方案论证与对比 ........................................ 错误!未定义书签。
方案一................................................ 错误!未定义书签。
方案二................................................ 错误!未定义书签。
两种方案的对比........................................ 错误!未定义书签。
2、实验步骤和设计过程 .................................... 错误!未定义书签。
计程模块.............................................. 错误!未定义书签。
等待计时模块.......................................... 错误!未定义书签。
计费模块.............................................. 错误!未定义书签。
3、调试与操作说明 ........................................ 错误!未定义书签。
中的VHDL程序......................................... 错误!未定义书签。
程序的编译与及仿真波形................................ 错误!未定义书签。
程序的下载与功能的测试................................ 错误!未定义书签。
4、课程设计心得体会 ...................................... 错误!未定义书签。
5、元器件及仪器设备明细 .................................. 错误!未定义书签。
6、参考文献 .............................................. 错误!未定义书签。
7、致谢 .................................................. 错误!未定义书签。
出租车自动计价器设计设计要求设计一个出租车自动计费器,具有行车里程计费、等候时间计费、及起价三部分,用四位数码管显示总金额,最大值为元,行车里程单价1元/公里,等候时间单价元/10分钟,起价3元(3公里起价)。
设计的主要技术指标如下:1) 计价范围: 0~元计价分辨率:元2) 计程范围:0~99公里计程分辨率: 1公里3) 计时范围:0~59分计时分辨率: 1分1、方案论证与对比根据本课程设计要求,需要对出租车当行驶公里数和等待时间两种情况对应进行计数计费,同时要求显示出对应行驶公里数、等待时间和出租车费用,我们想到了以下两种方案。
方案一用分频器将外部时钟分为三路频率的信号,用来计时和计程,同时也供整个系统工作,通过设置使能信号,使系统自动对等待时间计时和对行驶公里数的计数,最后将所得结果分别在数码管上显示出来。
图 1 方案一设计结构图方案二各部分主要功能包括:信号输入模块对车轮传感器传送的脉冲信号进行计数,并以高低脉冲模拟出租汽车启动、停止按钮,具有输入信号作用;数据转换模块将计费模块输出的车费和路程转换成十进制数据;译码/动态扫描模块将路程与费用的数值译码后用动态扫描的方式驱动数码管[5];数码管显示模块将公里数和计费金额显示出来。
图2 方案二设计结构图两种方案的对比经分析,两种方案都要通过模块组合来实现出租车计价器的功能。
方案一模块数量比方案二多一些,但思路简单,各模块程序也相对简单,因此较容易实现,适合我们初学EDA的编程设计。
方案二模块较少,但单个模块功能要求较高,程序复杂。
所以,我们选择方案一。
2、实验步骤和设计过程计程模块计程模块:根据提供的里程脉冲信号fin,计算乘客上车后出租车所行驶的里程数。
fin每来一个上升沿,计程模块实现一次计数,里程数就加1。
当行驶里程大于3Km时,本模块中en0信号变为1;进行行驶公里都计费。
等待计时模块等待计时模块:根据分频得到的时钟信号f_1,计算乘客的等待累计时间。
计时器的量程为59min,满量程归零。
等待时间大于3min时,本模块中en1信号变为1;f_1每来一个上升沿,计量模块实现一次计数,等待时间加1。
计费模块计费模块:实现计价、计时和计程的数据计费。
计量模块实现对于出租车在行驶和等待过程中的里程数和计时功能:计费时钟每来一个上升沿,计量模块实现一次计数,里程数或者等待时间加1。
当行驶里程大于3Km时,本模块中en0信号变为1;进行的是行驶公里数大于3公里以每公里元计费的操作;当等待时间大于2min时,本模块中en1信号变为1,进行的是等待时间大于2分钟以每分钟元计费的操作;最后用cha3,cha2,cha1,cha0来组成的4位数显示总费用,最大显示为元。
3、调试与操作说明中的VHDL程序根据设计要求我们写出了VHDL程序:library ieee;useuseuseentity taxi is --定义实体[3]port ( clk_256 :instd_logic; --频率为256Hz的时钟start :instd_logic; --计价使能信号stop:instd_logic;--等待信号fin:instd_logic;--公里脉冲信号cha3,cha2,cha1,cha0:out std_logic_vector(3 downto 0); --费用数据km1,km0:out std_logic_vector(3 downto0); --公里数据min1,min0: out std_logic_vector(3 downto0)); --等待时间end taxi;architecture behav of taxi issignalf_16,f16,f_1:std_logic;signal q_16:integer range 0 to15; --分频器signal q16:integer range 0 to15; --分频器signal q_1:integer range 0 to255; --分频器signal w:integer range 0 to59; --秒计数器signal c3,c2,c1,c0:std_logic_vector(3 downto 0); --制费用计数器signal k1,k0:std_logic_vector(3 downto 0); --公里计数器signal m1:std_logic_vector(2 downto 0); --分的十位计数器signal m0:std_logic_vector(3 downto 0); --分的个位计数器en1,en0,f:std_logic;--使能信号beginfenpin:process(clk_256,start) --分频器模块beginif clk_256'event and clk_256='1' thenif start='0' then q_16<=0;q16<=0;f_16<='0';f16<='0';f_1<='0';f<='0';elseif q_16=15 then q_16<=0;f_16<='1'; --此if语句得到频率为16Hz的信号else q_16<=q_16+1;f_16<='0';end if;if q16=15 then q16<=0;f16<='1'; --此if语句得到另一个频率为16Hz的信号else q16<=q16+1;f16<='0';end if;if q_1=255 then q_1<=0;f_1<='1'; --此if语句得到频率为1Hz的信号else q_1<=q_1+1;f_1<='0';end if;if en1='1' thenf<=f_16; --此if语句得到计费脉冲f elsif en0='1' then f<=f16;else f<='0';end if;end if;end if;end process;process(f_1) --等待计时模块if f_1'event and f_1='1' thenif start='0' thenw<=0;en1<='0';en0<='0';m1<="000";m0<="0000";k1<="0000";k0<="0000";elsif stop='1' then --等待计时模块if w=59 thenw<=0; --此if语句完成等待计时if m0="1001" thenm0<="0000"; --此if语句完成分计数if m1<="101" then m1<="000";else m1<=m1+1;end if;else m0<=m0+1;end if;if m1&m0>"0000001"thenen1<='1'; --此if语句得到en1使能信号else en1<='0';end if;else w<=w+1;en1<='0';end if;elsif fin='1' then --计程模块if k0="1001" thenk0<="0000"; --此if语句完成公里脉冲计数if k1="1001" then k1<="0000";else k1<=k1+1;end if;else k0<=k0+1;end if;if k1&k0>"00000010" thenen0<='1'; --此if语句得到en0使能信号else en0<='0';end if;else en1<='0';en0<='0';end if;cha3<=c3;cha2<=c2;cha1<=c1;cha0<=c0; --费用数据输出km1<=k1;km0<=k0;min1<='0'&m1;min0<=m0; --公里数据、分钟数据输出end if;end process;process(f,start) --计费模块[2]beginif start='0' then c3<="0000";c2<="0001";c1<="0000";c0<="0000";elsif f'event and f='1' thenif c0="1001" thenc0<="0000"; --此if语句完成对费用的计数if c1="1001" then c1<="0000";if c2="1001" then c2<="0000";if c3<="1001" then c3<="0000";else c3<=c3+1;end if;else c2<=c2+1;end if;else c1<=c1+1;end if;else c0<=c0+1;end if;end if;end process;end behav;程序的编译与及仿真波形在QuartusII新建项目,将设计的程序输入并以实体名为文件名保存[4],然后以保存后的文件为顶层文件建立工程,编译通过后新建波形文件,设置好输入参数后进行仿真,我们得到的仿真波形如图3:图3 出租车计价器程序的仿真波形从仿真波形中我们看出,当出租车行驶公里数(Km1,Km0组成的两位数)为16即出租车行驶了16公里,等待时间(min1,min0组成的两位数)为03,即等待3分钟时,对应的出租车计费显示是1650即元。