- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《VHDL语言》课程设计报告
PAGE
PAGE 1
《VHDL语言》课程设计
设计题目:电子秒表系统设计
系 别:电子通信工程系
姓 名: 武 志 伟
组 员:吴金彪 张向往
班 级: 医 电 051
学 号: 050411125
指导老师: 石 新 峰
成 绩:
设计时间:2007
目 录
前言…………………………………………………………………1
一、设计任务及要求……………………………………………2
二、方案论证……………………………………………………3
三、设计总体框图………………………………………………4
四、硬件电路设计与程序设计………………………………5
五、编译仿真……………………………………………………6
六、心得体会………………………………………………………7
参考文献:……………………………………………………………8
前 言
秒表计时器常常用于体育竞赛及各种其他要求有较精确时间的各领域中。其中启/停开关的使用方法与传统的机械计时器相同,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关计时终止。而复位开关可以在任何情况下使用,即使在计时过程中,只要按一下复位开关,计时应立即终止,并对计时器清零。本文是主要是用CPLD的一些知识简单的设计秒表的过程。
一、设计任务及要求
1. 设计数码管显示的秒表。
2. 能够准确的计时并显示。
3. 开机显示00.00.00。
4. 用户可以随时清零、暂停、计时。
5. 最大记时59分钟,最小精确到0.01秒。
二、方案论证
方案一 采用8051IP核设计。用FPGA构成一个8051单片应用系统具有如下优缺点:
1、拥有标准8051完全兼容的指令系统的CPU;
2、256字节内部RAM;
3、4K字节程序ROM;
4、每一此编译下载后都能根据需要更新ROM中的程序,所以该单片机的实现和使用如同89C51/52一样方便。
缺点:
设计烦琐可以直接用8051单片机代替。
程序复杂。
方案二 采用芯片EP1C12Q240C8、共阴七段数码管、按键开关、发光二极管设计。EP1C12Q240C8是Cyclone器件,Cyclone可以最多支持129个通道的LVDS和RSDS。Cyclone器件的LVDS缓冲器可以支持最高达640Mbps的数据传输速度。与单端的I/O口标准相比,这些内显置于Cyclone器件内部的LVDS缓冲器保持了信号的完整性,并且有更低的电磁干扰、更好的电磁兼容性(EMI)及更低的电源功耗。采用此芯片设计简单,不需要用汇编语言编写程序,直接用VHDL编写即可以.
缺点:与8051IP核相比精确度不是很高。但是对于秒表系统设计可以满足要求。
三、设计总体框图
三、硬件电路设计与程序设计
本设计采用模块化设计,共分为顶层文件(msecond)、控制秒模块(second)、控制分钟模块(minutes)、LED模块(alert)、数码管扫描模块(zhishi)、显示驱动模块(deled)六个模块。其中LED模块可以去掉,不影响秒表正常运行以下对各个模块一一描述。
顶层文件
对这个功能模块用一个进程语句描述。clk、reset和调秒的setsec为输入信号程序代码如下:
LIBRARY ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
ENTITY msecond IS
PORT(
clk, reset,setsec : IN STD_LOGIC;
ensec : OUT STD_LOGIC;
daout: OUT std_logic_vector (6 downto 0));
END entity msecond ;
ARCHITECTURE fun OF msecond IS
SIGNAL count: STD_LOGIC_VECTOR( 6 downto 0);
BEGIN
daout = count;
process ( clk , reset , setsec )
begin
-- enmsec =k;
if (reset=0) then
count = 0000000;
elsif (setsec =0) then
ensec = clk;
el
文档评论(0)