16X16点阵显示综合实验eda(共19页).doc
-
资源ID:14109342
资源大小:158.50KB
全文页数:19页
- 资源格式: DOC
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
16X16点阵显示综合实验eda(共19页).doc
精选优质文档-倾情为你奉上北 华 航 天 工 业 学 院EDA技术综合设计课程设计报告报告题目: 16X16点阵显示综合实验 作者所在系部: 电子工程系 作者所在专业: 自动化 作者所在班级: B08221 作 者 姓 名 : 王建超 指导教师姓名: 崔瑞雪 完 成 时 间 : 2010-11-30 内 容 摘 要EDA技术是现代电子信息工程领域的一门新兴技术,它是在现代先进的计算机工作平台上开发出来的一整套电子系统设计的软硬件工具,并提供了先进的电子系统设计方法。随着EDA技术的不断发展,开发人员完全可以通过自己的电子系统设计来定制其芯片内部的的电路功能,使之成为设计者自己的专门集成电路芯片。在本次课设中,设计一个共阴16X16点阵控制接口,要求:在时钟信号的控制下,使点阵动态点亮,点亮方式为使点阵显示器显示“沈小兰王建超袁利宏”九个字和一种花样,其中列选信号为16-4编码器编码输出。列选信号采用与7段数码管的位选信号一样的处理方法,即列扫描信号频率大于24HZ。字体、格式,注意本次为课设报告、不是实验报告关键词:EDA、可编程逻辑器件、时钟信号、16*16点阵字符发生器目录一、设计要求···············································1二、实验目的···············································1三、硬件要求···············································1四、实验原理···············································1五、程序设计···············································2 16进制计数器··········································2 16*16点阵的行列驱动器·································2六、原理图················································12七、仿真波形··············································12八、实验总结··············································13参考文献··················································13课程设计任务书课题名称16*16点阵显示综合实验完成时间11/30指导教师崔瑞雪职称副教授学生姓名王建超班 级B08221总体设计要求和技术要点设计一个共阴16X16点阵控制接口,要求:在时钟信号的控制下,使点阵动态点亮,点亮方式为使点阵显示器显示“沈小兰王建超袁利宏”九个字和一种花样,其中列选信号为16-4编码器编码输出。列选信号采用与7段数码管的位选信号一样的处理方法,即列扫描信号频率大于24HZ。工作内容及时间进度安排11/29日: 上午 熟悉EDA V型试验系统,完成芯片下载,试验箱连线; 下午 调试程序,对错误进行修改,实现目标花样;11/30日: 上午 验收、答辩;讲前面工作写上课程设计成果1与设计内容对应的软件程序2课程设计报告书3成果使用说明书4设计工作量要求专心-专注-专业一、 实验要求设计一个共阴16X16点阵控制接口,要求:在时钟信号的控制下,使点阵动态点亮,点亮方式为使点阵显示器显示“沈小兰王建超袁利宏”九个字和一种花样,其中列选信号为16-4编码器编码输出。二、实验目的1、 了解点阵字符的产生和显示原理。2、了解E2PROM和16×16点阵LED的工作机理。3、 加强对于总线产生,地址定位的CPLD实现的理解。三、硬件要求1 主芯片EPF10K10LC84-4。2 可变时钟源。3 带有事先编程好字库/字符的E2PROM 2864。4 16×16扫描LED点阵。四、实验原理 16×16扫描LED点阵的工作原理同8位扫描数码管类似。它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯。所以其扫描译码地址需4位信号线。要使16点阵上某个点亮,如第10行第4列的LED点亮,只要让列选信号为“0100”,从而选中第4列,再给第10行一个高电平,即可点亮该LED。本实验通过FPGA芯片写入字形,产生扫描信号。为了显示整个汉字,首先分布好汉字的排列,以行给汉字信息;然后以大于24HZ的频率扫描列,即每行逐一加高电平,根据人眼的视觉残留特性,使之形成整个汉字的显示。由于要显示不同的字,需要给一个信DIN,对不同字不同花样进行选择。而该信号的产生可以通过一个16进制计数器完成。本设计由16进制计数器,行驱动和列驱动组成。输出包括了如下图所示的列选信号SEL0SEL3。五、程序设计 116进制计数器:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;ENTITY JISHU ISPORT(CLK,RST,LOAD:IN STD_LOGIC; DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);END JISHU;ARCHITECTURE SHILIU OF JISHU ISBEGIN PROCESS(CLK,RST,LOAD,DIN) BEGIN IF (CLK'EVENT AND CLK='1') THEN IF(RST='1')THEN DOUT<=(OTHERS=>'0'); ELSIF (LOAD='1') THEN DOUT<=DIN; ELSIF (DOUT=15) THEN DOUT<="0000" ELSE DOUT<=DOUT+1; END IF; END IF; END PROCESS;END SHILIU;216*16点阵的行列驱动器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity zhi isport( din : in std_logic_vector(3 downto 0);selout : buffer std_logic_vector(3 downto 0); clk,rst: in std_logic;dotout : out std_logic_vector(15 downto 0);end zhi;architecture one of zhi isbeginprocess(clk,rst,din,selout)variable b:std_logic_vector(15 downto 0); beginif rst='1'then selout<="0000" elsif clk'event and clk='1' thencase din is when "0000"=>selout<=selout+1; case selout is when "1111" =>b:="00000" when "0000" =>b:="11100" when "0001" =>b:="01000" when "0010" =>b:="10000" when "0011" =>b:="00010" when "0100" =>b:="00100" when "0101" =>b:="01000" when "0110" =>b:="10000" when "0111" =>b:="00000" when "1000" =>b:="11100" when "1001" =>b:="00100" when "1010" =>b:="00100" when "1011" =>b:="00100" when "1100" =>b:="00100" when "1101" =>b:="11100" when others =>b:="00000" end case; when"0001"=>selout<=selout+1; case selout is when "1111" =>b:="00000" when "0000" =>b:="00000" when "0001" =>b:="00000" when "0010" =>b:="00000" when "0011" =>b:="00000" when "0100" =>b:="10000" when "0101" =>b:="01000" when "0110" =>b:="11100" when "0111" =>b:="11110" when "1000" =>b:="00000" when "1001" =>b:="00000" when "1010" =>b:="00000" when "1011" =>b:="00000" when "1100" =>b:="00000" when "1101" =>b:="00000" when others =>b:="00000" end case; when"0010"=> selout<=selout+1; case selout is when "1111" =>b:="00000" when "0000" =>b:="00110" when "0001" =>b:="00110" when "0010" =>b:="00110" when "0011" =>b:="00110" when "0100" =>b:="00110" when "0101" =>b:="00110" when "0110" =>b:="00110" when "0111" =>b:="00110" when "1000" =>b:="00110" when "1001" =>b:="00110" when "1010" =>b:="00110" when "1011" =>b:="00110" when "1100" =>b:="00110" when "1101" =>b:="00110" when others =>b:="00000" end case; when "0011"=> selout<=selout+1; case selout is when "1111" =>b:="00000" when "0000" =>b:="00100" when "0001" =>b:="01100" when "0010" =>b:="11100" when "0011" =>b:="10000" when "0100" =>b:="00000" when "0101" =>b:="00000" when "0110" =>b:="11111" when "0111" =>b:="11110" when "1000" =>b:="00100" when "1001" =>b:="10000" when "1010" =>b:="11000" when "1011" =>b:="01100" when "1100" =>b:="00100" when "1101" =>b:="00000" when others =>b:="00000" end case; when"0100"=> selout<=selout+1; case selout is when "0000" =>b:="11000" when "0001" =>b:="10000" when "0010" =>b:="00000" when "0011" =>b:="11100" when "0100" =>b:="11110" when "0101" =>b:="00000" when "0110" =>b:="00000" when "0111" =>b:="00000" when "1000" =>b:="00000" when "1001" =>b:="10000" when "1010" =>b:="00000" when "1011" =>b:="01000" when "1100" =>b:="11100" when "1101" =>b:="11110" when "1110" =>b:="00000" when others =>b:="00000" end case; when"0101"=> selout<=selout+1; case selout is when "0000" =>b:="00000" when "0001" =>b:="00010" when "0010" =>b:="00110" when "0011" =>b:="01000" when "0100" =>b:="10110" when "0101" =>b:="01110" when "0110" =>b:="10110" when "0111" =>b:="00110" when "1000" =>b:="00110" when "1001" =>b:="10110" when "1010" =>b:="01110" when "1011" =>b:="00110" when "1100" =>b:="00110" when "1101" =>b:="00010" when "1110" =>b:="00000" when others =>b:="00000" end case; when"0110"=> selout<=selout+1; case selout is when "1111" =>b:="00000" when "0000" =>b:="00010" when "0001" =>b:="00110" when "0010" =>b:="00110" when "0011" =>b:="00110" when "0100" =>b:="00110" when "0101" =>b:="00110" when "0110" =>b:="11110" when "0111" =>b:="11110" when "1000" =>b:="00110" when "1001" =>b:="00110" when "1010" =>b:="00110" when "1011" =>b:="00110" when "1100" =>b:="00110" when "1101" =>b:="00010" when others =>b:="00000" end case; when "0111"=> selout<=selout+1; case selout is when "0000" =>b:="00100" when "0001" =>b:="11000" when "0010" =>b:="11000" when "0011" =>b:="00100" when "0100" =>b:="01010" when "0101" =>b:="01010" when "0110" =>b:="01010" when "0111" =>b:="01010" when "1000" =>b:="11110" when "1001" =>b:="01010" when "1010" =>b:="01010" when "1011" =>b:="01010" when "1100" =>b:="01010" when "1101" =>b:="01010" when "1110" =>b:="00010" when others =>b:="00000" end case; when"1000"=> selout<=selout+1; case selout is when "0000" =>b:="11100" when "0001" =>b:="00000" when "0010" =>b:="00000" when "0011" =>b:="10000" when "0100" =>b:="01000" when "0101" =>b:="00100" when "0110" =>b:="00010" when "0111" =>b:="00010" when "1000" =>b:="00010" when "1001" =>b:="10010" when "1010" =>b:="01010" when "1011" =>b:="01010" when "1100" =>b:="01010" when "1101" =>b:="10010" when "1110" =>b:="00000" when others =>b:="00000" end case; when"1001"=>selout<=selout+1; case selout is when "1111" =>b:="01111" when "0000" =>b:="01111" when "0001" =>b:="01111" when "0010" =>b:="01111" when "0011" =>b:="10000" when "0100" =>b:="10000" when "0101" =>b:="10000" when "0110" =>b:="10000" when "0111" =>b:="01111" when "1000" =>b:="01111" when "1001" =>b:="01111" when "1010" =>b:="01111" when "1011" =>b:="10000" when "1100" =>b:="10000" when "1101" =>b:="10000" when "1110" =>b:="10000" when others =>null; end case; when"1010"=>selout<=selout+1; case selout is when "1111" =>b:="10000" when "0000" =>b:="10000" when "0001" =>b:="10000" when "0010" =>b:="10000" when "0011" =>b:="01111" when "0100" =>b:="01111" when "0101" =>b:="01111" when "0110" =>b:="01111" when "0111" =>b:="10000" when "1000" =>b:="10000" when "1001" =>b:="10000" when "1010" =>b:="10000" when "1011" =>b:="01111" when "1100" =>b:="01111" when "1101" =>b:="01111" when "1110" =>b:="01111" when others =>null; end case;when"1011"=>selout<=selout+1; case selout is when "1111" =>b:="11111" when "0000" =>b:="11111" when "0001" =>b:="11111" when "0010" =>b:="11111" when "0011" =>b:="11111" when "0100" =>b:="11111" when "0101" =>b:="11111" when "0110" =>b:="11111" when "0111" =>b:="00000" when "1000" =>b:="00000" when "1001" =>b:="00000" when "1010" =>b:="00000" when "1011" =>b:="00000" when "1100" =>b:="00000" when "1101" =>b:="00000" when "1110" =>b:="00000" when others =>null; end case;when"1100"=> selout<=selout+1; case selout is when "1111" =>b:="00001" when "0000" =>b:="00011" when "0001" =>b:="00111" when "0010" =>b:="01111" when "0011" =>b:="11111" when "0100" =>b:="11111" when "0101" =>b:="11111" when "0110" =>b:="11111" when "0111" =>b:="00000" when "1000" =>b:="00000" when "1001" =>b:="00000" when "1010" =>b:="10000" when "1011" =>b:="11000" when "1100" =>b:="11100" when "1101" =>b:="11110" when "1110" =>b:="11111" when others =>null; end case; when"1101"=> selout<=selout+1; case selout is when "1111" =>b:="11111" when "0000" =>b:="11111" when "0001" =>b:="11111" when "0010" =>b:="11111" when "0011" =>b:="11111" when "0100" =>b:="11111" when "0101" =>b:="01111" when "0110" =>b:="00111" when "0111" =>b:="00011" when "1000" =>b:="11111" when "1001" =>b:="11111" when "1010" =>b:="00111" when "1011" =>b:="01111" when "1100" =>b:="11111" when "1101" =>b:="11111" when "1110" =>b:="11111" when othe