XXXX可编程逻辑电路技术课程设计-扩展实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

可编程逻辑电路技术课程设计指导书张智海付丽编重庆大学光电工程学院222014年12月3目录演示实验一Hello-Led流水灯实验 ........................................................................................4 实验二16*16点阵设计................................................................................................................5 实验三液晶显示实验...............................................................................................................13 实验四VGA实验..........................................................................................................................18 实验五SOPChelloworld实验................................................................................................25 附录1SOPCBuilder和Nios-IIIDE使用步骤.....................................................................43 44演示实验一Hello-Led流水灯实验 一、实验目的1.熟悉SOPCBuilder和Nios-IIIDE的使用方法和步骤。2.了解Nios-II软核的配置方法,初步掌握对IO口的操作。二、实验模块FPGA主控制板模块、八个led三、实验原理采用NIOS软核实现跑马灯循环闪烁。四、实验内容1.利用QuartusII9.1sp2中的SOPCBuilder来创建NIOSII软核了。2.利用NiosII9.1sp2IDE编写程序来实现8个led灯的循环亮灭。3.实验者也可以适当修改程序来实现其他效果。五、实验步骤按照附录1步骤,下图为芯片的的引脚绑定图。输入信号名对应芯片端子名clkPIN_G1resetPIN_R1led[0]PIN_B4led[1]PIN_B3led[2]PIN_E5led[3]PIN_C3led[4]PIN_B1led[5]PIN_C1led[6]PIN_E4led[7]PIN_G35实验二16*16点阵设计一、实验目的1、学习点阵式LED显示的原理;2、学习动态扫描显示的原理;3、学习设计多字符点阵式;LED显示控制系统的设计方法。二、实验原理点阵是将LED显示二极管按照行列的顺序排列在一起,形成一个显示单元,常用的点阵式LED显示器是采用8*8点阵结构,一个显示单元可以显示一个ASCII字符,四个点阵式LED可以组成一个16*16点阵结构,可以显示一个16*16点阵的汉字。为驱动点阵式LED显示屏,通常情况是采用动态扫描方式,将点阵式LED构成的显示屏的同一行的LED短接在一起,控制电路一次输出每一行所对应的LED的亮灭状态,同时对应行输出有效,点亮该行对应的点,这样逐行显示,只要保证显示刷新频率大于50Hz,就可以看到一个稳定的字符、汉字。8X8点阵SZ410788KLED结构如下图所示:图1.1SZ410788K8X8点阵LED原理图R8R7R6R5R4R3R2R1CCCCCCCC66从图1.1中可以看出,SZ410788K点阵模块共有64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,若当对应的某一行置高电平,某一列置低电平,则相应的二极管就亮。系统框图如图1.2(a)所示,SZ410788K列输入线(C1~C8)接至内部LED的阴极端;行输入线(R1~R8)接至内部LED的阳极端。四个点阵式SZ410788K点阵LED可以组成一个16*16点阵结构,可以显示一个16*16点阵的汉字,图1.2(b)所示,对应的行驱动引脚为R1-----R16,列驱动引脚为C1-----C16。(a)LED点阵系统框图(b)LED点阵电路图图1.2LED点阵原理图7三、实验步骤1、首先利用字模软件提取汉字的字模例如“济南大学”的字模,这里已经提取完毕,就不需要再次提取了。这里汉字的每一行由两个字节构成,例如“济“的第一行,左边字节为”00000000”即0x00,右边字节为”1000”即0x80,同样第三行为”0011011111111110”即0x37、0xFE,其他同理。“济”0x00,0x80,0x40,0x44,0x37,0xFE,0x11,0x10,0x80,0xA0,0x60,0x40,0x21,0xB0,0x0E,0x0E,0x11,0x14,0x21,0x10,0xE1,0x10,0x21,0x10,0x21,0x10,0x22,0x10,0x20,0x10,0x24,0x10,“学”0x22,0x08,0x11,0x08,0x11,0x10,0x00,0x20,0x7F,0xFE,0x40,0x02,0x80,0x04,0x1F,0xE0,0x00,0x40,0x01,0x84,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x002、建立工程文件,并新建字模数据表,将字模逐个写入。建立工程后,新建newMemoryFilesmemoryinitializationfilesmif文件新建MIF数据表设定数据表大小本实验以显示“济“字为例,说明点阵显示的方法,所以建立了宽度16位的16个数据表如图所示,首先按照下图设置输入数据的格式为十六进制,然后将“济”字的字模依次输入,并保存命名为data.mif,如下图所示。88输入数据的格式设置3、建立LPM_ROM表选择ToolsMegawizardPlug-InManager弹出对话框如图所示。点击next,选择MemerycomplierROM:1-PORT,命名为data_rom.,用于读mif文件接口。9点击Next,写入16位宽度的16个数据,再点击Next进入下图所示的界面,选择data.mif文件路径,来初始化ROM文件。4、新建VHDL文件输入以下代码保存为point_array_16.vhdl。打开point_array_16.vhdl文件,选择FileCreat/UpdateCreatSymbolFilesforCurrentFiles生成顶层文件中的图形符号文件。libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitypoint_array_16isport(clk:instd_logic;row:outstd_logic_vector(15downto0);addr:outstd_logic_vector(3downto0));1010endpoint_array_16;architectureazaofpoint_array_16issignalfre_clk:std_logic;signaladdro:std_logic_vector(3downto0);----------------------------------------------------------------------------------COMPONENTdata_romIS--调用数据存储器LPM_ROM文件:data_rom.vhd--PORT(address:INSTD_LOGIC_VECTOR(3DOWNTO0);--4位地址信号--clock:INSTD_LOGIC;--地址锁时钟--q:OUTSTD_LOGIC_VECTOR(15DOWNTO0));--ENDCOMPONENT;--------------------------------------------------------------------------------begina:process(clk)variablecount:integerrange0to90;beginif(clk='1'andclk'event)thencount:=count+1;ifcount=10thenfre_clk='0';elsifcount=20thencount:=0;elsefre_clk='1';endif;endif;endprocess;b:process(fre_clk)variablei:integerrange15downto0:=0;beginif(fre_clk'eventandfre_clk='1')then11row=1111111111111111;addro=addro+1;row(i+1)='0';i:=i+1;endif;endprocess;addr=addro;endaza;5.按上图建立bdf文件,并保存,点鼠标右键setastop…设为顶层文件。6.编译工程、分配管脚,下载、连线。四、引脚接线使用信号,适配卡连线如下表所示:(注意,这个表中实际连线在试验箱中要行列互调才对)1212输入信号名对应芯片端子名c[15]PIN_G3c[14]PIN_E4c[13]PIN_C1c[12]PIN_B1c[11]PIN_C3c[10]PIN_E5c[9]PIN_B3c[8]PIN_B4c[7]PIN_B5c[6]PIN_B6c[5]PIN_D6c[4]PIN_D7c[3]PIN_C8c[2]PIN_A7c[1]PIN_A8c[0]PIN_A9clkPIN_G1r[15]PIN_G4r[14]PIN_E3r[13]PIN_D2r[12]PIN_C2r[11]PIN_B2r[10]PIN_C4r[9]PIN_E6r[8]PIN_A3r[7]PIN_A4r[6]PIN_A5r[5]PIN_A6r[4]PIN_C6r[3]PIN_C7r[2]PIN_B7r[1]PIN_B8r[0]PIN_B913实验三液晶显示实验一、实验目的用VHDL程序驱动LCD显示数字。二、实验原理下图是FM1602J液晶模块,其中R44、R45决定液晶的对比度。R/W为读写选择引脚,RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。RW为读写信号线,高电平时进行读操作,低电平时进行写操作。E(或EN)端为使能(enable)端。DB0~DB7为8位双向数据端。FM1602J液晶模块11条指令如附2.2所示。图2.1FM1602J液晶模块三、实验内容1、验证实验:验证LCD驱动程序,在液晶上循环显示0-7。2、设计实验:修改验证实验程序,在液晶的第一行显示0~F,显示完后清除显示,然后又从第一行第一个位置开始显示0~F,重复以上过程。只显示第一行,不显示第二行。四、实验步骤1、在QuartusII下建立工程,按照附2.1的实验例程建立vhd文件。2、选择器件EP4CE40F2317,对工程进行编译,编译无误后参考表2.1绑定引脚并进行编译。3、下载目标文件。4、观察实验结果。5、按照设计实验要求修改程序,编译无误后下载目标文件进行验证。1414表2.1适配卡连线表附2.1液晶显示VHDL程序--显示0~7,两行显示,固定位置显示,如:位置0显示“0”,位置15显示“7”libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;en

1 / 76
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功