版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 基于vhdl的楼梯照明灯的控制的实现 第 18页 共18页 1 引 言以前进行楼梯照明灯的控制,需要进行模拟电路和数字电路设计,使用的芯片多,电路复杂,出现问题不易查找,不易进行功能扩展。随着eda(electronics design automation)技术的出现,改变了传统的设计电路的方法,人们可以用一片芯片实现所需要的各种功能,这就是可编程逻辑器件。与传统电路设计方法相比,可编程逻辑器件功能强大,开发过程投资小、周期短,可反复编程修改,保密性极好,开发工具智能化等特点,特别是随着电子工艺的不断改进,低成本fpgaicpld器件推陈出新,促使fpgaicpld成为当今硬件设计的首选方
2、式之一。eda关键技术之一就是采用硬件描述语言对硬件电路进行描述,且具有系统级仿真和综合能力。目前应用比较广泛的硬件描述语言就是vhdl(very high speed lntegrated circuit hardware description language)。图1.12 vhdl简介 vhdl的英文全名是very-high-speed integrated circuit hardwaredescription language,诞生于1982年。1987年底,vhdl被ieee和美国国防部确认为标准硬件描述语言 。自ieee公布了vhdl的标准版本,ieee-1076(简称87版)
3、之后,各eda公司相继推出了自己的vhdl设计环境,或宣布自己的设计工具可以和vhdl接口。此后vhdl在电子设计领域得到了广泛的认可,并逐步取代了原有的非标准的硬件描述语言。1993年,ieee对vhdl进行了修订,从更高的抽象层次和系统描述能力上扩展vhdl的内容,公布了新版本的vhdl,即ieee标准的1076-1993版本,(简称93版)。现在,vhdl和verilog作为ieee的工业标准硬件描述语言,又得到众多eda公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,vhdl与verilog语言将承担起大部分的数字系统设计任务。vhdl语言是一种用
4、于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。 vhdl的英文全写是:vhsic(very high speed integrated circuit)hardware description language.翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在fpga/cpld/epld的设计中。当然在一些实力较为雄厚的单位,它也被用来设计asic。vhdl主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句
5、外,vhdl的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。vhdl的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是vhdl系统设计的基本点。由于vhdl已经成为ieee标准所规范的硬件描述语言,目前大多数eda工具几乎都支持vhdl,这为vhdl的进一步推广和广泛应用奠定了基础。在硬件电路设计过程中,主要的设计文件是用vhdl
6、编写的源代码,因为vhdl易读和结构化,所以易于修改设计。vhdl具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。另外,vhdl支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。vhdl支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。3任务描述及要求3.1用vhdl语言描述楼梯灯试设计一个楼梯灯控制装置。控制要求:只用一个按钮控制,当按一次按钮时,楼梯灯亮4min后自动熄灭;当连续按二次按钮时,灯长亮不灭;无论是定时状态,还是灯长亮状
7、态,只要按下按钮的时间超过2s时灯熄灭(注意如果按下时间不超过2s,原状态继续)。该控制器框图如图1所示。状态机的状态图如图2所示。假设:key=1表示按钮按下,key=0表示按钮跳起。td2=1表示2s时间到。td240=1表示240s时间到。st_2=1表示启动2s定时器。st_240=1 表示启动240s定时器。 lamp=1表示灯亮。从该状态机的特点可以看出,这是一个梅里状态机,这是因为只要按钮一按下,一些动作就立刻开始执行,而不是等到状态转移后,例如当按钮按下,两秒定时器就开始工作。图3.1 楼梯灯控制装置框图3.2实验步骤:在单独的文件夹中建立项目、输入各个底层vhdl源文件、仿真
8、;建立顶层电路图源文件,将各个底层描述形成模块符号、连接电路、锁定引脚、编译、下载到实验板、观察结果。 图3.2 楼梯灯的状态图4状态机的vhdl描述:library ieee;use ieee.std_logic_1164.all;entity fsm isport(key,clk,td2,td240 :in std_logic; st2,st240,lamp :out std_logic);end;architecture fsm_arch of fsm istype zt_type is (s1,s2,s3,s4,s5,s6,s7,s8,s9);signal zt_now, zt_nex
9、t : zt_type;beginn1:process(clk) -状态寄存进程 begin if clkevent and clk=1 then zt_now if key=1 then lamp=1;st240=1;st2=0;zt_next=s2; elsif key=0 then lamp=0;st240=0;st2=0;zt_next if key=0 then lamp=1;st240=1;st2=1;zt_next=s3; elsif key=1 then lamp=1;st240=1;st2=0;zt_next if key=1 then lamp=1;st240=1;st2=
10、0;zt_next=s7; elsif (key=0) and (td2=1) then lamp=1;st240=1;st2=1;zt_next=s4; else lamp=1;st240=1;st2=1;zt_next if key=1 then lamp=1;st240=1;st2=1;zt_next=s5; elsif (key=0) and (td240=1) then lamp=0;st240=1;st2=0;zt_next=s1; else lamp=1;st240=1;st2=0;zt_next if (key=1) and (td2=1) then lamp=0;st240=
11、0;st2=1;zt_next=s6; elsif key=0 then lamp=1;st240=1;st2=0;zt_next=s4; else lamp=1;st240=1;st2=1;zt_next if key=0 then lamp=0;st240=0;st2=0;zt_next=s1; else lamp=0;st240=0;st2=0;zt_next if key=1 then lamp=1;st240=0;st2=1;zt_next=s8; else lamp=1;st240=0;st2=0;zt_next if (key=1) and (td2=1) then lamp=0
12、;st240=0;st2=1;zt_next=s9; elsif (key=0) then lamp=1;st240=1;st2=0;zt_next=s7; else lamp=1;st240=0;st2=1;zt_next if key=0 then lamp=0;st240=0;st2=0;zt_next=s1; else lamp=0;st240=0;st2=0;zt_nextzt_next=s1; end case;end process;end fsm_arch;该状态机的仿真结果如图4.1-1所示。240s时间到灭灯2s时间到进s3按键第1次按下按键连续按下2次,进入长亮状态s6按
13、键按下1次,进入定时状态s3按键按下时间超过2s,进入s5灭灯按键按下超过2s,进入状态s8灭灯图4.1状态机仿真图5 2秒计数器的vhdl描述 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity con2 isport(clk,st2 :in std_logic; td2 :out std_logic; sh :out std_logic_vector(3 downto 0);end;architecture con2_arch of con2 issignal qq: std_log
14、ic_vector(3 downto 0);begin process(clk,st2) begin if st2=0 then qq=0011;-题目要求是2秒,为调试方便这里给3秒 elsif clkevent and clk=1 then if qq/=0000 then qq=qq-1; else qq=qq; end if; end if; end process; td2=1 when qq=0000 else 0; sh=qq;end con2_arch;2秒减计数器的仿真结果如图5.1所示。图5.1 2秒减计数器的仿真结果6 240秒计数器的vhdl描述library ieee
15、;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity con240 isport(clk,st240 :in std_logic; td240 :out std_logic; gaowei,diwei:out std_logic_vector(3 downto 0);end;architecture con240_arch of con240 issignal qq: std_logic_vector(7 downto 0);begin process(clk,st240) begin if st240=0 th
16、en qq=00011110;-题目要求是240秒,为调试方便这里给30秒 elsif clkevent and clk=1 then if qq/=00000000 then qq=qq-1; else qq=qq; end if; end if; end process; td240=1 when qq=00000000 else 0; gaowei=qq(7 downto 4); diwei bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb = 1111111;end case;end process; b0=bb(6); b1=bb(
17、5); b2=bb(4); b3=bb(3); b4=bb(2); b5=bb(1); b6=bb(0);end yima_arch; 该译码器是十六进制七段译码,用于共阳极数码管,仿真结果如图7.1所示。图7.1 译码器仿真结果8分频电路library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin isport(clk :in std_logic; q0,q1,q2,q3 :out std_logic);end;architecture fenpin_arch of fenpin
18、issignal qq :std_logic_vector(3 downto 0);begin process(clk) begin if clkevent and clk=1 then qq=qq+1; end if; q0=qq(0); q1=qq(1); q2=qq(2); q3=qq(3); end process;end fenpin_arch;该分频器是十六分频计数器,仿真结果如图8.1所示。图8.1十六分频计数器仿真结果图9顶层模块图顶层模块如图9.1所示。仿真结果如图9.2图9.1 楼道灯顶层模块图按钮按下,灯亮,30秒后灯灭按钮按下,用按下时间延长2s的方式灭灯按钮按下2次,
19、灯常亮,用按下时间延长2s的方式灭灯图9.2 楼道灯顶层模块仿真结果10参考文献 1 armstrong j r, fray f g. vhdl设计表示和综合m.李宗伯,王蓉晖译.北京:机械工业出版社, 2002. 2 skahill k.可编程逻辑系统的vhdl设计技术m.朱明程,孙普译.南京:东南大学出版社,1998. 3 仇玉章. 微型计算机系统接口技术m. 南京:江苏科技出版社,1997. 4电脑知识与技术j2010年6月刊5软件世界j2010年8月刊11致谢在这两周的课程设计中,蔡老师,郭祥斌同学还有其他很同学对我给予了不少帮助,在此特意对他们表示感谢!ut2apodfxxc02gy
20、bkskcww97mrqqwhoj5tl15zt6jipyytycummtarp3v1n5luizi3xh3bhwyreko8d9g7nmzqowpjetldrw08gvs8dsdqqygc3ce7moo2tlf0jf1gk74iuxybmtivr97ckrfvqult5fn2t6mpjr6rbzvpsortzvij5nb5ndvvsr4iwr1twlfkglspzuhrjq3cmzu98euouijdlszqpmvrw9zkupxf8wfug9l2g9277g2rtipa1ypczeuqxpkbhtvdcooqozxuz3vjrzmocijym62zchmeootyes8ebmm932tbz
21、2yo09rtszeys8zrd2yktj8l6jeazvajnfbtrylvsm6ofbftoxvrffn7owiygjlamkunxjybz5rrb7r4vsur9zpfzfmfsjhcfca37lnw2vvlrkn7r8psz1bn6oric5hu5z6hcxayqynpog8duybawqsl20csg06dh2sm8hltgpkicskrgopdpuhbj1lmpk7lydvc6nnmwl3fwhzftfvyaary7lhssxj10v3ph3y19bxyr77ib7cpzsu2tijqe3hkqkkau9kskcphkxuikvvyjzpg2yijrkqfbggovyqkuxnwi
22、9omnjtt6qilzxtyrf7d20fbmabcfiixrqkusvnxbppfuxyq1fjskfsubkgs2duvqc9sz4jkbgn4qqv66pyoarjurnfj3txyfclzieeptwfjthpheipdfnqnr2hjqkv2dzwtmpdjqkbcxmovdsjqctjagjmdlskpgad2s0h0vmzgaht36gyuez7umank1ndreubeqdgrx0venqgnsyib2ilq3siqrnl4m56t7z8y8da5k0kupn5nzg4jvjdtffhyt82aogqkxo4vblmleiy2p7hthbho07rcfttxodydppdtq
23、so7wxd0j6fkklgm4wodzplhtrr2xgqn13hqy59zu1gegdyqnihntavsieuefqcyfucjwd3vk5i7ykmhundmiz ut2apodfxxc02gybkskcww97mrqqwhoj5tl15zt6jipyytycummtarp3v1n5luizi3xh3bhwyreko8d9g7nmzqowpjetldrw08gvs8dsdqqygc3ce7moo2tlf0jf1gk74iuxybmtivr97ckrfvqult5fn2t6mpjr6rbzvpsortzvij5nb5ndvvsr4iwr1twlfkglspzuhrjq3cmzu98euouijdlszqpmvrw9zkup
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陈芳劳动合同
- 房屋炮损补偿协议书
- 房款分割协议书
- 交通事故后续治疗协议书
- 劳务协议书 工伤
- 房屋对换协议书
- 加盟定金协议书范本
- 餐饮股份合作协议书范本
- 夫妻私下协议书离婚
- 定期完工协议书
- (2024版)北师大三年级上数学第二单元测量(二)课件全套
- 2025年钻孔工程钻探工程施工组织设计方案书
- 工程质量管理问题自查报告
- 广西贵百河联考2025-2026学年高一上学期10月月考语文试卷
- 人工智能导论 课件 第2章 人工智能基础
- 2025年职业技能鉴定考试质量督导员测试题及答案
- 2025下半年杭州市萧山区国有企业招聘52人备考考试题库附答案解析
- 2025年注册安全工程师《法律法规》真题及参考答案
- 稀有金属知识培训班课件
- 2025小学五年级英语句型转换专项卷
- 现代化三级甲等医院住院患者身份识别腕带管理制度
评论
0/150
提交评论