PLD实验报告参考模板范本.doc
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《PLD实验报告参考模板范本.doc》由用户(林田)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PLD 实验 报告 参考 模板 范本
- 资源描述:
-
1、PLD实验报告 实验内容:用4*3键盘作为输入,在8*8的LED显示屏上采用动画过度的效果显示相应的字符,并以两个按键作为复位和字符循环播放模式。电路结构:1.4*3数字键盘键盘的按键识别方式采用行扫描,实际电路中由于列输入端在悬空时被内部电路拉高而呈逻辑1,所以需要使用低电平作为行扫描标志,相应的,列接收端以低电平作为有效信号。由于按键存在一定的抖动,所以在扫描时可以采用较低的扫描频率,也可以通过计数器保证一次按键的有效识别。2.8*8的LED显示屏:8*8LED显示屏可采用行扫描来进行显示,行以高电平作为扫描标志连接某一行的二极管的阳极,而列以低电平作为二极管的阴极输出。但由于FPGA驱动
2、能力有限,不可能同时驱动一整排的LED灯管,所以实验板上采用反向器提高其驱动能力,相应的在FPGA端,应使用以低电平作为标志的行扫描信号。3. 普通按键电路板上有四个被电路拉高为逻辑1的按键,在按键时呈现低电平,作为复位信号以及字符循环显示的模式选择。程序结构:1. 字符矩阵采用常量的方式存储大量的字符显示所需的矩阵信息:TYPE romtable IS ARRAY (0 TO 7) OF STD_LOGIC_VECTOR(7 DOWNTO 0);CONSTANT zero:romtable:=romtable(11000011, 10111101, 10111101, 10111101, 1
3、0111101,10111101, 10111101, 11000011);CONSTANT one:romtable:=romtable(11100111, 11000111, 11100111, 11100111, 11100111,11100111, 11100111, 11000011);CONSTANT two:romtable:=romtable(11000011, 10011001, 10111001, 11111011, 11110111,11101111, 11011111, 10000001);CONSTANT three:romtable:=romtable(110000
4、11, 11111001, 11111101, 11100011, 11111101,11111101, 11111001, 11000011);CONSTANT four:romtable:=romtable(11110111, 11101111, 11011111, 10110111, 10110111,10000001, 11110111, 11110111);CONSTANT five:romtable:=romtable(11000001, 11011111, 11000011, 11111001, 11111101,11111101, 10111001, 11000011);CON
5、STANT six:romtable:=romtable(11110111, 11101111, 11011111, 10100011, 10111101,10111101, 10111101, 11000011);CONSTANT seven:romtable:=romtable(10000001, 11111101, 11111011, 11110111, 11101111,11011111, 11011111, 11011111);CONSTANT eight:romtable:=romtable(11000011, 10111101, 10111101, 11000011, 10111
6、101,10111101, 10111101, 11000011);CONSTANT nine:romtable:=romtable(11000011, 10111101, 10111101, 10111101, 11000001,11111101, 11111101, 11000011);CONSTANT star:romtable:=romtable(11111111, 11101111, 10101101, 11000011, 11101111,11010111, 10111011, 11111111);CONSTANT sharp:romtable:=romtable(11111111
7、, 11011011, 10000001, 11011011, 11011011,10000001, 11011011, 11111111);CONSTANT act1:romtable:=romtable(00000000, 00000000, 00000000, 00011000, 00011000,00000000, 00000000, 00000000);CONSTANT act2:romtable:=romtable(00000000, 00000000, 00111100, 00111100, 00111100,00111100, 00000000, 00000000);CONST
8、ANT act3:romtable:=romtable(00000000, 01111110, 01111110, 01111110, 01111110,01111110, 01111110, 00000000);CONSTANT act4:romtable:=romtable(11111111, 11111111, 11111111, 11111111, 11111111,11111111, 11111111, 11111111);CONSTANT window1:romtable:=romtable(00000000, 00000000, 00111100, 00100100, 00100
9、100,00111100, 00000000, 00000000);CONSTANT window2:romtable:=romtable(00000000, 01111110, 01000010, 01000010, 01000010,01000010, 01111110, 00000000);CONSTANT window3:romtable:=romtable(11111111, 10000001, 10000001, 10000001, 10000001,10000001, 10000001, 11111111);CONSTANT window4:romtable:=romtable(
10、00000000, 00000000, 00000000, 00000000, 00000000,00000000, 00000000, 00000000);对应的图像如下:其中前12个对应键盘上的字符,而最后8个用作动画的窗。2.分频器整个程序使用一个PROCESS作为分频模块,采用多次渐进分频的方法,提供多种频率信号的输出,程序如下:SIGNAL clk4:STD_LOGIC:=0;SIGNAL clk5:STD_LOGIC:=0;SIGNAL clk6:STD_LOGIC:=0;clocks:PROCESS(clk,reset)VARIABLE clk1:STD_LOGIC_VECTOR
11、(7 DOWNTO 0):=00000000;VARIABLE clk2:STD_LOGIC_VECTOR(7 DOWNTO 0):=00000000;VARIABLE clk3:STD_LOGIC_VECTOR(7 DOWNTO 0):=00000000;BEGINIF reset=0 THEN-在需要的时候重置分频器参数。clk1:=00000000;clk2:=00000000;clk3:=00000000;ELSIF RISING_EDGE(clk) THEN-计数器工作,采用系统时钟50MHz,端口“Y11”clk1:=clk1+1;IF clk1=11111010 THEN-250
12、clk1:=00000000;clk2:=clk2+1;END IF;IF clk2=11111010 THEN-clk2每计数到250时跳变为0clk2:=00000000;clk3:=clk3+1;clk5=NOT clk5;-clk5产生400Hz的信号,作为8*8LED显示屏的扫描频率的8倍END IF;IF clk3=00100000 THEN-clk3每计数到32时跳变为0clk3:=00000000;clk4=NOT clk4;-clk4产生12Hz的信号,作为数字键盘的扫描频率的4倍END IF;clk6=clk3(5);END IF;END PROCESS;3. 数字键盘扫描
13、:采用clk4信号作为扫描时钟,同时使用复位信号reset进行复位,程序如下:SIGNAL rowtemp:STD_LOGIC_VECTOR(3 DOWNTO 0):=0000;scan:PROCESS(clk4,reset)-update rowVARIABLE rowtemp00:STD_LOGIC_VECTOR(3 DOWNTO 0):=0000;-采用内部信号进行计数。BEGINIF reset=0 THEN rowtemp00:=0000;rowtemp=0000;row rowtemp00:=0011;WHEN0011= rowtemp00:=0110;WHEN0110= rowt
展开阅读全文