数字系统设计与VHDL课程大作业.docx
- 文档编号:24200097
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:12
- 大小:2.56MB
数字系统设计与VHDL课程大作业.docx
《数字系统设计与VHDL课程大作业.docx》由会员分享,可在线阅读,更多相关《数字系统设计与VHDL课程大作业.docx(12页珍藏版)》请在冰豆网上搜索。
数字系统设计与VHDL课程大作业
数字系统设计与VHDL课程大作业
霓虹灯电路设计
学院:
计算机科学与工程
班级:
计算机科学与技术一班
学号:
1305010126
姓名:
唐艳香
组员:
郑林升,袁博,唐艳香
实验内容:
1)使用平台上的8个七段数码管进行显示,即围绕平台上的8个数码管转圈;
2)要求同时显示的段数为1、2、3段可选;
3)可进行顺向、逆向显示(通过某一开关键进行选择);
4)按下复位键后,重新开始旋转;
5)多种点亮方式自选,如全亮等。
总体模块划分:
1)定义输入输出端;
2)由于只有一个主程序,所有模块都直接添加在里面。
主程序中可看做复位,旋转方向,旋转速度,旋转块数的小程序结合;
3)建立波形图,进行仿真;
4)绑定引脚,下载程序进行测试;
5)修正小bug。
代码实现:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entitywater_lampis
generic(n:
integer:
=60000);
port(clk_sys:
instd_logic;
order:
instd_logic;
k:
instd_logic;
q:
instd_logic;
num:
instd_logic_vector(2downto0);
L:
outstd_logic_vector(7downto0);
LED:
outstd_logic_vector(7downto0));
endwater_lamp;
architectureoneofwater_lampis
signalcnt:
integerrange0ton;
signalcnt1:
integerrange0ton;
signalcnt2:
integerrange0ton;
signalclk_new:
std_logic;
signalcnm:
integerrange19downto0;
signalcnm0:
integerrange19downto0;
signalclk_new1:
std_logic;
signalclk_new2:
std_logic_vector(0to1):
="00";
begin
p1:
process(clk_sys)
begin
ifclk_sys'eventandclk_sys='1'then
ifcnt cnt<=cnt+1; else cnt<=0; clk_new<=notclk_new; endif; endif; endprocessp1; p2: process(clk_new) variableLED_tmp: std_logic_vector(7downto0); begin ifclk_new'eventandclk_new='1'then iforder='0'then ifcnm>0then cnm<=cnm-1; else cnm<=19; endif; else ifcnm<19then cnm<=cnm+1; else cnm<=0; endif; endif; endif; endprocessp2; p3: process(cnm,num,clk_sys,cnt1,cnt2,clk_new2) begin ifnum="001"then cnm0<=cnm; elsifnum="011"then ifclk_sys'eventandclk_sys='1'then ifcnt1 cnt1<=cnt1+1; else cnt1<=0; clk_new1<=notclk_new1; endif; endif; ifclk_new1='0'then cnm0<=cnm; else ifcnm=19then cnm0<=0; else cnm0<=cnm+1; endif; endif; elsifnum="111"then ifclk_sys'eventandclk_sys='1'then ifcnt2 cnt2<=cnt2+1; else cnt2<=0; ifclk_new2="00"then clk_new2<="01"; cnm0<=cnm; elsifclk_new2="01"then clk_new2<="10"; ifcnm=19then cnm0<=0; else cnm0<=cnm+1; endif; elsifclk_new2="10"then clk_new2<="00"; ifcnm=18then cnm0<=0; elsifcnm=19then cnm0<=1; else cnm0<=cnm+2; endif; endif; endif; endif; endif; endprocessp3; p4: process(cnm0) begin ifk='1'then casecnm0is when0=>L<="01111111";LED<="10000000"; when1=>L<="10111111";LED<="10000000"; when2=>L<="11011111";LED<="10000000"; when3=>L<="11101111";LED<="10000000"; when4=>L<="11110111";LED<="10000000"; when5=>L<="11111011";LED<="10000000"; when6=>L<="11111101";LED<="10000000"; when7=>L<="11111110";LED<="10000000"; when8=>L<="11111110";LED<="00000100"; when9=>L<="11111110";LED<="00001000"; when10=>L<="11111110";LED<="00010000"; when11=>L<="11111101";LED<="00010000"; when12=>L<="11111011";LED<="00010000"; when13=>L<="11110111";LED<="00010000"; when14=>L<="11101111";LED<="00010000"; when15=>L<="11011111";LED<="00010000"; when16=>L<="10111111";LED<="00010000"; when17=>L<="01111111";LED<="00010000"; when18=>L<="01111111";LED<="00100000"; when19=>L<="01111111";LED<="01000000"; whenothers=>LED<="00000000"; endcase; elseL<="11111111";LED<="00000000"; endif; ifq='1'thenL<="00000000";LED<="11111111"; endif; endprocessp4; endone; 仿真结果: (缩略图) (展开图) 设计总结及心得体会: 经过将近两周的学习与动手操作,终于将老师所布置的实验完成。 郑林升是我们组的核心开发人员,跟着他一步一步感觉自己涨了很多知识说不累那是骗人的,在期末将近时做这个实验,让我们对以前一些不熟悉的知识点加深一些印象。 也让我们学到了许多新的知识点,比如: 在程序的编写过程中,我们可以利用if语句进行优先级顺序的判断,这一点是用VHDL语言进行设计数字逻辑电路的共同点,也是我们学习过程中必须掌握的内容。 我们刚开始接触到这些东西时,有种无从下手的感觉,虽然学过一些关于这方面的知识,但离实践还差一大截,更何况我们对于这类的编程软件和编程模式完全不熟悉,所以在刚开始编程时,老出现错误,而且哪儿出错也不知道,查了很多资料还是没解决,无奈之下,只能从头开始找寻错误,最后还是郑林升发现是由于软件还没破解才完成整个实验。 在绑定引脚时,没认真看电路板的型号,也没经验,不知道具体电路板要由与之相符打device去匹配,导致在调试电路板时,电路板总不听使唤。 最后在其他组同学帮助下,才知道原来如此。 而且在这次实验中我还了解到了团队合作的重要性,只有团队合作事情才会完成得更轻松,更有趣。 无论如何,追根究底,还是我们自己动手得不够多,准备工作不够充分。 最后,对帮助我们组的同学们致以最衷心的感谢。 附: (实验效果图) 全亮: 开关(旋转): 转速 块数(亮的块数) 反向
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 系统 设计 VHDL 课程 作业