最新EDA课程点阵汇总.docx
- 文档编号:8487972
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:14
- 大小:24.32KB
最新EDA课程点阵汇总.docx
《最新EDA课程点阵汇总.docx》由会员分享,可在线阅读,更多相关《最新EDA课程点阵汇总.docx(14页珍藏版)》请在冰豆网上搜索。
最新EDA课程点阵汇总
EDA课程点阵
北华航天工业学院
课程设计报告(论文)
设计课题:
16*16点阵控制接口设计
专业班级:
学生姓名:
指导教师:
胡辉
设计时间:
2014.12.22
课程设计任务书
课题名称
16X16点阵控制接口设计
完成时间
12.30
指导教师
胡辉
职称
副教授
学生姓名
班级
总体设计要求和技术要点
总体设计要求:
通过本课程的学习使学生掌握可编程器件、EDA开发系统软件、硬件描述语言和电子线路设计与技能训练等各方面知识;提高工程实践能力;学会应用EDA技术解决一些简单的电子设计问题。
技术要点:
1.在时钟信号的控制下,使点阵动态点亮,点亮方式自行设计,其中位选信号为16-4编码器编码输出。
2.设计8位开关控制的8种图案显示。
3.设计4位或4位以上的汉字循环显示,例如“北华航天”。
工作内容及时间进度安排
课程设计成果
1.与设计内容对应的软件程序
2.课程设计报告书
3.成果使用说明书
4.设计工作量要求
2014年12月28日
摘要
本文介绍了一种采用单片FPGA芯片进行16X16LED点阵控制接口电路设计的方法,主要阐述如何使用新兴的EDA器件取代传统的电子设计方法。
LED点阵显示是由8X8、16X16或多个独立的LED封装而成。
LED点阵显示屏可以显示各种数字、汉字或其他字符。
设计使用QuartusII软件,通过VHDL语言的设计,采用动态扫描的显示方法,LED列由4—16译码器控制。
最终通过试验箱实现功能。
关键词:
16X16LED点阵;QuartusII;VHDL;4—16译码器
一、设计原理……………………………………………………………1
一、设计原理
本设计所使用的16×16的点阵,EDA实验箱上有其接口电路,列选信号是由一个4位SEL[3..0]控制经4线16线译码器输出16列;行选信号为L0~L15,是由16个行信号组成的,每一行由一个单独的位来控制,高电平有效。
16×16扫描LED点阵的工作原理同8位扫描数码管类似。
它有16个共阴极输出端口每个共阴极对应有16个LED显示灯,所以其扫描译码地址需4位信号线(SEL0-SEL3),其汉字扫描码由16位地址(0-15)输入。
通过时钟的每列扫描显示完整汉字。
二、设计方案
根据系统设计的要求,设计主要由:
分频器模块、计数器模块(2个)、点阵显示模块等构成。
分频器主要将时钟进行分频产生比原来时钟小得多的另一信号让电路工作。
计数器模块主要在时钟的驱动下为存储器提供扫描地址,实现对点阵模块的控制。
并置模块主要用于将计数器产生的信号并置,从而实现汉字间的循环显示。
点阵模块显示汉字及其他花式。
原理图如下:
三、设计模块
1分频器
分频器将实验箱提供的20MHz的时钟脉冲分为多个较低频率的时钟脉冲,以产生提供给列循环扫描所用的时钟信号和控制图像汉字移动的时钟信号。
计数器1采用clk5分出1.2hz的时钟脉冲,使得汉子1秒转换一次。
计数器2采用clk0分出的1.25mhz的时钟脉冲对每一列扫描,来完成对图形的现实,只要扫描的频率足够快,就能给人以连续的感觉。
因此要控制扫描的频率,不能太低,否则,就会造成视觉上的不连续,本设计的扫描频率不得低于24Hz。
2.计数器及显示
由于设计产生了4种汉字循环滚动,使用拨码开关key0控制显示花样,当key0为1时,“圣诞快乐”四个字循环滚动,当key0为0时,3位拨码开关key1起作用,用来控制8种图案。
四、心得体会
五天的时间虽然很短暂,但在这一段的设计过程中我收获颇多。
整个设计过程中首先让我对EDA有了更深的了解,并且让我对QUARTERSⅡ软件的使用更加熟练。
尤其在编程方面让我有了很大的进步,从只会写一些简单的小程序到这种综合性的设计,我成长了许多,学会了如何使用EDA这门技术。
在编程完毕进行调试时,我们也遇到了一些困难,程序导入后发现和预想的结果有出入,归根结底还是程序编写不合理,通过思考和修改,我们成功的完成了这次课设。
我深知,虽然完成了课程设计的要求,但是我感觉到我对VHDL语言的理解还停留在比较浅的层次,要想真正掌握它还需要继续努力学习它。
五、程序
计数器1
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entityjsqis
port(
clk1:
instd_logic;
key0:
instd_logic;
key:
instd_logic_vector(2downto0);
a:
bufferstd_logic_vector(3downto0)
);
endjsq;
architectureoneofjsqis
begin
process(clk1)
begin--
if(clk1'eventandclk1='1')then
ifkey0='1'then
ifa>=3then
a<="0000";
elsea<=a+1;
endif;
elsifkey0='0'then
casekeyis
when"000"=>a<="0100";
when"001"=>a<="0101";
when"010"=>a<="0110";
when"011"=>a<="0111";
when"100"=>a<="1000";
when"101"=>a<="1001";
when"110"=>a<="1010";
when"111"=>a<="1011";
WHENOTHERS=>NULL;
endcase;
endif;
endif;
endprocess;
endone;
计数器2
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityjsq2is
port(
clk2:
instd_logic;
sao:
bufferstd_logic_vector(3downto0));
endjsq2;
architecturetwoofjsq2is
begin
process(clk2,sao)
begin
if(clk2'eventandclk2='1')then-->25HZ,liesaoxinhao
if(sao=15)then
sao<="0000";
elsesao<=sao+1;
endif;
endif;
endprocess;
endtwo;
显示
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityxsqis
port(m:
instd_logic_vector(3downto0);
n:
instd_logic_vector(3downto0);
l:
outstd_logic_vector(15downto0));
endxsq;
architecturethreeofxsqis
begin
process(m)
begin
casemis
when"0000"=>
casenis
when"1111"=>l<="0000000000000000";
when"1110"=>l<="0000000000000000";
when"1101"=>l<="0001000000000000";
when"1100"=>l<="0001001000000100";
when"1011"=>l<="0001001000001100";
when"1010"=>l<="0001000100010100";
when"1001"=>l<="0001001010100100";
when"1000"=>l<="0001111101000100";
when"0111"=>l<="0001001010100100";
when"0110"=>l<="0001000100010100";
when"0101"=>l<="0001001000001100";
when"0100"=>l<="0001000000000100";
when"0011"=>l<="0001000000000000";
when"0010"=>l<="0000000000000000";
when"0001"=>l<="0000000000000000";
when"0000"=>l<="0000000000000000";
whenothers=>null;
endcase;
when"0001"=>
casenis
when"1111"=>l<="0000000000000000";
when"1110"=>l<="0000000000010100";
when"1101"=>l<="0000000000011000";
when"1100"=>l<="0000111111110000";
when"1011"=>l<="0000010000000000";
when"1010"=>l<="0000101000001000";
when"1001"=>l<="0000010001001000";
when"1000"=>l<="0000101010101000";
when"0111"=>l<="0000100100011000";
when"0110"=>l<="0000100000001000";
when"0101"=>l<="0000101111010000";
when"0100"=>l<="0000101000010000";
when"0011"=>l<="0000101111110000";
when"0010"=>l<="0000101010001000";
when"0001"=>l<="0000101010000000";
when"0000"=>l<="0000000000000000";
whenothers=>null;
endcase;
when"0010"=>
casenis
when"1111"=>l<="0000000000000000";
when"1110"=>l<="0000000000000000";
when"1101"=>l<="0000000011100000";
when"1100"=>l<="0000000000000000";
when"1011"=>l<="0001111111111100";
when"1010"=>l<="0000000011000000";
when"1001"=>l<="0001000000000000";
when"1000"=>l<="0000100010010000";
when"0111"=>l<="0000010010010000";
when"0110"=>l<="0000001111111100";
when"0101"=>l<="0000010010010000";
when"0100"=>l<="0000100010010000";
when"0011"=>l<="0001000011110000";
when"0010"=>l<="0000000010000000";
when"0001"=>l<="0000000000000000";
when"0000"=>l<="0000000000000000";
whenothers=>null;
endcase;
when"0011"=>
casenis
when"1111"=>l<="0000000000000000";
when"1110"=>l<="0000000000000000";
when"1101"=>l<="0000000000000000";
when"1100"=>l<="0000010000000000";
when"1011"=>l<="0000001001111100";
when"1010"=>l<="0000000101000100";
when"1001"=>l<="0000100001000100";
when"1000"=>l<="0001111111110100";
when"0111"=>l<="0000000001000100";
when"0110"=>l<="0000000101000100";
when"0101"=>l<="0000001001000010";
when"0100"=>l<="0000010000000000";
when"0011"=>l<="0000000000000000";
when"0010"=>l<="0000000000000000";
when"0001"=>l<="0000000000000000";
when"0000"=>l<="0000000000000000";
whenothers=>null;
endcase;
when"0100"=>
casenis
when"1111"=>l<="0000000000000000";
when"1110"=>l<="0000000000000000";
when"1101"=>l<="0000000000000000";
when"1100"=>l<="0111111111111110";
when"1011"=>l<="0100000100000010";
when"1010"=>l<="0100000100000010";
when"1001"=>l<="0100000100000010";
when"1000"=>l<="0100000100000010";
when"0111"=>l<="0100000100000010";
when"0110"=>l<="0100000100000010";
when"0101"=>l<="0100000100000010";
when"0100"=>l<="0100000100000010";
when"0011"=>l<="0100000100000010";
when"0010"=>l<="0000000000000000";
when"0001"=>l<="0000000000000000";
when"0000"=>l<="0000000000000000";
whenothers=>null;
endcase;
when"0101"=>
casenis
when"1111"=>l<="0000000000000000";
when"1110"=>l<="0000000000000000";
when"1101"=>l<="0000000000000000";
when"1100"=>l<="0111111111111110";
when"1011"=>l<="0100000000000010";
when"1010"=>l<="0100000000000010";
when"1001"=>l<="0100000000000010";
when"1000"=>l<="0100000000000010";
when"0111"=>l<="0100000000000010";
when"0110"=>l<="0110000000000110";
when"0101"=>l<="0011000000001100";
when"0100"=>l<="0000110000110000";
when"0011"=>l<="0000001111000000";
when"0010"=>l<="0000000000000000";
when"0001"=>l<="0000000000000000";
when"0000"=>l<="0000000000000000";
whenothers=>null;
endcase;
when"0110"=>
casenis
when"1111"=>l<="0000000000000000";
when"1110"=>l<="0000000000000000";
when"1101"=>l<="0000000000000000";
when"1100"=>l<="0111110000000000";
when"1011"=>l<="0000011110000000";
when"1010"=>l<="0100010001110000";
when"1001"=>l<="0000010000001100";
when"1000"=>l<="0000010000000110";
when"0111"=>l<="0000010000000110";
when"0110"=>l<="0000010000001100";
when"0101"=>l<="0000010001110000";
when"0100"=>l<="0000011110000000";
when"0011"=>l<="0111110000000000";
when"0010"=>l<="0000000000000000";
when"0001"=>l<="0000000000000000";
when"0000"=>l<="0000000000000000";
whenothers=>null;
endcase;
when"0111"=>
casenis
when"1111"=>l<="0000000000000000";
when"1110"=>l<="0000000000111000";
when"1101"=>l<="0000000001111100";
when"1100"=>l<="0000000011111110";
when"1011"=>l<="0000000111111110";
when"1010"=>l<="0000001111111110";
when"1001"=>l<="0000011111111100";
when"1000"=>l<="0000111111111000";
when"0111"=>l<="0001111111110000";
when"0110"=>l<="0000111111111000";
when"0101"=>l<="0000011111111100";
when"0100"=>l<="0000001111111110";
when"0011"=>l<="0000000111111110";
when"0010"=>l<="0000000011111110";
when"0001"=>l<="0000000001111100";
when"0000"=>l<="0000000000111000";
whenothers=>null;
endcase;
when"1000"=>
casenis
when"1111"=>l<="0000000000000000";
when"1110"=>l<="0000000000000000";
when"1101"=>l<="0000000000000000";
when"1100"=>l<="0001111111110000";
when"1011"=>l<="0001000000010000";
when"1010"=>l<="0001001000010010";
when"1001"=>l<="0001010010010100";
when"1000"=>l<="0001010000011000";
when"0111"=>l<="0001010000010000";
when"0110"=>l<="0001010010011000";
when"0101"=>l<="0001001000010100";
when"0100"=>l<="0001000000010010";
when"0011"=>l<="0001111111110000";
when"0010"=>l<="0000000000000000";
when"0001"=>l<="0000000000000000";
when"0000"=>l<="0000000000000000";
whenothers=>null;
endcase;
when"1001"=>
casenis
when"1111"=>l<="0000000000000000";
when"1110"=>l<="0000011111100000";
when"1101"=>l<="0000100000010000";
when"1100"=>l<="0001000000001000";
when"1011"=>l<="0010000001000100";
when"1010"=>l<="0010000001100100";
when"1001"=>l<="0010000001000100";
when"1000"=>l<="0010000000000100";
when"0111"=>l<="0010000001000100";
when"0110"=>l<="0010000001100100";
when"0101"=>l<="0001000001001000";
when"0100"=>l<="0000100000010000";
when"0011"=>l<="0000011111100000";
when"0010"=>l<="0000000000000000";
when"0001"=>l<="0000000000000000";
when"0000"=>l<="0000000000000000";
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 EDA 课程 点阵 汇总