八层电梯vhdl实现课程设计报告
vhdl课程设计实验报告
湖南科技大学信息与电气工程学院《课程设计报告》题目:电子技术课程设计报告专业:通信工程班级:一班姓名:何家乐学号: 1004040126指导教师:罗朝辉任务书题目《电子技术》课程设计时间安排课程设计时间为10天(2周)。
(1)调研、查资料1天。
(2)总体方案设计2 天。
(3)电路设计2天(画原理图,参数计算)。
(4)实验室完成相应电路的验证。
3天(5)撰写设计说明书 1 天。
(6)验收1 天。
目的:训练学生综合运用学过的电子技术原理的基础知识,独立进行查找资料、选择方案、设计电路、撰写报告,进一步加深对电子电路基本理论的理解,提高运用基本技能的能力,为今后的学习和工作打下坚实的基础。
要求:(1)能正确设计电路,画出线路图,分析电路原理。
(2)按时参加课程设计指导,定期汇报课程设计进展情况。
(3)广泛收集相关技术资料。
(4)独立思考,刻苦钻研,严禁抄袭。
(5)按时完成课程设计任务,认真、正确地书写课程设计报告。
(6)培养实事求是、严谨的工作态度和认真的工作作风。
总体方案实现:(1)明确设计任务,对所要设计的任务进行具体分析,充分了解电路性能、指标内容及要求。
(2)制定设计方案。
(3)迸行具体设计:单元电路的设计;参数计算;器件选择;绘制电路原理图。
(4)撰写课程设计报告(说明书):课程设计报告是对设计全过程的系统总结,也是培养综合科研素质的一个重要环节。
指导教师评语:评分等级:()指导教师签名:课程设计报告1.课题名称:RGB LED Control 原理图及PCB设计2.设计任务及要求⑴任务:完成RGB LED control 的设计,并画出原理图及其PCB设计。
⑵要求:①能正确设计电路,画出线路图,分析电路原理。
②按时参加课程设计指导,定期汇报课程设计进展情况。
③广泛收集相关技术资料。
④独立思考,刻苦钻研,严禁抄袭。
⑤按时完成课程设计任务,认真、正确地书写课程设计报告。
⑥培养实事求是、严谨的工作态度和认真的工作作风。
VHDL课程设计报告
VHDL课程设计报告一、题目要求(1)、EDA实验板组装调试参照提供的EDA实验板电路原理图、PCB图以及元器件清单进行电路板的组装,组装过程中要求能读懂电路原理图,了解各部分电路工作的原理。
电路板组装完成后,编写以下三个小程序进行电路板测试:1、流水灯程序编写一个流水灯程序,使实验板上DS2—DS13十二个LED依次循环点亮。
2、数码管动态扫描程序了解BCD—七段锁存译码器CD4511的工作原理及数码管动态扫描技术,编写一个程序,使EDA实验板上的8位数码管由“0000 0000”按一定的频率自加一直到“9999 9999”,然后归零不断循环以上过程。
3、矩阵键盘扫描程序了解矩阵键盘扫描原理,编写一程序,当按下实验板上十六个按键任一键,数码管上显示相应键值1—16。
以上测试程序先经软件仿真通过后下载到实验板上进行测试,观察实验结果,若与预期设计不符则应对软、硬件进行细心检查,排除故障。
完成以上电路板组装且调试通过后可进行第二部分红外遥控系统的设计。
(2)、红外遥控系统的设计红外遥控系统由发射编码和接收解码两个部分组成,本课程设计要求制作发射编码电路板(遥控器)以及编写程序在EDA实验板上实现接收解码,具体说明如下:1、发射编码部分发射编码部分要求使用指定的元器件在万用板上完成红外遥控器的制作,该部分电路原理图参照《PT2248数据手册》,制作前请详细阅读《红外遥控器制作说明》,制作时要求元器件在万用板上排列整齐,布局合理,焊接良好,各按键功能正常,均能发送编码。
2、接收解码部分接收解码用VHDL语言编写程序,在EDA实验板上实现解码,要求具有以下功能:(1)基本要求:(a)将一体化红外接收解调器的输出信号解码(12个单击键、6个连续键,单击键编号为7-18,连续键编码为1-6),在EDA实验板上用七段数码管显示出来;(b)当按下遥控器1—6号连续键时,在EDA实验板上用发光二极管点亮作为连续键按下的指示,要求遥控器上连续键接下时指示灯点亮,直到松开按键时才熄灭,用于区别单击键。
VHDL八位数码管频率计课程设计报告
一、课程设计要求设计一个8位数码管显示的频率计(频率分辨率为1Hz)。
二、总体结构框图系统时钟分频及控制计数数据锁存动态扫描数码管段选待测频率数码管位选数码管显示图1 总体结构框图三、课程设计原理在电子技术中,频率是最基本的参数之一,并且与许多点参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得尤为重要。
测量频率的方法有很多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。
数字式频率计的测量原理有两类:一是直接测频法,即在一定的闸门时间内测量被测信号的脉冲个数;二是间接测频法即周期法,如周期测频法。
直接测频法适用于高频信号的频率测量,通常采用计数器、数据锁存器及控制电路实现,并通过改变计数阀门的时间长短以达到不同的测量精度;间接测频法适用于低频信号的频率测量。
本次课程设计中使用的是直接测频法,即用计数器在计算机1s内输入信号周期的个数,其测频范围为0Hz-99999999Hz。
四、器件的选择1、装有QuartusII软件的计算机一台。
2、芯片:本实验板中为EP芯片。
3、EDA实验箱一个。
4、下载接口是数字芯片的下载接口(JTAG)主要用于FPGA芯片的数据下载。
5、时钟源。
五、功能模块和信号仿真图以及源程序(1) 系统时钟分频及控制的功能模块图及其源程序图2 功能模块图作用:将试验箱上的50MHz的晶振分频,输出CLOCK为数码管提供1kHz的动态扫描频率。
CNT_EN输出为0.05s的信号,对频率计中的32位十进制计数器CNT10的ENA使能端进行同步控制,当TSTEN高电平时允许计数,低电平时停止计数,并保持其所计的脉冲数。
在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前一秒的计数值锁存进锁存器REG32B中,并由外部的十进制7段数码管显示计数值。
设置锁存器的好处是数据显示稳定,不会由于周期性的清零信号而不断闪烁。
八层电梯主控程序-VHDL程序编写
LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;USE ieee;std_logic_unsigned.all;ENTITY lift ISport(buttonclk : IN STD_LOGIC; --按键时钟liftclk : IN STD_LOGIC; --电梯时钟reset : in STD_LOGIC; --异步复位input : in std_logic;up : in std_logic_vector(3 downto 0);down : in std_logic_vector(3 downto 0);stop: in std_logic_vector(3 downto 0);fuplight : buffer std_logic_vector(8 downto 1);--电梯外部上升请求指示灯fdnlight: buffer std_logic_vector(8 downto 1);--电梯外部下降请求指示灯stoplight: buffer std_logic_vector(8 downto 1);--电梯内部各层请求指示灯position: buffer integer range 1 to 8;--电梯位置指示doorlight: out std_logic;--电梯开关指示灯udsig: buffer std_logic);--电梯升降指示end lift;architecture a of lift isTYPE lift_state is(stopon1,dooropen,doorclose,doorwait1,doorwait2,doorwait3,doorwait4,up,down,stop );signal mylift: lift_state;signal clearup: STD_LOGIC;--用于清除上升请求指示灯的信号signal cleardn: STD_LOGIC;--用于清除下降请求指示灯的信号signal f1upbutton: std_logic;signal f2upbutton: std_logic;signal f2dnbutton: std_logic;signal f3dnbutton: std_logic;signal f3upbutton: std_logic;signal f4dnbutton: std_logic;signal f4upbutton: std_logic;signal f5dnbutton: std_logic;signal f5upbutton: std_logic;signal f6dnbutton: std_logic;signal f6upbutton: std_logic;signal f7dnbutton: std_logic;signal f7upbutton: std_logic;signal f8dnbutton: std_logic;signalstop1button,stop2button,stop3button,stop4button,stop5button,stop6button,stop7button,stop8button: std_logic;beginctrlift: process(reset,liftclk)--控制电梯状态的进程variable poss: integer range 8 downto 1;--变量poss用于表示电梯的位置beginif reset='1' then --异步复位信号如果为1时电梯的状态mylift<=stopon1; --如果电梯停留在第一层待机clearup<='0'; --清除上升信号cleardn<='0'; --清除下降信号else --电梯处于正常工作情况if liftclk'event and liftclk='1' then --电梯时钟上升沿触发case mylift ISwhen stopon1 => --处于电梯停留在一层的状态doorlight<='1'; --开门指示灯亮表示开门position<=1;poss:=1; --电梯位置为一层mylift<=doorwait1; --状态转移到开门等待第一秒状态when doorwait1 => --处于开门等待第一秒状态mylift<=doorwait2; --状态转移到开门等待第二秒状态when doorwait2 => --处于开门等待第二秒状态clearup<='0'; --清除本层上升请求cleardn<='0'; --清除本层下降请求mylift<=doorwait3; --状态转移到开门等待第三秒状态when doorwait3 => --处于开门等待第三秒状态mylift<=doorwait4; --状态转移到开门等待第四秒状态when doorwait4 => --处于开门等待第四秒状态mylift<=doorclose; --状态转移到关门状态when doorclose => --处于关门状态doorlight<='0'; --开门指示灯灭,表示关门if udsig='0' then --udsig=0表示上升模式if position=8 then --如果电梯在第八层if (stoplight="00000000" and fuplight="00000000") and fdnlight="00000000" then --没有任何请求信号udsig<='1'; --udsig置1mylift<=doorclose; --电梯处于关门状态else udsig<='1'; mylift<=down;--无论什么请求电梯都要下降end if;elsif position=7 then --如果电梯在第七层if stoplight="00000000" and fuplight="00000000" and fdnlight="00000000" then --没有任何请求信号udsig<='0'; mylift<=doorclose; --电梯回关门状态等待升降请求elsif stoplight(8)='1' OR (stoplight(8)='0' and fdnlight(8)='1') then --如果内部有8层停站请求或有8层下降请求udsig<='0'; mylift<=up; --电梯上升else udsig<='1'; mylift<=down; --其他任何情况udsig=1,电梯下降end if;elsif position=6 then --如果电梯在第六层if stoplight="00000000" and fuplight="00000000" and fdnlight="00000000" thenudsig<='0'; --如果没有任何请求信号,电梯处于上升模式mylift<=doorclose; --电梯回关门状态等待升降请求elsif stoplight(7)='1' OR (stoplight(7)='0' and (fdnlight(7)='1' orfuplight(7)='1')) then --如果内部有7层停站请求或有7层上升、下降请求udsig<='0'; mylift<=up; --电梯上升elsif stoplight(8)='1' OR (stoplight(8)='0' and fdnlight(8)='1') then --如果内部有8层停站请求或有8层下降请求udsig<='0';mylift<=up; --电梯上升else udsig<='1'; mylift<=down; --其他任何情况udsig=1,电梯下降end if;elsif position=5 then --如果电梯在第五层if stoplight="00000000" and fuplight="00000000" and fdnlight="00000000" thenudsig<='0'; --如果没有任何请求信号,电梯处于上升模式mylift<=doorclose; --电梯回关门状态等待升降请求elsif stoplight(6)='1' OR (stoplight(6)='0' and (fdnlight(6)='1' orfuplight(6)='1')) then --如果内部有6层停站请求或有6层上升、下降请求udsig<='0';mylift<=up; --电梯上升elsif stoplight(7)='1' OR (stoplight(7)='0' and (fdnlight(7)='1' orfuplight(7)='1')) then --如果内部有7层停站请求或有7层上升、下降请求udsig<='0';mylift<=up; --电梯上升elsif stoplight(8)='1' OR (stoplight(8)='0' and fdnlight(8)='1') then --如果内部有8层停站请求或有8层下降请求udsig<='0';mylift<=up; --电梯上升else udsig<='1'; mylift<=down; --其他任何情况udsig=1,电梯下降end if;elsif position=4 then --如果电梯在第四层if stoplight="00000000" and fuplight="00000000" and fdnlight="00000000" thenudsig<='0'; --如果没有任何请求信号,电梯处于上升模式mylift<=doorclose; --电梯回关门状态等待升降请求elsif stoplight(5)='1' OR (stoplight(5)='0' and (fdnlight(5)='1' orfuplight(5)='1')) then --如果内部有5层停站请求或有5层上升、下降请求udsig<='0';mylift<=up; --电梯上升elsif stoplight(6)='1' OR (stoplight(6)='0' and (fdnlight(6)='1' orfuplight(6)='1')) then --如果内部有6层停站请求或有6层上升、下降请求udsig<='0';mylift<=up; --电梯上升elsif stoplight(7)='1' OR (stoplight(7)='0' and (fdnlight(7)='1' orfuplight(7)='1')) then --如果内部有7层停站请求或有7层上升、下降请求udsig<='0';mylift<=up; --电梯上升elsif stoplight(8)='1' OR (stoplight(8)='0' and fdnlight(8)='1')then --如果内部有8层停站请求或有8层下降请求udsig<='0';mylift<=up; --电梯上升else udsig<='1'; mylift<=down; --其他任何情况udsig=1,电梯下降end if;elsif position=3 then --如果电梯在第四层if stoplight="00000000" and fuplight="00000000" and fdnlight="00000000" then udsig<='0';mylift<=doorclose;elsif stoplight(4)='1' OR (stoplight(4)='0' and (fdnlight(4)='1' orfuplight(4)='1')) thenudsig<='0';mylift<=up;elsif stoplight(5)='1' OR (stoplight(5)='0' and (fdnlight(5)='1' orfuplight(5)='1')) thenudsig<='0';mylift<=up;elsif stoplight(6)='1' OR (stoplight(6)='0' and (fdnlight(6)='1' orfuplight(6)='1')) thenudsig<='0';mylift<=up;elsif stoplight(7)='1' OR (stoplight(7)='0' and (fdnlight(7)='1' orfuplight(7)='1')) thenudsig<='0';mylift<=up;elsif stoplight(8)='1' OR (stoplight(8)='0' and fdnlight(8)='1') thenudsig<='0';mylift<=up;else udsig<='1'; mylift<=down;end if;elsif position=2 thenif stoplight="00000000" and fuplight="00000000" and fdnlight="00000000" thenudsig<='0';mylift<=doorclose;elsif stoplight(3)='1' OR (stoplight(3)='0' and (fdnlight(3)='1' orfuplight(3)='1')) thenudsig<='0';mylift<=up;elsif stoplight(4)='1' OR (stoplight(4)='0' and (fdnlight(4)='1' orfuplight(4)='1')) thenudsig<='0';mylift<=up;elsif stoplight(5)='1' OR (stoplight(5)='0' and (fdnlight(5)='1' or fuplight(5)='1')) thenudsig<='0';mylift<=up;elsif stoplight(6)='1' OR (stoplight(6)='0' and (fdnlight(6)='1' or fuplight(6)='1')) thenudsig<='0';mylift<=up;elsif stoplight(7)='1' OR (stoplight(7)='0' and (fdnlight(7)='1' or fuplight(7)='1')) thenudsig<='0';mylift<=up;elsif stoplight(8)='1' OR (stoplight(8)='0' and fdnlight(8)='1') then udsig<='0';mylift<=up;else udsig<='1'; mylift<=down;end if;elsif position=1 thenif stoplight="00000000" and fuplight="00000000" and fdnlight="00000000" then udsig<='0';mylift<=doorclose;else udsig<='0'; mylift<=up;end if;end if;else ------------------------if position=1 thenif stoplight="00000000" and fuplight="00000000" and fdnlight="00000000" then udsig<='0';mylift<=doorclose;else udsig<='0'; mylift<=up;end if;elsif position=2 thenif stoplight="00000000" and fuplight="00000000" and fdnlight="00000000" then udsig<='1';mylift<=doorclose;thenudsig<='1';mylift<=down;else udsig<='0'; mylift<=up;end if;elsif position=3 thenif stoplight="00000000" and fuplight="00000000" and fdnlight="00000000" then udsig<='1';mylift<=doorclose;elsif stoplight(2)='1' OR (stoplight(2)='0' and (fuplight(2)='1' or fdnlight(2)='1'))then udsig<='1';mylift<=down;elsif stoplight(1)='1' OR (stoplight(1)='0' and fuplight(1)='1') then udsig<='1';mylift<=down;else udsig<='0'; mylift<=up;end if;elsif position=4 thenif stoplight="00000000" and fuplight="00000000" and fdnlight="00000000" then udsig<='1';mylift<=doorclose;elsif stoplight(3)='1' OR (stoplight(3)='0' and (fuplight(3)='1' or fdnlight(3)='1'))then udsig<='1';mylift<=down;elsif stoplight(2)='1' OR (stoplight(2)='0' and (fuplight(2)='1' or fdnlight(2)='1'))then udsig<='1';mylift<=down;elsif stoplight(1)='1' OR (stoplight(1)='0' and fuplight(1)='1') then udsig<='1';mylift<=down;else udsig<='0'; mylift<=up;end if;elsif position=5 thenif stoplight="00000000" and fuplight="00000000" and fdnlight="00000000" then udsig<='1';mylift<=doorclose;elsif stoplight(4)='1' OR (stoplight(4)='0' and (fuplight(4)='1' or fdnlight(4)='1'))then udsig<='1';mylift<=down;fdnlight(3)='1'))then udsig<='1';mylift<=down;elsif stoplight(2)='1' OR (stoplight(2)='0' and (fuplight(2)='1' or fdnlight(2)='1'))then udsig<='1';mylift<=down;elsif stoplight(1)='1' OR (stoplight(1)='0' and fuplight(1)='1') then udsig<='1';mylift<=down;else udsig<='0'; mylift<=up;end if;elsif position=6 thenif stoplight="00000000" and fuplight="00000000" and fdnlight="00000000" then udsig<='1';mylift<=doorclose;elsif stoplight(5)='1' OR (stoplight(5)='0' and (fuplight(5)='1' or fdnlight(5)='1'))then udsig<='1';mylift<=down;elsif stoplight(4)='1' OR (stoplight(4)='0' and (fuplight(4)='1' or fdnlight(4)='1'))then udsig<='1';mylift<=down;elsif stoplight(3)='1' OR (stoplight(3)='0' and (fuplight(3)='1' or fdnlight(3)='1'))then udsig<='1';mylift<=down;elsif stoplight(2)='1' OR (stoplight(2)='0' and (fuplight(2)='1' or fdnlight(2)='1'))then udsig<='1';mylift<=down;elsif stoplight(1)='1' OR (stoplight(1)='0' and fuplight(1)='1') then udsig<='1';mylift<=down;else udsig<='0'; mylift<=up;end if;elsif position=7 thenif stoplight="00000000" and fuplight="00000000" and fdnlight="00000000" then udsig<='1';mylift<=doorclose;elsif stoplight(6)='1' OR (stoplight(6)='0' and (fuplight(6)='1' or fdnlight(6)='1'))then udsig<='1';mylift<=down;elsif stoplight(5)='1' OR (stoplight(5)='0' and (fuplight(5)='1' or fdnlight(5)='1'))then udsig<='1';mylift<=down;fdnlight(4)='1'))then udsig<='1';mylift<=down;elsif stoplight(3)='1' OR (stoplight(3)='0' and (fuplight(3)='1' or fdnlight(3)='1'))then udsig<='1';mylift<=down;elsif stoplight(2)='1' OR (stoplight(2)='0' and (fuplight(2)='1' or fdnlight(2)='1'))then udsig<='1';mylift<=down;elsif stoplight(1)='1' OR (stoplight(1)='0' and fuplight(1)='1') then udsig<='1';mylift<=down;else udsig<='0'; mylift<=up;end if;elsif position=8 thenif stoplight="00000000" and fuplight="00000000" and fdnlight="00000000" thenudsig<='1';mylift<=doorclose;else udsig<='1'; mylift<=down;end if;end if;end if;------------when up =>position<=position+1;poss:=poss+1;if poss=8 and (stoplight(poss)='1' OR fdnlight(poss)='1')then mylift<=stop;elsif poss<8 and (stoplight(poss)='1' or fuplight(poss)='1')then mylift<=stop;--elsif((fdnlight(poss)='1' and fuplight(poss+1 to 8)=0 and) fdnlight(poss+1 to 8)=0)--then mylift<=stop;Else mylift<=doorclose;end if;when down =>position<=position-1;poss:=poss-1;if poss>1 and (stoplight(poss)='1' OR fdnlight(poss)='1')then mylift<=stop;elsif poss=1 and (stoplight(poss)='1' OR fuplight(poss)='1')then mylift<=stop;Else mylift<=doorclose;end if;when stop =>mylift<=dooropen;when dooropen=>doorlight<='1';if udsig='0' thenif position<=7 and (stoplight(position)='1' OR fuplight(position)='1') thenclearup<='1';else clearup<='1'; cleardn<='1';end if;elsif udsig='1' thenif position>=2 and (stoplight(position)='1' OR fdnlight(position)='1') thencleardn<='1';else clearup<='1'; cleardn<='1';end if;end if;mylift<=doorwait1;end CASE;end if;end if;end process ctrlift;process(reset,buttonclk)beginif reset='1' thenf1upbutton<='0';f2upbutton<='0';f2dnbutton<='0'; f3dnbutton<='0'; f3upbutton<='0';f4dnbutton<='0'; f4upbutton<='0'; f5dnbutton<='0'; f5upbutton<='0'; f6dnbutton<='0'; f6upbutton<='0'; f7dnbutton<='0'; f7upbutton<='0'; f8dnbutton<='0'; stop1button<='0';stop2button<='0';stop3button<='0';stop4button<='0';stop5button<='0';stop6button<='0';stop7button<='0';stop8button<='0';elseif buttonclk'event and buttonclk='1' thenif input='1' thencase up iswhen "0001"=> f1upbutton<='1';when "0010"=> f2upbutton<='1';when "0011"=> f3upbutton<='1';when "0100"=> f4upbutton<='1';when "0101"=> f5upbutton<='1';when "0110"=> f6upbutton<='1';when "0111"=> f7upbutton<='1';when others => null;end case;case down iswhen "0010"=> f2dnbutton<='1';when "0011"=> f3dnbutton<='1';when "0100"=> f4dnbutton<='1';when "0101"=> f5dnbutton<='1';when "0110"=> f6dnbutton<='1';when "0111"=> f7dnbutton<='1';when "1000"=> f8dnbutton<='1';when others => null;end case;case stop iswhen "0001"=> stop1button<='1';when "0010"=> stop2button<='1';when "0011"=> stop3button<='1';when "0100"=> stop4button<='1';when "0101"=> stop5button<='1';when "0110"=> stop6button<='1';when "0111"=> stop7button<='1';when "1000"=> stop8button<='1';when others => null;end case;elsef1upbutton<='0';f2upbutton<='0';f2dnbutton<='0'; f3dnbutton<='0'; f3upbutton<='0';f4dnbutton<='0'; f4upbutton<='0'; f5dnbutton<='0'; f5upbutton<='0';f6dnbutton<='0'; f6upbutton<='0'; f7dnbutton<='0'; f7upbutton<='0';f8dnbutton<='0'; stop1button<='0';stop2button<='0';stop3button<='0';stop4button<='0';stop5button<='0';stop6button<='0';stop7button<='0';stop8button<='0';end if;end if;end if;end process ;process(reset,buttonclk)beginif reset='1' thenstoplight<="00000000"; fuplight<="00000000"; fdnlight<="00000000"; elseif buttonclk'event and buttonclk='1' thenif clearup='1' thenstoplight(position)<='0'; fuplight(position)<='0';elseif f1upbutton='1' then fuplight(1)<='1';elsif f2upbutton='1' then fuplight(2)<='1';elsif f3upbutton='1' then fuplight(3)<='1';elsif f4upbutton='1' then fuplight(4)<='1';elsif f5upbutton='1' then fuplight(5)<='1';elsif f6upbutton='1' then fuplight(6)<='1';elsif f7upbutton='1' then fuplight(7)<='1';end if;end if;if cleardn='1' thenstoplight(position)<='0'; fdnlight(position)<='0';elseif f2dnbutton='1' then fdnlight(2)<='1';elsif f3dnbutton='1' then fdnlight(3)<='1';elsif f4dnbutton='1' then fdnlight(4)<='1';elsif f5dnbutton='1' then fdnlight(5)<='1';elsif f6dnbutton='1' then fdnlight(6)<='1';elsif f7dnbutton='1' then fdnlight(7)<='1';elsif f8dnbutton='1' then fdnlight(8)<='1';end if;end if;if stop1button='1' then stoplight(1)<='1';elsif stop2button='1' then stoplight(2)<='1';elsif stop3button='1' then stoplight(3)<='1';elsif stop4button='1' then stoplight(4)<='1';elsif stop5button='1' then stoplight(5)<='1';elsif stop6button='1' then stoplight(6)<='1';elsif stop7button='1' then stoplight(7)<='1';elsif stop8button='1' then stoplight(8)<='1';end if;end if;end if;end process ;end a;。
基于VHDL的电梯控制系统设计说明
VHDL数字系统设计与测试实验报告基于VHDL的电梯控制系统设计一、设计背景及说明随着高层建筑的不断涌现,对电梯的需求也与日俱增,电梯已经成为我们日常生活中不可缺少的部分,稳定可靠性高的电梯系统成为了电梯领域的新需求。
现在基于VHDL硬件描述语言,用FPGA为控制芯片控制完成一个简单的6层楼的电梯控制系统设计。
我们常见的电梯控制系统功能都包括:上升请求、下降请求、电梯门控、楼层显示灯、电梯运动方向显示、超载、报警、电梯请求信号等。
根据这些常用的信号设计一个电梯系统,实现所要求的功能。
控制方式的选择:1)部请求优先控制方式部请求控制方式类似于出租车的工作方式,先将车上的人送至目地,再去载客。
作为通用型电梯应该服务于大多数人,必须考虑电梯对外请求的响应。
在部请求优先控制方式中,当电梯外部人的请求和电梯部人的请求冲突时,外部人的请求信号可能被长时间忽略,因为它不能作为通用型电梯的设计方案。
2)单层层停控制方案单层层停控制方式等同于火车运行方式,遇到站即停止、开门。
这种方案保证所有的人的请求都能得到响应。
然而这样对电梯的效率产生了消极的影响:不必要的等待消耗了大量时间,而且电梯的运作与用户的请求无关,当无请求时电梯也照常跑空车,浪费了大量的电能。
对于用户而言这种控制方式的请求响应时间也不是很快,因而也不是理想的电梯控制设计方案。
3)方向优先控制式方式方案方向优先控制是指电梯运行到某一层楼时,先考虑这一层楼是否有请求:有则停止;无则继续上升或者下降。
停止后再启动时,考虑上方或者下方是否有请求,有则继续前进,无则停止。
检测后方是否有请求,有请求则转向运行,无请求则维持停止状态。
这种运作方式下,电梯对用户的请求相应率为100%,而且响应的时间较短。
方向优先控制方式的效率远远大于单向层层停等控制方式的效率。
而且,方向控制方式下,电梯在维持停止状态的时候可以进入省电模式,又能节省大量的电能。
在本设计中采用方向优先控制方式。
基于VHDL的电梯控制系统设计
VHDL数字系统设计与测试实验报告基于VHDL的电梯控制系统设计一、设计背景及说明随着高层建筑的不断涌现,对电梯的需求也与日俱增,电梯已经成为我们日常生活中不可缺少的部分,稳定可靠性高的电梯系统成为了电梯领域的新需求。
现在基于VHDL硬件描述语言,用FPGA为控制芯片控制完成一个简单的6层楼的电梯控制系统设计。
我们常见的电梯控制系统功能都包括:上升请求、下降请求、电梯门控、楼层显示灯、电梯运动方向显示、超载、报警、电梯内请求信号等。
根据这些常用的信号设计一个电梯系统,实现所要求的功能。
控制方式的选择:1)内部请求优先控制方式内部请求控制方式类似于出租车的工作方式,先将车上的人送至目地,再去载客。
作为通用型电梯应该服务于大多数人,必须考虑电梯对内外请求的响应。
在内部请求优先控制方式中,当电梯外部人的请求和电梯内部人的请求冲突时,外部人的请求信号可能被长时间忽略,因为它不能作为通用型电梯的设计方案。
2)单层层停控制方案单层层停控制方式等同于火车运行方式,遇到站即停止、开门。
这种方案保证所有的人的请求都能得到响应。
然而这样对电梯的效率产生了消极的影响:不必要的等待消耗了大量时间,而且电梯的运作与用户的请求无关,当无请求时电梯也照常跑空车,浪费了大量的电能。
对于用户而言这种控制方式的请求响应时间也不是很快,因而也不是理想的电梯控制设计方案。
3)方向优先控制式方式方案方向优先控制是指电梯运行到某一层楼时,先考虑这一层楼是否有请求:有则停止;无则继续上升或者下降。
停止后再启动时,考虑上方或者下方是否有请求,有则继续前进,无则停止。
检测后方是否有请求,有请求则转向运行,无请求则维持停止状态。
这种运作方式下,电梯对用户的请求相应率为100%,而且响应的时间较短。
方向优先控制方式的效率远远大于单向层层停等控制方式的效率。
而且,方向控制方式下,电梯在维持停止状态的时候可以进入省电模式,又能节省大量的电能。
在本设计中采用方向优先控制方式。
VHDL课程设计报告_硬件描述语言课程设计
各专业全套优秀毕业设计图纸湖南科技大学信息与电气工程学院《课程设计报告》题目:硬件描述语言课程设计专业:电子信息工程班级:三班姓名:学号: 1204030xx指导教师:2015 年 1月 12 日信息与电气工程学院课程设计任务书2014—2015 学年第 1 学期专业:学号:姓名:课程设计名称:设计题目:完成期限:自年月日至年月日共周设计依据、要求及主要内容(可另加附页):指导教师(签字):批准日期:年月日摘要在目前,可编程逻辑器件、单片机、DSP已经成为数字系统的硬件基础,而从事数字系统的设计必须掌握可编程逻辑器件的设计方法,而VHDL语言是一种标准的数字系统硬件电路设计语言,为所有可编程逻辑器件厂商所支持,已成为电路设计人员和电子设计工程师必须掌握的工具。
VHDL语言是培养信息类专门人才的一门必修的专业基础课程。
通过本次课程设计,使我们能够学习和掌握现代电子系统设计的新技术、新器件,掌握硬件描述语言VHDL的编程技术和硬件描述方法,能够对设计系统进行规范描述掌握相关软件的使用,操作。
能对VHDL 语言程序进行编译,调试,以及通过计算机仿真,得到正确的仿真波形图,并根据所得仿真波形图分析判断并改进所设计的电路。
本次课程设计设计主要使用了VHDL语言,采用的开发软件是MAXPLUS II,设计一个多功能数字钟。
在MAXPLUS II开发平台下进行了编译、仿真、下载,实现了基本记时显示和设置、调整时间、报时和闹钟功能。
(注意,仅供参考,可以根据自己的具体设计来写,多写一点)关键词:EDA;VHDL ;Max+plus II;目录1.设计目的 (1)2.设计内容 (1)3.电路工作原理 (1)3.1循环彩灯控制器 (1)3.2五人多数表决器 (1)4.主要程序和仿真结果 (1)4.1循环彩灯控制器 (1)4.2五人多数表决器 (1)5.心得体会 (1)参考文献 (1)1.设计目的1. 熟练掌握相关软件的使用,操作。
vhdl课程设计报告
一、设计目的本课程设计的目的是熟练掌握相关软件的使用和操作。
能对VHD1语言程序进行编译,调试,以及通过计算机仿真,得到正确的仿真波形图,并根据所得仿真波形图分析判断并改进所设计的电路。
在成功掌握软件操作基础上,将所数字电路的基础课知识与VHD1语言的应用型知识结合起来并与实际设计,操作联系起来,即“理论联系实际:深入了解VHD1语言的作用与价值,对用硬件语言设计一个电路系统开始具备一个较完整的思路与较专业的经验。
对EDA技术有初步的认识,并开始对EDA技术的开发创新有初步的理解。
二、设计内容及操作1、设计循环彩灯控制器1.1设计内容设计一个循环彩灯控制器,该控制器控制红,绿,黄三个发光管循环点亮。
要求红发光管亮3秒,绿发光管亮2秒,黄发光管亮1秒。
1.2程序设计1IBRARYIEEE;USEIEEE.STD_10GIC_1164.A11;USEIEEE.STD_1OGIC_UNSIGNED.A11;ENTITYcaideng_2ISPORT(e1k:INSTD_1OGIC;red,green,ye11ow:OUTSTD1OGIC);ENDENTITYCaideng_2;ARCHITECTUREexamp1eOFcaideng_2ISSIGNA1dout:STD_1OGIC_VECTOR(2DoWNTO0);SIGNA1m:STD_10GIC_VECT0R(2DOWNTO0);BEGINred<=dout(2);green<=dout(1);ye11ow<=dout(0);PROCESS(e1k)ISBEGINIF(c1k,EVENTANDC1k=T')THENIF(In="110")THENm<="001";E1SEm<=m+1;ENDIF;CASEmISWHEN"001"=〉dout<=〃100〃;WHEN"010"=>dout<=T00";WHEN,/0ir=>dout<="100";WHEN"100"=>dout<="010";WHEN"101"=>dout<="010";WHEN"110"=>dout<="001";WHENOTHERS=>dout<="000";ENDCASE;ENDIF;ENDPROCESS;ENDARCHITECTURE;1.3仿真波形图14波形图分析在仿真时已经设置好开始时间和结束时间,根据以上的波形图可知,当e1k 信号处于高电平(高低电平可以根据自己所设计的情况自己定义),红发光管最先亮灯(高电平表示亮灯),时间为3s,3s之后绿发光管开始亮灯2s,2s结束黄发光管亮1s,以此循环亮灯,直到仿真结束时间。
8层电梯课程设计
8层电梯课程设计一、课程目标知识目标:1. 学生能够理解8层电梯的基本结构及其工作原理。
2. 学生能够掌握电梯运行的数学模型,包括速度、时间和距离的关系。
3. 学生能够运用比例和百分比知识分析电梯的能耗和效率。
技能目标:1. 学生能够运用物理知识解释电梯的加速和减速过程。
2. 学生能够设计简单的电梯运行程序,模拟电梯的实际运行。
3. 学生通过小组合作,解决电梯运行中可能遇到的问题,提升问题解决能力。
情感态度价值观目标:1. 学生能够培养对工程技术和数学建模的兴趣,增强学习动力。
2. 学生通过学习电梯相关知识,认识到科技在日常生活中的重要作用,提升创新意识。
3. 学生通过合作学习,培养团队精神,增强沟通协作能力。
4. 学生能够关注电梯安全问题,树立安全意识和社会责任感。
二、教学内容本节课以《物理》教材中“机械运动”章节为基础,结合《数学》教材中“比例和百分比”知识,设计以下教学内容:1. 电梯基本结构:介绍电梯的组成,包括电动机、对重、钢丝绳、轿厢、控制系统等。
2. 电梯工作原理:讲解电梯的加速、匀速、减速运动及其与重力和电动机之间的关系。
3. 数学模型:运用比例和百分比知识,分析电梯速度、时间和距离的关系,推导出电梯运行的数学公式。
4. 电梯能耗与效率:讨论不同载重和运行速度下电梯的能耗,引导学生运用数学知识计算电梯的能效。
5. 实践操作:分组设计简单的电梯运行程序,模拟电梯的实际运行,培养学生动手能力和团队协作能力。
教学进度安排:第一课时:介绍电梯基本结构和工作原理,让学生对电梯有整体的认识。
第二课时:讲解数学模型,引导学生运用比例和百分比知识分析电梯运动。
第三课时:讨论电梯能耗与效率,让学生了解电梯在实际运行中的节能措施。
第四课时:实践操作,分组设计电梯运行程序,巩固所学知识。
教学内容与教材紧密相关,旨在帮助学生系统掌握电梯相关知识,提高综合运用能力。
三、教学方法针对本节课的教学目标和内容,采用以下多样化的教学方法,以激发学生的学习兴趣和主动性:1. 讲授法:通过生动的语言和形象的比喻,讲解电梯的基本结构和工作原理,使学生在短时间内掌握核心概念。
八层电梯系统课程设计
八层电梯系统课程设计一、课程目标知识目标:1. 学生能理解并掌握八层电梯系统的基本构成和运作原理;2. 学生能够运用物理知识,分析电梯运动中的能量转换和力学问题;3. 学生能了解电梯控制系统的工作原理,并掌握其安全运行的相关知识。
技能目标:1. 学生能够运用所学的电梯系统知识,解决实际生活中的电梯问题;2. 学生通过小组合作,设计并优化八层电梯的运行方案,提高问题解决能力;3. 学生能够运用信息技术工具,对电梯系统进行模拟和测试。
情感态度价值观目标:1. 学生培养对电梯工程技术的兴趣,激发学习热情;2. 学生认识到电梯安全的重要性,增强安全意识和责任感;3. 学生在团队合作中,培养沟通与协作能力,树立集体荣誉感。
课程性质:本课程为应用物理知识与实践相结合的课程,注重培养学生的实际操作能力和问题解决能力。
学生特点:八年级学生对物理知识有一定的了解,具备一定的探究能力,对实际生活中的工程技术问题充满好奇。
教学要求:结合学生特点,课程要求教师在传授知识的同时,注重培养学生的动手能力、思考能力和创新能力。
通过课程学习,使学生能够将理论知识与实际应用相结合,提高综合素养。
教学过程中,注重引导学生主动参与,发挥学生的主体作用。
二、教学内容1. 电梯系统基础知识:- 电梯的构成及功能;- 电梯运动原理及力学分析;- 电梯能源转换与节能技术。
2. 电梯控制系统:- 电梯控制系统的基本构成;- 电梯运行中的信号传输与处理;- 电梯安全保护装置及其作用。
3. 电梯设计与优化:- 八层电梯运行方案设计;- 电梯运行速度与加速度的计算;- 电梯运行能耗分析与优化。
4. 实践操作与模拟:- 电梯模型制作与调试;- 电梯控制系统编程与仿真;- 电梯运行故障排查与维修。
教学内容安排与进度:第一周:电梯基础知识学习,引导学生了解电梯的构成和运动原理;第二周:电梯控制系统学习,分析电梯运行中的信号传输与处理;第三周:电梯设计与优化,小组合作完成八层电梯运行方案设计;第四周:实践操作与模拟,进行电梯模型制作、编程与仿真测试。
电梯控制系统VHDL课程设计
电梯控制系统VHDL课程设计一、课程目标知识目标:1. 学生能理解电梯控制系统的基本原理,掌握VHDL语言在电梯控制系统中的应用;2. 学生能运用VHDL语言编写简单的电梯控制程序,实现电梯的基本功能,如楼层召唤、楼层到达等;3. 学生了解电梯控制系统的模块化设计,掌握模块之间的通信与协同工作原理。
技能目标:1. 学生能够运用所学知识,设计并实现一个简单的电梯控制系统;2. 学生通过课程学习,培养解决实际问题的能力,提高逻辑思维和编程技能;3. 学生能够利用仿真工具对电梯控制系统进行测试与优化。
情感态度价值观目标:1. 学生培养对电子工程领域的兴趣,激发创新精神,提高自主学习能力;2. 学生通过课程学习,认识到团队合作的重要性,培养团队协作精神;3. 学生能够关注电梯控制系统在现实生活中的应用,理解技术发展对社会进步的推动作用。
课程性质:本课程为电子工程专业高年级的实践课程,旨在通过电梯控制系统的设计,帮助学生巩固VHDL语言知识,提高实际工程应用能力。
学生特点:学生具备一定的电子工程基础和VHDL编程经验,具有较强的学习能力和动手能力。
教学要求:教师需引导学生将理论知识与实际应用相结合,注重培养学生的实践能力和团队合作精神,提高学生的综合素质。
通过课程目标的分解与实现,使学生在实践中掌握电梯控制系统的设计方法。
二、教学内容1. 电梯控制系统原理回顾:讲解电梯控制系统的基本组成、工作原理及功能模块划分,对应教材第3章;2. VHDL语言基础:复习VHDL的基本语法、数据类型、信号与变量等概念,对应教材第2章;3. 电梯控制系统模块设计:分析电梯控制系统的各个功能模块,如楼层召唤、楼层显示、电梯运行控制等,对应教材第4章;- 楼层召唤模块:设计并实现楼层召唤信号的检测与处理;- 楼层显示模块:设计并实现楼层显示功能;- 电梯运行控制模块:设计并实现电梯运行方向与速度的控制;4. VHDL代码编写与仿真:根据设计要求,运用VHDL语言编写各模块程序,利用仿真工具进行测试与验证,对应教材第5章;5. 电梯控制系统整体设计与实现:将各个模块整合,完成电梯控制系统的整体设计,进行系统级仿真与优化,对应教材第6章;6. 课程项目实践:学生分组进行电梯控制系统的设计、编程、仿真及测试,培养团队协作能力和实际工程应用能力。
八层货梯的数电课程设计
八层货梯的数电课程设计一、课程目标知识目标:1. 让学生掌握数字电路基础知识,理解八层货梯中涉及的逻辑门、触发器、计数器等组件的工作原理。
2. 使学生能够运用数字电路知识,分析并设计简单的货梯控制系统。
3. 帮助学生了解数字电路在实际工程中的应用,如货梯控制系统的设计。
技能目标:1. 培养学生运用所学数字电路知识,解决实际问题的能力。
2. 提高学生动手实践能力,能够搭建简单的货梯控制系统模型。
3. 培养学生团队协作能力,通过小组合作完成课程项目。
情感态度价值观目标:1. 培养学生对数字电路的兴趣,激发他们学习相关学科的热情。
2. 培养学生严谨的科学态度,注重实际问题的解决。
3. 增强学生的社会责任感,让他们认识到科技在生活中的重要作用。
课程性质:本课程为电子技术专业课程,以理论教学和实践操作相结合的方式进行。
学生特点:八年级学生具有一定的电子技术基础,对新鲜事物充满好奇,喜欢动手实践。
教学要求:注重理论与实践相结合,充分调动学生的主观能动性,提高他们的实际操作能力。
通过课程学习,使学生在掌握知识的同时,提高技能和情感态度价值观。
将课程目标分解为具体的学习成果,以便于教学设计和评估的实施。
二、教学内容1. 数字电路基础知识回顾:逻辑门、逻辑函数、触发器、计数器等基本概念和工作原理。
2. 货梯控制系统分析:介绍货梯的基本工作原理,分析数字电路在货梯控制系统中的应用。
3. 教学大纲:a. 第一周:数字电路基础知识复习,以教材第1章为基础,侧重于逻辑门和触发器的原理及应用。
b. 第二周:学习计数器原理,以教材第2章为基础,结合货梯层数控制需求,探讨计数器的应用。
c. 第三周:分析货梯控制系统实例,以教材第3章为基础,学习系统设计方法和步骤。
d. 第四周:分组进行课程项目设计,每组设计一个简单的货梯控制系统,包括电路图绘制和模型搭建。
4. 实践教学内容:a. 动手搭建逻辑门、触发器等基本数字电路。
b. 设计并搭建一个具有简单层数控制功能的货梯模型。
基于VHDL的电梯控制系统设计
VHDL数字系统设计与测试实验报告基于VHDL的电梯控制系统设计一、设计背景及说明随着高层建筑的不断涌现,对电梯的需求也与日俱增,电梯已经成为我们日常生活中不可缺少的部分,稳定可靠性高的电梯系统成为了电梯领域的新需求。
现在基于VHDL硬件描述语言,用FPGA为控制芯片控制完成一个简单的6层楼的电梯控制系统设计。
我们常见的电梯控制系统功能都包括:上升请求、下降请求、电梯门控、楼层显示灯、电梯运动方向显示、超载、报警、电梯内请求信号等。
根据这些常用的信号设计一个电梯系统,实现所要求的功能。
控制方式的选择:1)内部请求优先控制方式内部请求控制方式类似于出租车的工作方式,先将车上的人送至目地,再去载客。
作为通用型电梯应该服务于大多数人,必须考虑电梯对内外请求的响应。
在内部请求优先控制方式中,当电梯外部人的请求和电梯内部人的请求冲突时,外部人的请求信号可能被长时间忽略,因为它不能作为通用型电梯的设计方案。
2)单层层停控制方案单层层停控制方式等同于火车运行方式,遇到站即停止、开门。
这种方案保证所有的人的请求都能得到响应。
然而这样对电梯的效率产生了消极的影响:不必要的等待消耗了大量时间,而且电梯的运作与用户的请求无关,当无请求时电梯也照常跑空车,浪费了大量的电能。
对于用户而言这种控制方式的请求响应时间也不是很快,因而也不是理想的电梯控制设计方案。
3)方向优先控制式方式方案方向优先控制是指电梯运行到某一层楼时,先考虑这一层楼是否有请求:有则停止;无则继续上升或者下降。
停止后再启动时,考虑上方或者下方是否有请求,有则继续前进,无则停止。
检测后方是否有请求,有请求则转向运行,无请求则维持停止状态。
这种运作方式下,电梯对用户的请求相应率为100%,而且响应的时间较短。
方向优先控制方式的效率远远大于单向层层停等控制方式的效率。
而且,方向控制方式下,电梯在维持停止状态的时候可以进入省电模式,又能节省大量的电能。
在本设计中采用方向优先控制方式。
VHDL课程设计报告
VHDL课程设计报告湖南科技⼤学信息与电⽓⼯程学院课程设计任务书20 —20 学年第学期专业:学号:姓名:课程设计名称:设计题⽬:完成期限:⾃年⽉⽇⾄年⽉⽇共周设计依据、要求及主要内容(可另加附页):指导教师(签字):批准⽇期:年⽉⽇⽬录⼀、摘要⼆、VHDL语⾔介绍三、设计的⽬的四、设计内容五、电路⼯作原理六、主要程序及仿真结果七、对本次设计的体会和建议⼋、参考⽂献⼀、摘要⼈类社会已进⼊到⾼度发达的信息化社会。
信息化社会的发展离不开电⼦信息产品开发技术、产品品质的提⾼和进步。
电⼦信息产品随着科学技术的进步,其电⼦器件和设计⽅法更新换代的速度⽇新⽉异。
实现这种进步的主要原因就是电⼦设计技术和电⼦制造技术的发展,其核⼼就是电⼦设计⾃动化(EDA,Electronics Design Automation)技术,EDA技术的发展和推⼴应⽤⼜极⼤地推动了电⼦信息产业的发展。
为保证电⼦系统设计的速度和质量,适应“第⼀时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的⼀项先进技术和重要⼯具。
⽬前,在国内电⼦技术教学和产业界的技术推⼴中已形成“EDA热”,完全可以说,掌握EDA技术是电⼦信息类专业学⽣、⼯程技术⼈员所必备的基本能⼒和技能。
EDA技术在电⼦系统设计领域越来越普及,本设计主要利⽤VHDL语⾔设计⼀个电⼦数字钟,它的计时周期为24⼩时,显⽰满刻度为24时59分59秒。
总的程序由⼏个各具不同功能的单元模块程序拼接⽽成,其中包括分频程序模块、时分秒计数和设置程序模块、⽐较器程序模块、三输⼊数据选择器程序模块、译码显⽰程序模块和拼接程序模块。
并且使⽤软件进⾏电路波形仿真。
关键词:数字钟EDA VHDL语⾔⼆、VHDL语⾔介绍1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语⾔。
⾃IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了⾃⼰的VHDL 设计环境,或宣布⾃⼰的设计⼯具可以和VHDL接⼝。
VHDL数字电路课程实验报告
VHDL数字电路课程实验报告实验一8分频器一、实验要求:分别用信号量和变量实现八分频器二、实验过程:1、代码:8分频器vhdlibrary ieee;use ieee.std_logic_1164.all;entity freq_divider isport(clk: in std_logic;out1, out2: buffer bit);end freq_divider;architecture example of freq_divider issignal count1: integer range 0 to 7;beginprocess(clk)variable count2: integer range 0 to 7;beginif(clk'event and clk='1') thencount1<=count1+1;count2:=count2+1;if(count1=3) thenout1<=not out1;count1<=0;end if;if(count2=4) thenout2<=not out2;count2:=0;end if;end if;end process;end example;八分频器tbLIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY fd_tb isEND fd_tb;architecture behavior of fd_tb iscomponent freq_dividerport(clk:IN STD_LOGIC;out1, out2: buffer bit);end component;signal clk:std_logic;signal out1,out2:bit;beginu1: freq_divider port map(clk,out1,out2);processbeginclk<='0';wait for 50 ns;loopclk<=not clk;wait for 25 ns;end loop;end process;end behavior;2、结果图:实验二实现例8.6一、实验要求:电路只有一个输入时钟信号,输出信号在适中的两个边沿都会发生变化二、实验内容:1、代码信号发生器vhdENTITY signal_gen ISPORT (clk: IN BIT;outp: OUT BIT);END signal_gen;ARCHITECTURE fsm OF signal_gen ISTYPE state IS (one, two, three);SIGNAL pr_state1, nx_state1: state;SIGNAL pr_state2, nx_state2: state;SIGNAL out1, out2: BIT;BEGINPROCESS(clk)BEGINIF (clk'EVENT AND clk = '1') THENpr_state1 <= nx_state1;END IF;END PROCESS;PROCESS (clk)BEGINIF (clk'EVENT AND clk = '0') THENpr_state2 <= nx_state2;END IF;END PROCESS;PROCESS (pr_state1)BEGINCASE pr_state1 ISWHEN one =>out1 <= '0';nx_state1 <= two;WHEN two =>out1 <= '1';nx_state1 <= three;WHEN three =>out1 <= '1';nx_state1 <= one;END CASE;END PROCESS;PROCESS (pr_state2)BEGINCASE pr_state2 ISWHEN one =>out2 <= '1';nx_state2 <= two;WHEN two =>out2 <= '0';nx_state2 <= three;WHEN three =>out2 <= '1';nx_state2 <= one;END CASE;END PROCESS;outp <= out1 AND out2;END fsm;信号发生器tbentity tb_fsm isend tb_fsm;architecture behavior of tb_fsm is component signal_gen isport( clk: in bit;outp: out bit);end component;signal clk,outp:bit;beginu1: signal_gen port map(clk,outp); processbeginclk<='0';wait for 20 ns;loopclk<=not clk;wait for 10 ns;end loop;end process;end behavior;2、结果图实验三常数比较器一、实验要求常数比较器,用于比较的变量位宽应大于等于常数二、实验内容1、代码常数比较器vhdLIBRARY ieee;USE ieee.std_logic_1164.all;entity compare isport(b: in integer range 0 to 15;x1,x2,x3: out std_logic);end compare;architecture compare of compare isconstant a: integer:=10;beginx1<='1' when a>b else '0';x2<='1' when a=b else '0';x3<='1' when a<b else '0';end compare;常数比较器tbLIBRARY ieee;USE ieee.std_logic_1164.all;entity tb_compare isend tb_compare;architecture behavior of tb_compare iscomponent compareport(b: in integer range 0 to 15;x1,x2,x3: out std_logic);end component;signal b: integer;signal x1,x2,x3: std_logic;beginu1: compare port map(b, x1,x2,x3);processbeginb<=5; wait for 10 ns;b<=8; wait for 10 ns;b<=10; wait for 10 ns;b<=13; wait for 10 ns; b<=10; wait for 10 ns; b<=3; wait for 10 ns; end process;end behavior;2、结果图实验四序列检测器一、实验要求序列检测’1001’弱检测到,输出‘1‘,否则输出’0‘二、实验内容1、状态图2、代码序列检测器vhdlibrary ieee;use ieee.std_logic_1164.all;entity string_detector isport(datain,clk: in bit;q: out bit);end string_detector;architecture sd of string_detector istype state is (zero, one, two, three, four);signal pr_state, nx_state: state;beginprocess(clk)beginif(clk'event and clk='1') thenpr_state<=nx_state;end if;end process;process(datain, pr_state)begincase pr_state iswhen zero=>q<='0';if(datain='1') then nx_state<=one;else nx_state<=zero;end if;when one=>q<='0';if(datain='0') then nx_state<=two;else nx_state<=zero;end if;when two=>q<='0';if(datain='0') then nx_state<=three;else nx_state<=zero;end if;when three=>q<='0';if(datain='1') then nx_state<=four;else nx_state<=zero;end if;when four=>q<='1';nx_state<=zero;end case;end process;end sd;序列检测器tb------------------------------------------------------------------ library ieee;use ieee.std_logic_1164.all;------------------------------------------------------------------ entity testBench isend testBench;------------------------------------------------------------------architecture test of testBench iscomponent string_detector isport(datain,clk: in bit;q: out bit);end component;signal datain,clk:bit;signal q:bit;beginSD: string_detector port map(datain,clk,q);processbeginfor i in 0 to 100 loopclk<='0';wait for 10 ns;clk<='1';wait for 10 ns;end loop;end process;processbegindin<='1';wait for 20ns;din<='0';wait for 20ns;din<='0';wait for 20ns;din<='0';wait for 20ns;din<='1';wait for 20ns;din<='0';wait for 20ns;din<='0';wait for 20ns;din<='1';wait for 20ns;din<='0';wait for 20ns;din<='1';wait for 20ns;din<='0';wait for 20ns;end process;end test;3、结果图。
vhdl课程设计电梯
vhdl课程设计电梯一、教学目标本节课的教学目标是使学生掌握VHDL语言的基本知识,能够使用VHDL语言设计并实现一个简单的电梯控制系统。
具体来说,知识目标包括理解VHDL语言的基本语法、数据类型和信号处理方法;技能目标包括能够使用VHDL语言编写电梯控制系统的代码、进行仿真和测试;情感态度价值观目标包括培养学生对电子工程领域的兴趣,增强其创新意识和团队协作能力。
二、教学内容本节课的教学内容主要包括VHDL语言的基本语法、数据类型和信号处理方法,以及电梯控制系统的原理和设计。
具体来说,将讲解VHDL语言的基本结构和关键字,介绍数据类型和信号处理方法的应用,并通过实例展示如何使用VHDL语言设计电梯控制系统的各个模块。
此外,还将介绍电梯控制系统的原理和运行方式,并让学生进行实际操作,以加深对电梯控制系统的理解和掌握。
三、教学方法本节课将采用讲授法、案例分析法和实验法相结合的教学方法。
首先,通过讲授法向学生介绍VHDL语言的基本语法和数据类型,使学生掌握VHDL语言的基本知识;其次,通过案例分析法讲解信号处理方法的应用,让学生在实际案例中学习和理解信号处理方法;最后,通过实验法让学生动手设计并实现电梯控制系统的各个模块,培养学生的实际操作能力和创新意识。
四、教学资源本节课的教学资源包括教材、参考书、多媒体资料和实验设备。
教材和参考书将提供VHDL语言的基本知识和电梯控制系统的原理;多媒体资料将展示电梯控制系统的实际运行情况,帮助学生更好地理解电梯控制系统的原理和运行方式;实验设备将用于让学生进行实际操作,培养其实际操作能力和创新意识。
五、教学评估本节课的教学评估将采用多元化的评估方式,包括平时表现、作业和考试等。
平时表现评估将关注学生在课堂上的参与程度、提问回答和团队协作等情况,以全面了解学生的学习态度和积极性。
作业评估将根据学生提交的VHDL代码和电梯控制系统设计报告,评价其对VHDL语言的掌握程度和实际设计能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京工业大学VLSI版图设计课程设计报告姓名:学号:月10 年2014八层电梯vhdl实现课程设计报告目录目录目录 (1)1绪论 (3)1.1集成电路的前世今生 (3)1.1.1集成电路出现 (3)1.1.2集成电路的现状 (3)1.2VHDL语言简介 (5)2课题功能设计与仿真 (6)2.1课设设计思路和模块划分 (6)2.1.1课设主要功能 (6)2.1.2课设设计思路 (6)2.1.3课设模块划分 (6)2.2主程序模块(dt.vhd)功能设计与仿真 (7)2.2.1输入输出管脚及程序中定义变量介绍 (7)2.2.2设计原理 (7)2.2.3主程序模块(dt.vhd)原程序 (9)2.2.4主程序模块(dt_t.vhd)测试程序 (16)2.3电梯所在楼层七段数码显示模块(seg.vhd)功能设计与仿真 (17)2.3.1输入输出管脚及程序中定义变量介绍 (17)2.3.1设计原理 (17)2.3.2电梯所在楼层七段数码显示模块(seg.vhd)原程序 (18)2.3.3电梯所在楼层七段数码显示模块(seg_t.vhd)测试程序 (18)2.4电梯运行状态数码点阵显示模块(dian.vhd)功能设计与仿真 (19)2.4.1输入输出管脚及程序中定义变量介绍 (19)2.4.2设计原理 (20)2.4.3电梯运行状态数码点阵显示模块(dian.vhd)原程序 (20)2.4.4电梯运行状态数码点阵显示模块(dian_t.vhd)测试程序 (21)2.5顶层综合程序(top.vhd) (22)2.5.1综合程序(top.vhd)连线图 (22)2.5.2综合程序(top.vhd)原程序 (22)2.5.3综合程序(top_t.vhd)测试程序 (25)3课题设计实现 (27)3.1各个模块仿真波形截图 (27)3.1.1主程序模块仿真波形图 (27)1八层电梯vhdl实现课程设计报告3.1.2电梯所在楼层七段数码显示模块仿真波形图 (28)3.1.3电梯运行状态数码点阵显示模块仿真波形图 (28)3.1.4顶层综合程序仿真波形图 (29)3.2Dc和icc仿真图 (30)3.2.1Dc仿真图 (30)3.2.2Icc仿真图 (32)4附:篮球三十秒原程序和仿真截图 (33)4.1设计要求 (33)4.2原程序与仿真程序 (33)4.2.1主程序(cnt30.vhd) (33)4.2.2主程序测试程序(cnt30_t.vhd) (34)4.2.3七段译码显示程序(disp.vhd) (35)4.2.4七段译码显示仿真程序(disp_t.vhd) (35)4.2.5顶层综合程序(top.vhd) (36)4.2.6顶层综合测试程序(top_t.vhd) (37)4.3测试仿真波形图 (38)5总结与体会 (40)参考文献 (41)2八层电梯vhdl实现课程设计报告1 绪论随着晶体管的出现,集成电路随之产生,并极大地降低了电路的尺寸和成本。
而由于追求集成度的提高,渐渐设计者不得不利用EDA、CAD工具设计集成电路的版图,这样大大提高了工作效率。
1982年诞生了VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)语言,而如今,在电子工程领域,VHDL已成为事实上的通用硬件描述语言。
本文主要介绍一种基于VHDL 语言的八层电梯设计。
1.1 集成电路的前世今生1.1.1集成电路出现集成电路(英语:integrated circuit, IC)、或称微电路(microcircuit)、微芯片(microchip)、芯片(chip)在电子学中是一种把电路(主要包括半导体设备,也包括被动组件等)小型化的方式,并通常制造在半导体晶圆表面上。
二十世纪中期前,在爱迪生效应的启发下,一些科学家发明了真空二极管、三极管,接着真空管得到了一些实际的应用,但是由于其体积巨大,不利于大规模电路的应用,而随着时代的发展,大规模电路的出现成为了必然,于是人们寻找另一种体积小又与电子管功能一样的器件。
1947年,约翰·巴丁、沃尔特·布喇顿和威廉·肖克利终于发明了晶体管,其中巴丁、布喇顿主要发明半导体三极管;肖克利则是发明PN二极管。
晶体管被认为是现代历史中最伟大的发明之一,在重要性方面可以与印刷术,汽车和电话等发明相提并论。
晶体管在当今社会的重要性主要是因为晶体管可以使用高度自动化的过程进行大规模生产的能力,因而可以不可思议地达到极低的单位成本。
晶体管发明并大量生产之后,其得到了大量的应用,从而取代了体积庞大的真空管在电路中的功能和角色。
与真空管相比,晶体管的体积明显缩小,而且速度也和快,功耗也比较低。
因为晶体管的低成本和后来的电子计算机,数字化信息的浪潮来到了。
由于晶体管体积较小,一些科学家想到了将其集成在一个电路上或者一块硅片上的思想。
随着20世纪中后期半导体制造技术进步,1958年杰克?基尔比发明了第一个集成电路。
其中包括一个双极性晶体管,三个电阻和一个电容器,相较于现今科技的尺寸来讲,体积相当庞大。
虽然如此,但是它的出现也是具有重要的意义的。
1.1.2集成电路的现状从杰克·基尔比发明了第一个集成电路到如今,集成电路的发展在摩尔定理的引导下已经发展到了一个新的高度,电子电路的设计越来越趋向于小型化和高3 vhdl实现课程设计报告八层电梯速化,越来越多的应用已经由复杂的模拟电路转化为简单的数字逻辑集成电路。
根据一个芯片上集成的微电子器件的数量,集成电路可以分为以下几类:小规模集成电路(SSI 英文全名为Small Scale Integration, 逻辑门10个以下或晶体管100个以下)、中规模集成电路(MSI 英文全名为 Medium Scale Integration, 逻)、大规模集成电路(LSI 英文全名为Large 个101~1k或晶体管辑门11~100个Scale Integration, 逻辑门101~1k个或晶体管1,001~10k个)、超大规模集成电路(VLSI 英文全名为Very large scale integration, 逻辑门1,001~10k个或晶体管10,001~100k个)、甚大规模集成电路(ULSI 英文全名为Ultra Large Scale Integration, 逻辑门10,001~1M个或晶体管100,001~10M个)。
而根据处理信号的不同,可以分为模拟集成电路、数字集成电路、和兼具模拟与数字的混合信号集成电路。
仅仅在其开发后半个世纪,集成电路变得无处不在,电脑,手机和其他数字电器成为现代社会结构不可缺少的一部分。
这是因为,现代计算,交流,制造和交通系统,包括互联网,全都依赖于集成电路的存在。
甚至很多学者认为有集成电路带来的数字革命是人类历史中最重要的事件。
IC的成熟将会带来科技的大跃进,不论是在设计的技术上,或是半导体的制程突破,两者都是息息相关。
最先进的集成电路是微处理器或多核处理器的核心,可以控制电脑到手机到数字微波炉的一切。
存储器和特定应用集虽然设计开发一个复杂集成电路的成本非常高,但是当分散到通常以百万计的产品上,每个集成电路的成本最小化。
集成电路的性能很高,因为小尺寸带来短路径,使得低功率逻辑电路可以在快速开关速度应用。
成电路是其他集成电路家族的例子,对于现代信息社会非常重要。
“集成电路中的晶体管数量,每1.5年增加一倍。
”从戈登·摩尔提出这个定理之后,集成电路基本上按照这个趋势进行,但是随着集成度的提高,集成电路的发展必定会遇到瓶颈。
目前集成电路发展道路上存在的一些亟待攻克的问题:器件物理极限问题,光刻工艺问题,互连线限制问题等。
(图1)4八层电梯vhdl实现课程设计报告1.2 VHDL语言简介VHDL全名Very-High-Speed Integrated Circuit Hardware Description Language,诞生于1982年。
1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。
自IEEE-1076(简称87版)之后,各EDA公司相继推出自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。
1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,简称93版。
VHDL和Verilog 作为IEEE的工业标准硬件描述语言,得到众多EDA公司支持,在电子工程领域,已成为事实上的通用硬件描述语言。
VHDL语言是一种用于电路设计的高级语言。
它在80年代的后期出现。
最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。
VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中。
它在中国的应用多数是用在--- VHDL Example当然在一些实力的设计中。
FPGA/CPLD/EPL。
较为雄厚的单位,它也被用来设计ASI library ieee;主要用于描述数字系统的结构,行VHD use ieee.std_logic_1164.all; 为,功能和接口。
除了含有许多具有硬件特-库声明的语言形式、描述风格以及的语句外,VHDL语法是十分类似于一般的计算机高级语言。
entity TONE is的程序结构特点是将一项工程设计,或VHDL称设计实体(可以是一个元件,一个电路模块实体定义port(A,B:in std_logic; --)及端口分成外部(或称可视部分,或一个系统)C:out std_logic);既涉及实体的内部,和内部(或称不可视部分)end TONE;功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他architecture EX of TONE is 的设计就可以直接调用这个实体。
这种将设计--结构体定义系统设计VHDL实体分成内外部分的概念是的基本点。
Begin 具有以与其他硬件描述语言相比,VHDL下特点:功能强大、设计灵活,支持广泛、易C<=A OR B;于修改,强大的系统硬件描述能力,独立于器件的设计、与工艺无关,很强的移植能力,易end EX;于共享和复用。
5八层电梯vhdl实现课程设计报告2 课题功能设计与仿真本章介绍八层电梯的基本原理与设计思路(模块划分),各模块的功能设计与仿真实现。
2.1 课设设计思路和模块划分2.1.1课设主要功能本课设主要要实现的功能是实现八层电梯的功能,即电梯内部有可以选择停靠楼层数的按钮,还有选择后在未完成停靠任务前会一直点亮的灯的功能;电梯外部有本层要上升或者下降请求的按钮;还有标示电梯门开关的指示灯,并且可以设定电梯门从开门到关门的时间;通过七段数码管标示电梯所在位置的功能;通过数码管表示电梯运行状态的功能。