1616点阵显示综合实验
关键词 EDA、可编程逻辑器件、计数器、显示器
2 / 18
目
第一章 1.1 1.2 设计要求及目的 设计要求 实验目的
录(目录需修改)
5 5
when "0011" =>b:="0000000000011010"; when "0100" =>b:="0011100000110100"; when "0101" =>b:="0001000000001000"; when "0110" =>b:="0001000000010000"; when "0111" =>b:="0111111111100000"; when "1000" =>b:="0111111111111100"; when "1001" =>b:="0001000000000100"; when "1010" =>b:="0001010000000100"; when "1011" =>b:="0001100000000100"; when "1100" =>b:="0011000000000100"; when "1101" =>b:="0000000000011100"; when others =>b:="0000000000000000"; end case; when"0001"=> selout<=selout+1; case selout is when "1111" =>b:="0000000000000000"; when "0000" =>b:="0000000000000000"; when "0001" =>b:="0000000110000000"; when "0010" =>b:="0000001100000000"; when "0011" =>b:="0000011000000000"; when "0100" =>b:="0000110000010000"; when "0101" =>b:="0000000000001000"; when "0110" =>b:="0111111111111100"; when "0111" =>b:="0111111111111110"; when "1000" =>b:="0000000000000000"; when "1001" =>b:="0000110000000000"; when "1010" =>b:="0000011000000000"; when "1011" =>b:="0000001100000000"; when "1100" =>b:="0000000110000000"; when "1101" =>b:="0000000000000000"; when others =>b:="0000000000000000"; end case; when"0010"=> selout<=selout+1; case selout is when "1111" =>b:="0000000000000000"; when "0000" =>b:="0000000000000110"; when "0001" =>b:="0001100000000110"; when "0010" =>b:="1001100000000110"; when "0011" =>b:="1101100110000110"; 8 / 18
ELSIF (DOUT=15) THEN DOUT<="0000"; ELSE DOUT<=DOUT+1; END IF; END IF; END PROCESS; END SHILIU; 其仿真波形为:
2.16 点阵控制器设计
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity zhi is port( 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 is begin process(clk,rst,din,selout) variable b:std_logic_vector(15 downto 0); begin if rst='1'then selout<="0000"; elsif clk'event and clk='1' then case din is when "0000"=> selout<=selout+1; case selout is when "1111" =>b:="0000000000000000"; when "0000" =>b:="0110000110000010"; when "0001" =>b:="0011000011000110"; when "0010" =>b:="0001100001101100"; 7 / 18
工作内容及时间进度安排 11/29 日: 11/30 日: 上午 熟悉 EDA V 型试验系统,完成芯片下载,试验箱连线; 下午 调试程序,对错误进行修改,实现目标花样; 上午 下午 对程序进行完善,验收; 写实验报告
将前面工作写上
课程设计成果 1.与设计内容对应的软件程序 2.课程设计报告书 3.成果使用说明书 4.设计工作量要求
16 点阵显示器是一个发光二极管阵列,我们所用的是 16 个共阴极二级管组成一列,共 16 列的显示器。只要让二极管阴极接低电平,阳极接高电平,便可使这个二极管亮,同构 不同二极管的组合,便可显示要现实的内容。16 点阵显示器在日常生活中随处可见,掌握 对 16 点阵显示器控制显示的方法,是很重要的。实验是使用 FPGA 设计一个 16×16 的点 阵显示的控制器,使点阵显示器显示汉字及花样。
5 / 18
第三章 系统子程序设计
1.16 进制计数器设计
其程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.all; ENTITY JISHU IS PORT(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 IS BEGIN 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; 6 / 18
第二章 系统设计原理
16×16 扫描 LED 点阵只要其对应的阳极·阴极顺向偏压,即可使 LED 发亮。例如如果 想使左上角 LED 点亮,只要让其对应的阳极接高电平,阴极接低电平即可。而 16 点阵显 示器每一列都是 16 个二极管接成共阴极,共 16 列。而要使 16 点阵上某个点亮,如第 8 行 第 6 列的 LED 点亮, 只要让列选信号为“0110” ,从而选中第 6 列, 再给第 8 行一个高电平, 即可点亮该 LED.本实验通过 FPGA 芯片写入字形,产生扫描信号。为了显示整个汉字,首 先分布好汉字的排列,以行给汉字信息;然后以大于 24HZ 的频率扫描列,即每行逐一加高 电平,根据人眼的视觉残留特性,使之形成整个汉字的显示。 由于要显示不同的字,需要给一个信 DIN,对不同字不同花样进行选择。而该信号的 产生可以通过一个 16 进制计数器完成。 本设计由 16 进制计数器,行驱动和列驱动组成。输出包括了如下图所示的列选信号 SEL0—SEL3。
北 华 航 天 工 业 学 院
《EDA 技术综合设计》
课程设计报告
报告题目: 作者所在系部: 作者所在专业: 作者所在班级: 作 者 姓 名 : 指导教师姓名: 完 成 时 间 :