1《CPLD/FPGA实验》实验报告题目:彩灯实验院(系):信息科学与技术系专业班级:电信0902班学生姓名:学号:指导教师:马玲2012年4月26日华中科技大学武昌分校制2一、实验目的1通过实验初步了解EDA的基本概念2能理解用VHDL语言实现硬件设计的思路3能熟练掌握EDA开发软件的使用二、实验原理在本实验中,8个彩灯共阴极接地,阳极分别为FPGA的8个I/0相连,I/O输出变化的电平,来控制彩灯的点亮。三、实验内容与步骤1打开QuartusⅡ软件,依次点击菜单栏中“File→NewProjectWizard”,出现对话框;如图在对话框中输入文件夹名、项目名、实体名,再点击Finishi。2点击菜单栏中“File→New”,出现的对话框如图所示,选中VHDLFile,点击OK。分别输入(1)(2)两个源程序,以文件名light和pin1hz保存并编译;在点击“File→Creat/Updata→CreatSymbolforCurrentFile”生成元件。注意在编译时点击菜单栏中“Project→SetasTop-LevelEntity”置顶。3(1)light模块源程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitylightisport(clk1:instd_logic;--时钟信号light:bufferstd_logic_vector(7downto0));--输出endlight;architecturebehvoflightisconstantlen:integer:=7;signalbanner:std_logic:='0';--定义信号banner为两种节拍转换信号;signalclk,clk2:std_logic;--信号CLK1,CLK2作为辅助时钟beginclk=(clk1andbanner)or(clk2andnotbanner);process(clk1)beginifclk1'eventandclk1='1'then--CLK1二分频得CLK2clk2=notclk2;endif;endprocess;process(clk)variableflag:bit_vector(2downto0):=000;beginifclk'eventandclk='1'thenifflag=000thenlight='1'&light(lendownto1);--顺序循环移位iflight(1)='1'then--依次点亮flag:=001;endif;elsifflag=001then--依次熄灭light=light(len-1downto0)&'0';iflight(6)='0'thenflag:=010;endif;elsifflag=010thenlight(lendownto4)=light(len-1downto4)&'1';--从中间向两边点light(len-4downto0)='1'&light(len-4downto1);iflight(1)='1'thenflag:=011;endif;elsifflag=011thenlight(lendownto4)='0'&light(lendownto5);--从两边向中间熄灭light(len-4downto0)=light(len-5downto0)&'0';iflight(2)='0'then4flag:=100;endif;elsifflag=100thenlight(lendownto4)='1'&light(lendownto5);--奇偶位循环点亮light(len-4downto0)='1'&light(len-4downto1);iflight(1)='1'thenflag:=101;endif;elsifflag=101thenlight=00000000;flag:=110;elsifflag=110then--重新开始banner=notbanner;--banner信号转换,实现第二种节拍flag:=000;endif;endif;endprocess;endbehv;(2)PIN1HZ模块源程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitypin1hzisport(clkin:instd_logic;clkout:outstd_logic);endpin1hz;architectureaofpin1hzisbeginprocess(clkin)variablecnttemp:integerrange0to49999999;beginifclkin='1'andclkin'eventthenifcnttemp=49999999thencnttemp:=0;elseifcnttemp25000000thenclkout='1';elseclkout='0';endif;cnttemp:=cnttemp+1;endif;endif;endprocess;enda;53点击菜单栏中“File→New”,如图所示,点击OK。如图所示,然后以文件名lightall保存。再进行编译。4设置器件CycloneEP1C6Q240C8,如图所示,点击OK。65点击菜单栏中“Assignments→Pins”,如图所示设置管脚。然后编译。6点击图标,如图。点击图标。7按实验连线要求,把实验板上需要连接的导线或短路帽插好,最后打开电源,点击“Start”即进行下载。下载成功后会出现成功的提示,反之会给出失败的提示。四、实验现象我们会看到LED屏幕上最下面一行全部亮然后熄灭,8个LED灯依次亮然后熄灭,如此反复。五、心得体会在连接两个CLKOUT时,错误的使用支线进行连接,应该使用总线进行连接。两个VHDL程序写完后要生成元件,否则无法查找到。