16X16点阵显示综合实验eda
16x16点阵显示实验报告

16*16点阵显示实验报告一、实验目的(1)学习点阵显示字符的基本原理。
(2)掌握用数控分频控制速度,实现点阵扫描的基本方式。
(3)会使用Quartus II软件中的Verilog HDL语言实现点真的行列循环显示。
二、实验设备与器件Quartus II 软件、EP2C8Q208C8实验箱三、实验方案设计1.实验可实现的功能可通过编写Verilog HDL语言,实现点阵的行列交替扫描。
先是行扫描,扫描间隔为1s,16行都扫描完之后开始列扫描,扫描间隔仍然为1s,16列扫描完之后,行继续扫描,依次循环。
2.点阵基本知识16*16扫描LED点阵只要其对应的X、Y轴顺向偏压,即可使LED发亮。
例如如果想使左上角LED点亮,则Y0=1,X0=0即可。
应用时限流电阻可以放在X轴或Y轴。
它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯。
LED点阵每个点都有一个红色的发光二极管。
点阵内的二极管间的连接都是行共阳,列共阴。
本实验采用共阴,当二极管的共阳极为高电平,共阴极为低电平时,所接点发光;反之处于截止状态,不放光。
3.系统工作原理本系统用了两个模块,其中dianzhen.v是顶层文件,而hangsaomiao.v和liesaomiao.v是两个子模块,总体的系统功能框图如图3.3.1所示。
图3.3.1 系统功能图示通过流程图可以看到,体统是先将试验箱的50MHz时钟信号分频为1s,因为要实现16*16的点阵扫描,所以用一个16s的计时器计时,每经过16s行扫描与列扫描的状态转换一次,通过点阵显示出来。
4.模块化程序设计(1)点阵显示顶层程序设计module dianzhen (clk50mhz,row,sel0,sel1,sel2,sel3,line);input clk50mhz; //实验箱提供50MHz时钟信号output sel0,sel1,sel2,sel3; //设置引脚选通点阵output reg [15:0] row; //行output reg [3:0] line; //列wire [15:0] row1,row2;wire [3:0] line1,line2;reg [24:0] cnt=0; //1Hz计数子reg [4:0] cnt1=0; //16s计数子assign sel0=1'b0;assign sel1=1'b1;assign sel2=1'b0;assign sel3=1'b0;always@(posedge clk50mhz)beginif(cnt>=25'd5*******)begincnt<=25'b0; //1Hz计时器cnt1<=cnt1+1; //16s计时器endelsecnt<=cnt+1;endhangsaomiao u1(.clk50mhz(clk50mhz),.row(row1),.line(line1)); liesaomiao u2(.clk50mhz(clk50mhz),.row(row2),.line(line2));always@(*)if(cnt1<=5'd15)beginrow<=row1; //行扫描line<=line1;endelsebeginrow<=row2; //列扫描line<=line2;endendmodule(2)行扫描模块hangsaomiao.v程序设计module hangsaomiao(clk50mhz,line,row);input clk50mhz; //实验箱输入50MHz时钟信号output reg [15:0] row; //列output reg [3:0] line; //行reg [24:0] cnt1,cnt2; //计数子reg clkrow,clkline; //行脉冲、列脉冲always@(posedge clk50mhz)beginif(cnt1>=25'd5*******)begincnt1<=25'b0;clkrow=~clkrow; //1s列脉冲endelsecnt1<=cnt1+1;endalways@(posedge clk50mhz)beginif(cnt2>=25'd500)begincnt2<=25'b0;clkline=~clkline; //50KHz行脉冲endelsecnt2<=cnt2+1;endalways@(posedge clkline)begincase(line)4'd0:line<=4'd1; //高速行扫描4'd1:line<=4'd2;4'd2:line<=4'd3;4'd3:line<=4'd4;4'd4:line<=4'd5;4'd5:line<=4'd6;4'd6:line<=4'd7;4'd7:line<=4'd8;4'd8:line<=4'd9;4'd9:line<=4'd10;4'd10:line<=4'd11;4'd11:line<=4'd12;4'd12:line<=4'd13;4'd13:line<=4'd14;4'd14:line<=4'd15;4'd15:line<=4'd0;default:line<=4'd0;endcaseendalways@(posedge clkrow) //时间间隔为1s的列扫描begincase(row)16'b0000000000000001: row<=16'b0000000000000010;16'b0000000000000010: row<=16'b0000000000000100;16'b0000000000000100: row<=16'b0000000000001000;16'b0000000000001000: row<=16'b0000000000010000;16'b0000000000010000: row<=16'b0000000000100000;16'b0000000000100000: row<=16'b0000000001000000;16'b0000000001000000: row<=16'b0000000010000000;16'b0000000010000000: row<=16'b0000000100000000;16'b0000000100000000: row<=16'b0000001000000000;16'b0000001000000000: row<=16'b0000010000000000;16'b0000010000000000: row<=16'b0000100000000000;16'b0000100000000000: row<=16'b0001000000000000;16'b0001000000000000: row<=16'b0010000000000000;16'b0010000000000000: row<=16'b0100000000000000;16'b0100000000000000: row<=16'b1000000000000000;16'b1000000000000000: row<=16'b0000000000000001;default : row<=16'b0000000000000001;endcaseendendmodule(3)列扫描模块liesaomiao.v程序设计module liesaomiao(clk50mhz,row,line);input clk50mhz; //实验箱输入50MHz 时钟信号output reg [15:0] row; //行output reg [3:0] line; //列reg [24:0] cnt; //计数子reg clk;always@(posedge clk50mhz)beginif(cnt>=25'd5*******)begincnt<=25'b0;clk=~clk; //1sendelsecnt<=cnt+1;endalways @ (posedge clk) //列扫描begincase(line)4'h0:begin row=16'b1111111111111111;line<=4'h1; end4'h1:begin row=16'b1111111111111111;line<=4'h2; end4'h2:begin row=16'b1111111111111111;line<=4'h3; end4'h3:begin row=16'b1111111111111111;line<=4'h4; end4'h4:begin row=16'b1111111111111111;line<=4'h5; end4'h5:begin row=16'b1111111111111111;line<=4'h6; end4'h6:begin row=16'b1111111111111111;line<=4'h7; end4'h7:begin row=16'b1111111111111111;line<=4'h8; end4'h8:begin row=16'b1111111111111111;line<=4'h9; end4'h9:begin row=16'b1111111111111111;line<=4'ha; end4'ha:begin row=16'b1111111111111111;line<=4'hb; end4'hb:begin row=16'b1111111111111111;line<=4'hc; end4'hc:begin row=16'b1111111111111111;line<=4'hd; end4'hd:begin row=16'b1111111111111111;line<=4'he; end4'he:begin row=16'b1111111111111111;line<=4'hf; end4'hf:begin row=16'b1111111111111111;line<=4'h0; enddefault:line<=4'h0;endcaseendendmodule5.下载电路及引脚分配设计设计中用实验箱自带的50MHz时钟信号作为输入端,用sel0、sel1、sel2、sel3四个使能端选通点阵,EP2C8Q208C8就会工作在给点阵下命令的状态,并用line和row分别作为点阵的行、列选通端,最终使得点阵正常工作,如图3.5.1所示。
16×16点阵显示实验 实验报告

1.实验现象
当设计文件加载到目标器件后,将数字信号源模块的时钟选择为1KHZ,按下矩阵键盘的某一个键,则在数码管上显示对应的这个键标识的键值,当再按下第二个键的时候前一个键的键值在数码管上左移一位。按下“*”键则在数码管是显示“E”键值。按下“#”键在数码管上显示“F”键值。
2.实验图片记录
2)新建VHDL File(程序)
3)编译仿真
4)管脚分配
5)下载调试
2)加强对总线产生地址定位的CPLD实现方法的理解
3)掌握在FPGA中调用ROM的方法
成绩: 教师:
实验报告
一、实验内容及步骤
1.实验内容
1)通过编程实现对16×16点阵的控制
2)在点阵循环中显示“欢迎使用嵌入式SDC开发系统”这几个汉字和字符
3)运用软件对程序进行编译和仿真
2.实验步骤:
1)新建工程
成绩: 教师: 批改日期:
பைடு நூலகம்湖南科技大学
物理与电子科学学院专业实验报告
实验课程:FPGA实验原理
实验项目:16×16点阵显示实验
专 业:物理与电子科学学院
班 级:电子信息科学与技术3班
***********
学 号:**********
实验日期: 年 月 日
实验预习报告
一、实验目的及要求
1)加强点阵字符产生的显示原理和系统的16×16点阵的工作原理
单片机16×16点阵显示实验总结400字

单片机16×16点阵显示实验总结400字单片机16×16点阵显示实验总结这次实验我们使用单片机设计了16×16点阵显示器的驱动电路,并成功实现了在点阵上显示字符、数字和图案的功能。
下面是对本次实验的总结。
首先,我们按照实验手册的指示,采用逐行扫描的方式驱动16×16点阵显示器。
通过设置接口电路和引脚连接,将单片机与点阵电路相连,实现数据和控制信号的传输。
接着,我们编写了相应的程序代码,在单片机上进行编译和烧录,并使用示波器进行调试。
在调试过程中,我们发现了一些常见的问题,比如接口线连接错误、引脚配置错误等,及时解决这些问题,确保了实验的顺利进行。
接下来,我们开始编写点阵显示的控制程序。
通过对点阵每一个LED灯珠的亮灭状态进行控制,我们可以实现在点阵上显示不同的字符、数字和图案。
我们编写了一个字符库,其中包含了常用字符和数字的点阵码。
通过查表的方式,我们可以根据需要在点阵上显示相应的内容。
在编写程序的过程中,我们充分利用了单片机的IO口和定时器的功能,并采用了合理的算法,提高了程序的执行效率。
在实验过程中,我们遇到了一些困难和挑战。
首先,点阵显示器的像素较多,对于单片机的计算能力和IO口的数量有一定要求。
因此,在编写程序的过程中,我们需要注意内存和资源的使用,避免发生卡顿或者无法正常显示的情况。
其次,点阵显示器的扫描速度要求较高,需要通过设置定时器的中断来实现,以确保显示的稳定性和清晰度。
通过本次实验,我们不仅掌握了单片机的基本原理和编程技巧,还深入了解了点阵显示器的工作原理和驱动方式。
通过自主设计和编写代码,我们成功实现了在16×16点阵上显示字符、数字和图案的功能。
这不仅加深了我们对嵌入式系统的理解,还提高了我们的动手实践能力和问题解决能力。
总之,通过这次实验,我们不仅学到了很多知识,还锻炼了自己的动手能力和团队合作能力。
虽然在实验过程中遇到了一些困难,但通过不懈努力和团队合作,我们最终取得了成功。
16X16点阵显示综合实验new

EDA 综合课程设计(四)——16X16点阵显示综合实验16X16点阵控制接口一、 实验要求设计一个共阴16X16点阵控制接口,要求:在时钟信号的控制下,使点阵动态点亮,点亮方式自行设计,其中列选信号为16-4编码器编码输出。
控制器的引脚功能图如上图所示,其中:DIN[3..0]为显示花样模式选择,高电平有效;CLK 为时钟输入端;DOTOUT[15..0]为行驱动信号输出;SELOUT[3..0]为列选信号输出,为16-4编码信号。
图案1实现16X16点阵的16列同时从上往下依次点亮,全亮后16列又同时从下往上依次熄灭。
列选信号:采用与7段数码管的位选信号一样的处理方法,即列扫描信号频率大于24HZ 。
行驱动信号:可以采用移位的方法,可先定义一个16位的信号,若最高位置为‘1’,我们采用右移的方法,使每一位都置‘1’,这就实现依次点亮;当第0位也置‘1’后,给第0位置‘0’,二、实验内容16X16点阵控制接口引脚功能再采用左移的方法将每一位又重新置‘0’,这样就实现了反相依次熄灭,等第15位为‘0’时,又重新开始,以此循环。
对于其他的显示花样,请自行设计。
三、实验连线将CP端接时钟输出,并使输入频率约为1MHZ,DIN[3..0]分别接4位拨码开关,DOTOUT[15..0]分别接显示模块的L15~L0,SELOUT[3..0]分别接显示模块的SEL3~SEL0。
16X16点阵字符发生器一、实验目的: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显示灯。
16×16 LED点阵显示实验

16×16 LED点阵显示实验一、实验目的1、了解16×16矩阵LED显示的基本原理和功能2、掌握16×16矩阵LED和单片机的硬件接口和软件设计方法二、实验说明汉字显示屏广泛应用与汽车报站器,广告屏等。
实验介绍一种实用的汉字显示屏的制作,考虑到电路元件的易购性,采用了16×16的点阵模块;汉字显示的原理我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。
即国标汉字库中的每一个字均由256点阵来表示。
我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。
所以在这个汉字屏上不仅可以显示汉字,也可以显示在256像素范围内的任何图形。
我们以显示汉字“大”为例,来说明其扫描原理:在UCDOS中文宋体字库中,每一个字由16行16列的点阵组成显示。
如果用8位的AT89C51单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分。
一般我们把它拆分为上部和下部,上部由8*16点阵组成,下部也由8*16点阵组成。
在本例中单片机首先显示的是左上角的第一列的上半部分,即第0列的p00---p07口。
方向为p00到p07 ,显示汉字“大”时,p05点亮,由上往下排列,为p0.0 灭,p0.1 灭, p0.2 灭p0.3 灭, p0.4 灭, p0.5 亮,p0.6 灭,p0.7 灭。
即二进制00000100,转换为16进制为 04h.。
上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计成由上往下扫描,即从p27向p20方向扫描,从上图可以看到,这一列全部为不亮,即为00000000,16进制则为00h。
然后单片机转向上半部第二列,仍为p05点亮,为00000100,即16进制04h。
这一列完成后继续进行下半部分的扫描,p21点亮,为二进制00000010,即16进制02h. 依照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“大”。
16x16点阵-EDA课程设计

应用科学学院SOPC/EDA综合课程设计报告设计题目:设计者:学号:班级:指导老师:完成时间:目录第1章总体设计原理及原理框图 (1)1.1 设计原理 (1)1.2顶层文件设计 (2)1.3总体仿真图 (2)第2章单元电路设计 (4)2.1时序控制模块设计 (4)2.1.1时序控制模块的源程序及其实体图 (4)2.1.2时序控制模块仿真 (5)2.2扫描控制模块设计 (5)2.2.1扫描控制模块源程序及其实体图 (5)2.2.2扫描控制模块仿真 (6)2.3显示控制模块源程序及其实体图 (6)2.3.1显示控制模块 (6)2.3.2显示控制模块仿真 (21)第3章心得体会 (22)参考文献 (23)1第1章 总体设计原理及原理框图1.1 设计原理首先我们设计要正确显示这些字,显示屏上的灯的亮暗情况具体应如何。
如第一个字‘江’:第一种方案 第二种方案如果高电平‘1 时表示灯是亮的,低电平‘0’时灯是暗的,这样上面的灯呈现在我们眼前的就是‘江’字了。
依次类推,我们就可以设计出所有要显示的字了。
使用FPGA 设计一个16×16的点阵显示的控制器,使点阵显示器以两种花样显示“江西理工大学应用科学学院欢迎您”第一种花样是用亮着的灯组合所要显示的字,第二种方案是用暗着的灯组成所需要的字。
这样这些字就好象是被我们当作了固定模型了。
但如何点亮这些灯呢,这就要求有一个脉冲循环扫描的电路,我们采用列扫描,当扫描的和我们先设计好的字模型的高电平相匹配时,灯就相应的点亮。
由于扫描的速度很快,我们人的眼睛并不会感到灯的闪烁,所以每扫描完16列就会显示在我们眼中一个字了。
但要所有的字母就可以依次的显示出来并不停的循环显示,就还要再有一个时序控制电路来控制。
此时序控制电路象一个计数器,有自动清零的功能,这样就可以实现循环的效果了。
其设计原理图框图如下图1.1 总体设计框图1.2顶层文件设计顶层文件来实现循环显示各个字的功能。
vhdl实验报告_16乘16点阵_列选_显示

综合实践总结报告综合实践名称: EDA技术与实践综合实践地点、时间一.题目功能分析和设计实验的要求有如下三点:1.用16*16点阵的发光二极管显示字符;2.可显示字符为0~9的数字字符与A~F英文字母的大写;3.输入为四位二进制矢量;按照要求可知,LED点阵模块,共由16×16=256个LED发光二极管组成,如何在该点阵模块上显示数字和字母是本实验的关键。
先将要显示的每一幅图像画在一个16×16共256个小方格的矩形框中,再在有笔划下落处的小方格里填上“1”,无笔划处填上“0”,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布以数字8为例,点阵分布为:0000000000000000000000000000000000011111111110000001111111111000000110000001100000011000000110000001100000011000000111111111100000011111111110000001100000011000000110000001100000011000000110000001111111111000000111111111100000000000000000000000000000000000考虑到实际物理实验平台上点阵发光二极管的原理,以下为16×16点阵LED外观图,只要其对应的X、Y轴顺向偏压,即可使LED 发亮。
例如如果想使左上角LED点亮,则Y0=1,X0=0即可。
所以我采用行列扫描的方法,用四位二进制数做列选信号(总共16列),如选中第一列,则扫描第一列之中哪些行是高电平(1),哪些行是低电平(0);为高电平的则点亮,为低电平的不亮。
(列信号都接地)。
如此,列选信号由“0000”变到“1111”时,16列扫描完毕,一个字也就出来了,列选信号重新由“0000”开始扫描。
注意扫描频率必须要足够快,才能保证显示一个数字或字母时所有灯在肉眼看来是同时在闪烁的。
16×16点阵EDA课程设计报告

EDA 综合实践总结报告一、综合实践的目的 (3)二、综合实践理论基础和核心内容 (3)三、综合实践具体内容和记录 (3)四、综合实践总结及分析 (7)五、综合实践所需仪器设备 (7)六、参考资料 (7)七、成绩评定表 (8)一、综合实践的目的1.熟悉MAX+PLUSⅡ编程环境。
2.掌握MAX+PLUSⅡ原理图输入和文本输入。
3.掌握MAX+PLUSⅡ对设计文件的编译和仿真。
4.掌握VHDL语言中的顺序语句和并行语句以及程序的基本结构。
5.了解点阵屏显示字符的原理与过程。
二、综合实践理论基础和核心内容1. 给点阵24HZ以上的列扫描信号,同时给行不同的字符编码,从而让点阵显示不同的花色和字符2. 用两个三八译码器对四位二进制数进行译码从而实现16位二进制数的循环移位,以此作为16位列扫描信号。
3. 点阵控制器的rst时钟输入用来控制行依次亮灭的速度,因此其频率必须小于24HZ以保证人眼能够区分。
4. din用来控制点阵显示不同的字符和花色,应当在实验开始前就接高电平或低电平,当din给低电平时,点阵的行从上往下依次点亮后又从下往上依次熄灭;当din给高电平时,点阵屏上循环显示“中”“国”“人”三个字。
三、综合实践具体内容和记录程序清单如下所示library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity X16 isport(clk,rst:in std_logic;dout:out std_logic_vector(15 downto 0);hl:buffer std_logic_vector(3 downto 0)); end X16;architecture A of X16 issignal row:std_logic_vector(15 downto 0);signal dow:std_logic_vector(4 downto 0);beginA:process(hl)begincase hl iswhen "0000"=>row<="1000000000000000";when "0001"=>row<="0100000000000000";when "0010"=>row<="0010000000000000";when "0011"=> row<="0001000000000000";when "0100"=> row<="0000100000000000";when "0101"=> row<="0000010000000000";when "0110"=> row<="0000001000000000";when "0111"=> row<="0000000100000000";when "1000"=> row<="0000000010000000";when "1001"=> row<="0000000001000000"; when "1010"=> row<="0000000000100000"; when "1011"=> row<="0000000000010000"; when "1100"=> row<="0000000000001000"; when "1101"=> row<="0000000000000100"; when "1110"=> row<="0000000000000010"; when "1111"=> row<="0000000000000001"; when others=> row<="0000000000000000"; END case;end process A;B:process(clk,rst,dow)variable m:integer:=0;beginif rst='1' then dout<="0000000000000000"; hl<="0000"; dow<="00000";elsif clk'event and clk='1' thenm:=m+1;if dow="10100" thendow<="00000";elsif m=300 thendow<=dow+1;m:=0;end if;if hl>15 thenhl<="0000";else hl<=hl+1;end if;case dow iswhen "00000"=>case hl iswhen "0000" =>dout<="0000000000000000"; when "0001" =>dout<="0000000000000000"; when "0010" =>dout<="0000000000000000"; when "0011" =>dout<="0000000000000000"; when "0100" =>dout<="0000000000000000"; when "0101" =>dout<="0000000000000000"; when "0110" =>dout<="0000000000000000"; when "0111" =>dout<="0000000000000000"; when "1000" =>dout<="0000000000000000"; when "1001" =>dout<="0000000000000000"; when "1010" =>dout<="0000000000000000"; when "1011" =>dout<="0000000000000000"; when "1100" =>dout<="0000000000000000";when "1110" =>dout<="0000000000000000"; when "1111" =>dout<="1111111111111111"; when others=>dout<=null;end case;when "00001"=>case hl iswhen "0000" =>dout<="1111111111111111"; when "0001" =>dout<="0000000000000000"; when "0010" =>dout<="0000000000000000"; when "0011" =>dout<="0000000000000000"; when "0100" =>dout<="0000000000000000"; when "0101" =>dout<="0000000000000000"; when "0110" =>dout<="0000000000000000"; when "0111" =>dout<="0000000000000000"; when "1000" =>dout<="0000000000000000"; when "1001" =>dout<="0000000000000000"; when "1010" =>dout<="0000000000000000"; when "1011" =>dout<="0000000000000000"; when "1100" =>dout<="0000000000000000"; when "1101" =>dout<="0000000000000000";when "1111" =>dout<="1111111111111111"; when others=>dout<=null;end case;when "00010"=>case hl iswhen "0000" =>dout<="1111111111111111"; when "0001" =>dout<="1111111111111111"; when "0010" =>dout<="0000000000000000"; when "0011" =>dout<="0000000000000000"; when "0100" =>dout<="0000000000000000"; when "0101" =>dout<="0000000000000000"; when "0110" =>dout<="0000000000000000"; when "0111" =>dout<="0000000000000000"; when "1000" =>dout<="0000000000000000"; when "1001" =>dout<="0000000000000000"; when "1010" =>dout<="0000000000000000"; when "1011" =>dout<="0000000000000000"; when "1100" =>dout<="0000000000000000"; when "1101" =>dout<="0000000000000000"; when "1110" =>dout<="0000000000000000"; when "1111" =>dout<="1111111111111111";when others=>dout<=null;end case;when "00011"=>case hl iswhen "0000" =>dout<="1111111111111111"; when "0001" =>dout<="1111111111111111"; when "0010" =>dout<="1111111111111111"; when "0011" =>dout<="0000000000000000"; when "0100" =>dout<="0000000000000000"; when "0101" =>dout<="0000000000000000"; when "0110" =>dout<="0000000000000000"; when "0111" =>dout<="0000000000000000"; when "1000" =>dout<="0000000000000000"; when "1001" =>dout<="0000000000000000"; when "1010" =>dout<="0000000000000000"; when "1011" =>dout<="0000000000000000"; when "1100" =>dout<="0000000000000000"; when "1101" =>dout<="0000000000000000"; when "1110" =>dout<="0000000000000000"; when "1111" =>dout<="1111111111111111"; when others=>dout<=null;end case;when "00100"=>case hl iswhen "0000" =>dout<="1111111111111111"; when "0001" =>dout<="1111111111111111"; when "0010" =>dout<="1111111111111111"; when "0011" =>dout<="1111111111111111"; when "0100" =>dout<="0000000000000000"; when "0101" =>dout<="0000000000000000"; when "0110" =>dout<="0000000000000000"; when "0111" =>dout<="0000000000000000"; when "1000" =>dout<="0000000000000000"; when "1001" =>dout<="0000000000000000"; when "1010" =>dout<="0000000000000000"; when "1011" =>dout<="0000000000000000"; when "1100" =>dout<="0000000000000000"; when "1101" =>dout<="0000000000000000"; when "1110" =>dout<="0000000000000000"; when "1111" =>dout<="1111111111111111"; when others=>dout<=null;end case;when "00101"=>case hl iswhen "0000" =>dout<="1111111111111111"; when "0001" =>dout<="1111111111111111"; when "0010" =>dout<="1111111111111111"; when "0011" =>dout<="1111111111111111"; when "0100" =>dout<="1111111111111111"; when "0101" =>dout<="0000000000000000"; when "0110" =>dout<="0000000000000000"; when "0111" =>dout<="0000000000000000"; when "1000" =>dout<="0000000000000000"; when "1001" =>dout<="0000000000000000"; when "1010" =>dout<="0000000000000000"; when "1011" =>dout<="0000000000000000"; when "1100" =>dout<="0000000000000000"; when "1101" =>dout<="0000000000000000"; when "1110" =>dout<="0000000000000000"; when "1111" =>dout<="1111111111111111"; when others=>dout<=null;end case;when "00110"=>case hl iswhen "0000" =>dout<="1111111111111111"; when "0001" =>dout<="1111111111111111";when "0011" =>dout<="1111111111111111"; when "0100" =>dout<="1111111111111111"; when "0101" =>dout<="1111111111111111"; when "0110" =>dout<="0000000000000000"; when "0111" =>dout<="0000000000000000"; when "1000" =>dout<="0000000000000000"; when "1001" =>dout<="0000000000000000"; when "1010" =>dout<="0000000000000000"; when "1011" =>dout<="0000000000000000"; when "1100" =>dout<="0000000000000000"; when "1101" =>dout<="0000000000000000"; when "1110" =>dout<="0000000000000000"; when "1111" =>dout<="1111111111111111"; when others=>dout<=null;end case;when "00111"=>case hl iswhen "0000" =>dout<="1111111111111111"; when "0001" =>dout<="1111111111111111"; when "0010" =>dout<="1111111111111111"; when "0011" =>dout<="1111111111111111";when "0101" =>dout<="1111111111111111"; when "0110" =>dout<="0000000000000000"; when "0111" =>dout<="0000000000000000"; when "1000" =>dout<="0000000000000000"; when "1001" =>dout<="0000000000000000"; when "1010" =>dout<="0000000000000000"; when "1011" =>dout<="0000000000000000"; when "1100" =>dout<="0000000000000000"; when "1101" =>dout<="0000000000000000"; when "1110" =>dout<="0000000000000000"; when "1111" =>dout<="1111111111111111"; when others=>dout<=null;end case;when "01000"=>case hl iswhen "0000" =>dout<="1111111111111111"; when "0001" =>dout<="1111111111111111"; when "0010" =>dout<="1111111111111111"; when "0011" =>dout<="1111111111111111"; when "0100" =>dout<="1111111111111111"; when "0101" =>dout<="1111111111111111";when "0111" =>dout<="0000000000000000"; when "1000" =>dout<="0000000000000000"; when "1001" =>dout<="0000000000000000"; when "1010" =>dout<="0000000000000000"; when "1011" =>dout<="0000000000000000"; when "1100" =>dout<="0000000000000000"; when "1101" =>dout<="0000000000000000"; when "1110" =>dout<="0000000000000000"; when "1111" =>dout<="1111111111111111"; when others=>dout<=null;end case;when "01001"=>case hl iswhen "0000" =>dout<="1111111111111111"; when "0001" =>dout<="1111111111111111"; when "0010" =>dout<="1111111111111111"; when "0011" =>dout<="1111111111111111"; when "0100" =>dout<="1111111111111111"; when "0101" =>dout<="1111111111111111"; when "0110" =>dout<="1111111111111111"; when "0111" =>dout<="1111111111111111";when "1001" =>dout<="0000000000000000"; when "1010" =>dout<="0000000000000000"; when "1011" =>dout<="0000000000000000"; when "1100" =>dout<="0000000000000000"; when "1101" =>dout<="0000000000000000"; when "1110" =>dout<="0000000000000000"; when "1111" =>dout<="1111111111111111"; when others=>dout<=null;end case;when "01010"=>case hl iswhen "0000" =>dout<="1111111111111111"; when "0001" =>dout<="1111111111111111"; when "0010" =>dout<="1111111111111111"; when "0011" =>dout<="1111111111111111"; when "0100" =>dout<="1111111111111111"; when "0101" =>dout<="1111111111111111"; when "0110" =>dout<="1111111111111111"; when "0111" =>dout<="1111111111111111"; when "1000" =>dout<="1111111111111111"; when "1001" =>dout<="0000000000000000";when "1011" =>dout<="0000000000000000"; when "1100" =>dout<="0000000000000000"; when "1101" =>dout<="0000000000000000"; when "1110" =>dout<="0000000000000000"; when "1111" =>dout<="1111111111111111"; when others=>dout<=null;end case;when "01011"=>case hl iswhen "0000" =>dout<="1111111111111111"; when "0001" =>dout<="1111111111111111"; when "0010" =>dout<="1111111111111111"; when "0011" =>dout<="1111111111111111"; when "0100" =>dout<="1111111111111111"; when "0101" =>dout<="1111111111111111"; when "0110" =>dout<="1111111111111111"; when "0111" =>dout<="1111111111111111"; when "1000" =>dout<="1111111111111111"; when "1001" =>dout<="1111111111111111"; when "1010" =>dout<="0000000000000000"; when "1011" =>dout<="0000000000000000";when "1101" =>dout<="0000000000000000"; when "1110" =>dout<="0000000000000000"; when "1111" =>dout<="1111111111111111"; when others=>dout<=null;end case;when "01100"=>case hl iswhen "0000" =>dout<="1111111111111111"; when "0001" =>dout<="1111111111111111"; when "0010" =>dout<="1111111111111111"; when "0011" =>dout<="1111111111111111"; when "0100" =>dout<="1111111111111111"; when "0101" =>dout<="1111111111111111"; when "0110" =>dout<="1111111111111111"; when "0111" =>dout<="1111111111111111"; when "1000" =>dout<="1111111111111111"; when "1001" =>dout<="1111111111111111"; when "1010" =>dout<="1111111111111111"; when "1011" =>dout<="0000000000000000"; when "1100" =>dout<="0000000000000000"; when "1101" =>dout<="0000000000000000";when "1111" =>dout<="1111111111111111";when others=>dout<=null;end case;when "01101"=>case hl iswhen "0000" =>dout<="1111111111111111";when "0001" =>dout<="1111111111111111";when "0010" =>dout<="1111111111111111";when "0011" =>dout<="1111111111111111";when "0100" =>dout<="1111111111111111";when "0101" =>dout<="1111111111111111";when "0110" =>dout<="1111111111111111";when "0111" =>dout<="1111111111111111";when "1000" =>dout<="1111111111111111";when "1001" =>dout<="1111111111111111";when "1010" =>dout<="1111111111111111";when "1011" =>dout<="1111111111111111";when "1100" =>dout<="0000000000000000";when "1101" =>dout<="0000000000000000";when "1110" =>dout<="0000000000000000";when "1111" =>dout<="1111111111111111";when others=>dout<=null;end case;when "01110"=>case hl iswhen "0000" =>dout<="1111111111111111"; when "0001" =>dout<="1111111111111111"; when "0010" =>dout<="1111111111111111"; when "0011" =>dout<="1111111111111111"; when "0100" =>dout<="1111111111111111"; when "0101" =>dout<="1111111111111111"; when "0110" =>dout<="1111111111111111"; when "0111" =>dout<="1111111111111111"; when "1000" =>dout<="1111111111111111"; when "1001" =>dout<="1111111111111111"; when "1010" =>dout<="1111111111111111"; when "1011" =>dout<="1111111111111111"; when "1100" =>dout<="1111111111111111"; when "1101" =>dout<="0000000000000000"; when "1110" =>dout<="0000000000000000"; when "1111" =>dout<="1111111111111111"; when others=>dout<=null;end case;when "01111"=>case hl iswhen "0000" =>dout<="1111111111111111"; when "0001" =>dout<="1111111111111111"; when "0010" =>dout<="1111111111111111"; when "0011" =>dout<="1111111111111111"; when "0100" =>dout<="1111111111111111"; when "0101" =>dout<="1111111111111111"; when "0110" =>dout<="1111111111111111"; when "0111" =>dout<="1111111111111111"; when "1000" =>dout<="1111111111111111"; when "1001" =>dout<="1111111111111111"; when "1010" =>dout<="1111111111111111"; when "1011" =>dout<="1111111111111111"; when "1100" =>dout<="1111111111111111"; when "1101" =>dout<="1111111111111111"; when "1110" =>dout<="0000000000000000"; when "1111" =>dout<="1111111111111111"; when others=>dout<=null;end case;when "10000"=>case hl iswhen "0000" =>dout<="1111111111111111"; when "0001" =>dout<="1111111111111111"; when "0010" =>dout<="1111111111111111"; when "0011" =>dout<="1111111111111111"; when "0100" =>dout<="1111111111111111"; when "0101" =>dout<="1111111111111111"; when "0110" =>dout<="1111111111111111"; when "0111" =>dout<="1111111111111111"; when "1000" =>dout<="1111111111111111"; when "1001" =>dout<="1111111111111111"; when "1010" =>dout<="1111111111111111"; when "1011" =>dout<="1111111111111111"; when "1100" =>dout<="1111111111111111"; when "1101" =>dout<="1111111111111111"; when "1110" =>dout<="1111111111111111"; when "1111" =>dout<="1111111111111111"; when others=>dout<=null;end case;when "10001"=>case hl iswhen "0000" =>dout<="0000000000000000"; when "0001" =>dout<="0000000000000000";when "0011" =>dout<="0000010000010000"; when "0100" =>dout<="0000010000010000"; when "0101" =>dout<="0000010000010000"; when "0110" =>dout<="0000010000010000"; when "0111" =>dout<="1111111111111111"; when "1000" =>dout<="0000010000010000"; when "1001" =>dout<="0000010000010000"; when "1010" =>dout<="0000010000010000"; when "1011" =>dout<="0000010000010000"; when "1100" =>dout<="0000010000010000"; when "1101" =>dout<="0000011111110000"; when "1110" =>dout<="0000000000000000"; when "1111" =>dout<="0000000000000000"; when others=>dout<=null;end case;when "10010"=>case hl iswhen "0000" =>dout<="0000000000000000"; when "0001" =>dout<="0111111111111100"; when "0010" =>dout<="0100000000000100"; when "0011" =>dout<="0101000000010100";when "0101" =>dout<="0101010100010100"; when "0110" =>dout<="0101001100010100"; when "0111" =>dout<="0101111111110100"; when "1000" =>dout<="0101000100010100"; when "1001" =>dout<="0101000100010100"; when "1010" =>dout<="0101000100010100"; when "1011" =>dout<="0101000100010100"; when "1100" =>dout<="0101000000010100"; when "1101" =>dout<="0100000000000100"; when "1110" =>dout<="0111111111111100"; when "1111" =>dout<="0000000000000000"; when others=>dout<=null;end case;when "10011"=>case hl iswhen "0000" =>dout<="1000000000000000"; when "0001" =>dout<="0100000000000000"; when "0010" =>dout<="0010000000000000"; when "0011" =>dout<="0001000000000000"; when "0100" =>dout<="0000100000000000"; when "0101" =>dout<="0000010000000000";when "0111" =>dout<="0000000111111111";when "1000" =>dout<="0000000100000000";when "1001" =>dout<="0000001000000000";when "1010" =>dout<="0000010000000000";when "1011" =>dout<="0000100000000000";when "1100" =>dout<="0001000000000000";when "1101" =>dout<="0010000000000000";when "1110" =>dout<="0100000000000000";when "1111" =>dout<="1000000000000000";when others=>dout<=null;end case;when others=>null;end case;end if;end process;end A;gdf原理图如下图所示:四、综合实践总结及分析1.通过软件的仿真和硬件的验证,实验结果准确无误,点阵屏显示效果良好。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北华航天工业学院《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)课程设计任务书一、实验要求设计一个共阴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进制计数器,行驱动和列驱动组成。
输出包括了如下图所示的列选信号SEL0—SEL3。
五、程序设计1.16进制计数器: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 ISBEGINPROCESS(CLK,RST,LOAD,DIN)BEGINIF (CLK'EVENT AND CLK='1') THENIF(RST='1')THEN DOUT<=(OTHERS=>'0');ELSIF (LOAD='1') THEN DOUT<=DIN;ELSIF (DOUT=15) THENDOUT<="0000";ELSEDOUT<=DOUT+1;END IF;END IF;END PROCESS;END SHILIU;2.16*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 iswhen "0000"=>selout<=selout+1;case selout iswhen "1111" =>b:="0000000000000000";when "0000" =>b:="0010001000011100";when "0001" =>b:="0001000100001000";when "0010" =>b:="0000100010010000";when "0011" =>b:="0000000000100010";when "0100" =>b:="0011100001000100";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 iswhen "1111" =>b:="0000000000000000";when "0000" =>b:="0000000000000000";when "0001" =>b:="0000000110000000";when "0010" =>b:="0000001100000000";when "0011" =>b:="0000011000000000";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 iswhen "1111" =>b:="0000000000000000";when "0000" =>b:="0000000000000110";when "0001" =>b:="0001100000000110";when "0010" =>b:="1001100000000110";when "0011" =>b:="1101100110000110";when "0100" =>b:="0111100110000110";when "0101" =>b:="0011100110000110";when "0110" =>b:="0001100110000110";when "0111" =>b:="0001100110000110";when "1000" =>b:="0011100110000110";when "1001" =>b:="0111100110000110";when "1010" =>b:="1101100110000110";when "1011" =>b:="1001100000000110";when "1100" =>b:="0001100000000110";when "1101" =>b:="0000000000000110";when others =>b:="0000000000000000";end case;when "0011"=> selout<=selout+1;case selout iswhen "0000" =>b:="0000000000000100";when "0001" =>b:="0000000000001100";when "0010" =>b:="0001000000011100";when "0011" =>b:="0101011011110000";when "0100" =>b:="0101011101100000";when "0101" =>b:="0101010110000000";when "0110" =>b:="1111010111111111";when "0111" =>b:="0101010111111110";when "1000" =>b:="0101010101100100";when "1001" =>b:="0101011000110000";when "1010" =>b:="0001000000011000";when "1011" =>b:="0000000000001100";when "1100" =>b:="0000000000000100";when "1101" =>b:="0000000000000000";when others =>b:="0000000000000000";end case;when"0100"=> selout<=selout+1;case selout iswhen "0000" =>b:="0000000000011000";when "0001" =>b:="0000011000110000";when "0010" =>b:="0110011011000000";when "0011" =>b:="0111111111111100";when "0100" =>b:="0111111111111110";when "0101" =>b:="0110011110000000";when "0110" =>b:="0000011011100000";when "0111" =>b:="0000000001100000";when "1000" =>b:="0000000000000000";when "1001" =>b:="0000011111110000";when "1010" =>b:="0000011111100000";when "1011" =>b:="0000000000001000";when "1100" =>b:="0111111111111100";when "1101" =>b:="0111111111111110";when "1110" =>b:="0000000000000000";when others =>b:="0000000000000000";end case;when"0101"=> selout<=selout+1;case selout iswhen "0000" =>b:="0000000000000000";when "0001" =>b:="0000111000000010";when "0010" =>b:="0000111000000110";when "0011" =>b:="0000100110001000";when "0100" =>b:="0000100110010110";when "0101" =>b:="0000100110101110";when "0110" =>b:="0110100111010110";when "0111" =>b:="0110101110100110";when "1000" =>b:="0110100110000110";when "1001" =>b:="0000100110010110";when "1010" =>b:="0000100110001110";when "1011" =>b:="0000100110000110";when "1100" =>b:="0000111000000110";when "1101" =>b:="0000111000000010";when "1110" =>b:="0000000000000000";when others =>b:="0000000000000000";end case;when"0110"=> selout<=selout+1;case selout iswhen "1111" =>b:="0000000000000000";when "0000" =>b:="0000000000000010";when "0001" =>b:="0110000000000110";when "0010" =>b:="0110000110000110";when "0011" =>b:="0110000110000110";when "0100" =>b:="0110000110000110";when "0101" =>b:="0110000110000110";when "0110" =>b:="0111111111111110";when "0111" =>b:="0111111111111110";when "1000" =>b:="0110000110000110";when "1001" =>b:="0110000110000110";when "1011" =>b:="0110000110000110";when "1100" =>b:="0110000000000110";when "1101" =>b:="0000000000000010";when others =>b:="0000000000000000";end case;when "0111"=> selout<=selout+1;case selout iswhen "0000" =>b:="0000000000100100";when "0001" =>b:="0010001000011000";when "0010" =>b:="0010010100011000";when "0011" =>b:="0010110010100100";when "0100" =>b:="0011000001001010";when "0101" =>b:="0010010010101010";when "0110" =>b:="0010010010101010";when "0111" =>b:="0010010010101010";when "1000" =>b:="0111111111111110";when "1001" =>b:="0010010010101010";when "1010" =>b:="0010010010101010";when "1011" =>b:="0010010010101010";when "1100" =>b:="0011111110001010";when "1101" =>b:="0000010000001010";when "1110" =>b:="0000010000000010";when others =>b:="0000000000000000";end case;when"1000"=> selout<=selout+1;case selout iswhen "0000" =>b:="0000000001111100";when "0001" =>b:="0000100011000000";when "0010" =>b:="0010100100100000";when "0011" =>b:="0010101000010000";when "0100" =>b:="0111111111001000";when "0101" =>b:="0010100100000100";when "0110" =>b:="0010100100000010";when "0111" =>b:="0000100000000010";when "1001" =>b:="0100010001110010";when "1010" =>b:="0100100010001010";when "1011" =>b:="0101000010001010";when "1100" =>b:="0110010010001010";when "1101" =>b:="0111111001110010";when "1110" =>b:="0000000000000000";when others =>b:="0000000000000000";end case;when"1001"=>selout<=selout+1;case selout iswhen "1111" =>b:="0000111100001111";when "0000" =>b:="0000111100001111";when "0001" =>b:="0000111100001111";when "0010" =>b:="0000111100001111";when "0011" =>b:="1111000011110000";when "0100" =>b:="1111000011110000";when "0101" =>b:="1111000011110000";when "0110" =>b:="1111111111110000";when "0111" =>b:="0000111100001111";when "1000" =>b:="0000111100001111";when "1001" =>b:="0000111100001111";when "1010" =>b:="0000111100001111";when "1011" =>b:="1111000011110000";when "1100" =>b:="1111000011110000";when "1101" =>b:="1111000011110000";when "1110" =>b:="1111000011110000";when others =>null;end case;when"1010"=>selout<=selout+1;case selout iswhen "1111" =>b:="1111000011110000";when "0000" =>b:="1111000011110000";when "0001" =>b:="1111000011110000";when "0010" =>b:="1111000011110000";when "0100" =>b:="0000111100001111";when "0101" =>b:="0000111100001111";when "0110" =>b:="0000111100001111";when "0111" =>b:="1111000011110000";when "1000" =>b:="1111000011110000";when "1001" =>b:="1111000011110000";when "1010" =>b:="1111000011110000";when "1011" =>b:="0000111100001111";when "1100" =>b:="0000111100001111";when "1101" =>b:="0000111100001111";when "1110" =>b:="0000111100001111";when others =>null;end case;when"1011"=>selout<=selout+1;case selout iswhen "1111" =>b:="0000000011111111";when "0000" =>b:="0000000011111111";when "0001" =>b:="0000000011111111";when "0010" =>b:="0000000011111111";when "0011" =>b:="0000000011111111";when "0100" =>b:="0000000011111111";when "0101" =>b:="0000000011111111";when "0110" =>b:="0000000011111111";when "0111" =>b:="1111111100000000";when "1000" =>b:="1111111100000000";when "1001" =>b:="1111111100000000";when "1010" =>b:="1111111100000000";when "1011" =>b:="1111111100000000";when "1100" =>b:="1111111100000000";when "1101" =>b:="1111111100000000";when "1110" =>b:="1111111100000000";when others =>null;end case;when"1100"=> selout<=selout+1;case selout iswhen "1111" =>b:="1111111100000001";when "0000" =>b:="0111111100000011";when "0001" =>b:="0011111100000111";when "0010" =>b:="0001111100001111";when "0011" =>b:="0000111100011111";when "0100" =>b:="0000011100111111";when "0101" =>b:="0000001101111111";when "0110" =>b:="0000000111111111";when "0111" =>b:="1111111110000000";when "1000" =>b:="1111111011000000";when "1001" =>b:="1111110011100000";when "1010" =>b:="1111100011110000";when "1011" =>b:="1111000011111000";when "1100" =>b:="1110000011111100";when "1101" =>b:="1100000011111110";when "1110" =>b:="1000000011111111";when others =>null;end case;when"1101"=> selout<=selout+1;case selout iswhen "1111" =>b:="1111111111111111";when "0000" =>b:="1111111111111111";when "0001" =>b:="1111110011111111";when "0010" =>b:="1111000011111111";when "0011" =>b:="1110000011111111";when "0100" =>b:="1111100011111111";when "0101" =>b:="1111110011001111";when "0110" =>b:="1111111001000111";when "0111" =>b:="1100000000000011";when "1000" =>b:="1110001100111111";when "1001" =>b:="1110011100011111";when "1010" =>b:="1111111100000111";when "1011" =>b:="1111111100001111";when "1101" =>b:="1111111111111111";when "1110" =>b:="1111111111111111";when others =>null;end case;when"1110"=> selout<=selout+1;case selout iswhen "1111" =>b:="1111111111111111";when "0000" =>b:="1111111111111111";when "0001" =>b:="1111111111111111";when "0010" =>b:="1111111111111111";when "0011" =>b:="1111000000001111";when "0100" =>b:="1111011100001111";when "0101" =>b:="1111001101101111";when "0110" =>b:="1111000111101111";when "0111" =>b:="1111011110001111";when "1000" =>b:="1111011011001111";when "1001" =>b:="1111000011101111";when "1010" =>b:="1111000000001111";when "1011" =>b:="1111111111111111";when "1100" =>b:="1111111111111111";when "1101" =>b:="1111111111111111";when "1110" =>b:="1111111111111111";when others =>null;end case;when"1111"=> selout<=selout+1;case selout iswhen "1111" =>b:="1111111111111111";when "0000" =>b:="1111111111111111";when "0001" =>b:="1111111111111111";when "0010" =>b:="1111111111111111";when "0011" =>b:="1111111111111111";when "0100" =>b:="1111111111111111";when "0101" =>b:="1111111111111111";when "0110" =>b:="1111111111111111";when "1000" =>b:="1111111111111111";when "1001" =>b:="1111111111111111";when "1010" =>b:="1111111111111111";when "1011" =>b:="1111111111111111";when "1100" =>b:="1111111111111111";when "1101" =>b:="1111111111111111";when "1110" =>b:="1111111111111111";when others =>null;end case;when others=>null;end case;end if;dotout<=b;end process;end one;六、原理图七、仿真波形1. 16进制计数器的仿真波形2.总体仿真波形八、实验总结通过这次对16*16点阵字符发生器的设计与实践,让我加深了对VHDL语言的了解。