FPGA入门系列实验教程――点亮LED

合集下载

FPGA实验一 Quartus II的使用及点亮LED灯

FPGA实验一 Quartus II的使用及点亮LED灯

图2.1 LED灯电路3.点击图2.1.2中的【N e xt】进入工作目录,工程名的设定对话框如图2.1.3所示。

第一个输入框为工程目录输入框,用户可以输入如:FPGA等工作路径来设定工程的目录,设定好后,所有的生成文件将放入这个工作目录。

的哥输入框为工程名称输入框,第三个输入框位顶层实体名称输入框。

用户可以设定E X P1,一般情况下工程名称与实体名称相同。

使用者也可以根据自己的实际情况来设定。

4.点击【Next】,进入下一个设定对话框,按默认选项直接点击【Next】进行器件选择对话框,如图2.1.4-A和图2.1.4-B所示。

这里我们选择Cyclone II系列芯片EP2C5T144C8。

首先在对话框的左上方的Family下拉菜单中选取Cyclone II,在中间右边的Speed grade下拉菜单中选取8,在左下方的Availa ble devices中选取EP2C5T144C8,点击【Next】完成器件的选取,进入EDA TOOL设定界面如图2.1.5所示。

5.按默认选项,点击【Next】出现新建工程以前所有的设定信息,如图2.1.6所示,点击Finish完成新建工程的建立,如图2.1.7所示。

6.点击File>New,新建一个VHDL文件。

如图2.1.8所示。

7.点击OK,将VHDL程序写入后,如图2.1.9所示,并点击File>Save,无需做任何更改,点击OK即可。

如图2.1.10所示。

8.按照自己的想法,在新建的VHDL文件中编写VHDL程序。

9.代码书写结束后,选择Processing>Start Compilation对编写的代码进行编译,直到编译通过。

10.编译通过后,对试验中用到的LED进行管脚绑定。

选择Assign ments> Pins,会出现管脚分配对话框,如图2.1.11所示。

11.首先选择对应的引脚,然后在l o c a t i o n中按表2.1-1中端口引脚对应关系输入V H D L设计中对应的端口名称引脚号,如图2.1.12所示。

基础实验一_FPGA_LED

基础实验一_FPGA_LED

前言FPGA在复杂逻辑电路以及数字信号处理领域中扮演者越来越重要的角色,SOC(片上系统)以其低功耗,高性能,低成本,高可靠性等优点成为嵌入式系统的发展趋势。

作为一个简明的教程,主要宗旨是让初学者快速地了解FPGA/SOPC(可编程片上系统)开发的流程。

目前IT技术的发展可以说是一日千里,以本人的观点来讲,如果希望在电子设计领域有所作为,则必须具备快速掌握新技术的能力。

电子设计最重要的是实践的积累,我们只要具备了一定的基础,应当马上投入实践,否则很多概念都无法真正理解。

有不少人包括我,当下决心要成为一个合格的电子设计工程师的时候,总是想如果把有关电路方面的理论都掌握了才能所向披靡,有底气参加实际项目设计。

当然如果能做到“把有关理论都掌握了”这样的境界,我想应该是很理想的,但经验发现这并不实际。

据我所知,我所认识的不少电子设计牛人,他们的理论知识可能都比不上我们的本科生,但很多不错的产品都是从他们的手中开发出来的,有了实践的经验后,他们掌握新技术的速度相当惊人。

有人跟我说:“新技术是拿来用的,不是拿来学的。

”他们认为掌握新的设计技术应当尽快掌握它的设计流程。

因此,我参考朋友给我的意见,写了这个简易的教程,以非常详细的实例来让初学者了解基于QuartusII和NiosII IDE的FPGA/SOPC开发的基本流程,目的是为了让初学者尽快上手FPGA/SOPC的开发流程,尽快投入到实践中。

为了易于说明问题,本教程中的一些概念并不是很严谨,如果读者对某些提法有异议,请参考相关资料和教材,并以相关资料和教材为准。

通过该简明教程,初学者能快速了解FPGA/SOPC的基本开发流程,很多技巧和深入理解都靠长期的经验积累,因此初学者应该在了解了基本流程以后,思维不能局限于此,应在实践中提高水平,并参考更全面和权威的资料。

本教程配套CT-SOPCx系列FPGA/SOPC学习套件(对于该套件的相关内容请参考附录。

)以实践为基础,适合具备基本的数字电路设计基础的初学者。

FPGA彩灯实验实验报告

FPGA彩灯实验实验报告

《CPLD/FPGA实验》实验报告题目:彩灯实验院(系):信息科学与技术系专业班级:电信0902班学生姓名:学号:指导教师:马玲20 12 年 4 月 26 日华中科技大学武昌分校制一、实验目的1 通过实验初步了解EDA的基本概念2 能理解用VHDL语言实现硬件设计的思路3 能熟练掌握EDA开发软件的使用二、实验原理在本实验中,8个彩灯共阴极接地,阳极分别为FPGA的8个I/0相连,I/O 输出变化的电平,来控制彩灯的点亮。

三、实验内容与步骤1 打开QuartusⅡ软件,依次点击菜单栏中“File→New Project Wizard”,出现对话框;如图在对话框中输入文件夹名、项目名、实体名,再点击Finishi。

2 点击菜单栏中“File→New”,出现的对话框如图所示,选中VHDL File,点击OK。

分别输入(1)(2)两个源程序,以文件名light和pin1hz保存并编译;在点击“File→Creat/Updata→Creat Symbol for Current File”生成元件。

注意在编译时点击菜单栏中“Project→Set as Top-Level Entity”置顶。

(1)light 模块源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity light isport(clk1 : in std_logic; --时钟信号light : buffer std_logic_vector(7 downto 0)); --输出end light;architecture behv of light isconstant len : integer:=7;signal banner : std_logic:='0'; --定义信号banner为两种节拍转换信号;signal clk,clk2:std_logic; --信号CLK1,CLK2作为辅助时钟beginclk<=(clk1 and banner)or(clk2 and not banner);process(clk1)beginif clk1'event and clk1='1' then --CLK1二分频得CLK2clk2<=not clk2;end if;end process;process(clk)variable flag:bit_vector(2 downto 0):="000";beginif clk'event and clk='1' thenif flag="000" thenlight<='1'&light(len downto 1); --顺序循环移位if light(1)='1' then --依次点亮flag:="001";end if;elsif flag="001" then --依次熄灭light<=light(len-1 downto 0)&'0';if light(6)='0' thenflag:="010";end if;elsif flag="010" thenlight(len downto 4)<=light(len-1 downto 4)&'1'; --从中间向两边点light(len-4 downto 0)<='1'&light(len-4 downto 1);if light(1)='1' thenflag:="011";end if;elsif flag="011" thenlight(len downto 4)<='0'&light(len downto 5); --从两边向中间熄灭light(len-4 downto 0)<=light(len-5 downto 0)&'0';if light(2)='0' thenflag:="100";end if;elsif flag="100" thenlight(len downto 4)<='1'&light(len downto 5); --奇偶位循环点亮light(len-4 downto 0)<='1'&light(len-4 downto 1);if light(1)='1' thenflag:="101";end if;elsif flag="101" thenlight<="00000000";flag:="110";elsif flag="110" then --重新开始banner<=not banner; --banner信号转换,实现第二种节拍flag:="000";end if;end if;end process;end behv;(2)PIN1HZ模块源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity pin1hz isport(clkin : in std_logic;clkout : out std_logic);end pin1hz;architecture a of pin1hz isbeginprocess(clkin)variable cnttemp : integer range 0 to 49999999;beginif clkin='1' and clkin'event thenif cnttemp=49999999 then cnttemp:=0;elseif cnttemp<25000000 then clkout<='1';else clkout<='0';end if;cnttemp:=cnttemp+1;end if;end if;end process;end a;3 点击菜单栏中“File→New”,如图所示,点击OK。

点亮发光二极管

点亮发光二极管

EDA实验单元1FPGA器件为用户提供了数量较多的灵活独立的输入/输出I/O口,FPGA的每个I/O口可以配置为输入、输出、双向I/O、集电极开路和三态门等各种状态。

作为输出口使用时FPGA的I/O口可以输出最大40mA的电流,可以直接驱动发光二极管LED等硬件。

FreeDev系列开发板配置了4~8个LED和4位的数码管等器件,我们安排下列实验可以让用户感受和熟悉FPGA 的开发过程,学习Quartus II开发工具的使用方法和Verilog HDL语言的编程方法。

点亮发光二极管1.要求点亮FreeDev开发板上的8个发光二极管,通过此实验让用户逐步了解、熟悉和掌握FPGA开发软件Quartus II的使用方法及Verilog HDL编程方法。

2.分析FreeDev开发板为用户准备了8个发光二极管,其原理图见下图:标号LED0~LED7分别连接到FPGA的I/O引脚(具体引脚对应表见后),只要正确分配并锁定引脚后,在相应的引脚上输出高电平“1”,就可以实现点亮该发光二极管的功能。

3.程序设计要求实现点亮LED发光二极管,因此只须在相应的引脚上输出高电平“1”即可,完整的Verilog HDL程序如下(两种实现方法,二选一即可):(1)利用assign语句实现,文件名led.v。

module led(ledout); //模块名ledoutput [7:0]ledout; //定义输出口assign ledout=8’01010101; //输出0x55endmodule(2)利用过程赋值语句来实现,文件名led2.v。

module led(ledout); //模块名ledoutput [7:0]ledout; //定义输出口reg [7:0]ledout; //定义寄存器alwaysbeginledout=8’b01010101;endendmodule4.实验方法注意:在该范例实验工程中我们给出Quartus II下面操作实现的详细图示,在以后的实验范例中这些基本操作不再详细图示。

fpga点亮led灯的编程概述

fpga点亮led灯的编程概述

fpga点亮led灯的编程概述FPGA(可编程门阵列)作为一种可重构的硬件设备,具有广泛的应用领域。

其中点亮LED灯是FPGA学习和开发中的经典案例之一,本文将一步一步回答"[fpga点亮led灯的编程概述]"。

第一步:了解FPGA基础知识在开始讨论FPGA点亮LED灯的编程方法之前,首先需要了解FPGA的基础知识。

FPGA由可编程逻辑单元(PL)和配置逻辑单元(CLB)组成。

PL由一系列可编程逻辑块(CLB)和查找表(LUT)组成,而CLB包含可编程开关和触发器。

通过将这些部件配置为特定的逻辑功能或电路,FPGA 实现了在硬件上执行特定任务的能力。

第二步:了解LEDLED(发光二极管)是一种电子元件,能够将电能转化为可见光。

它通常由一个正极(阳极)和一个负极(阴极)构成。

第三步:了解FPGA开发工具要对FPGA进行编程,需要使用特定的开发工具。

常见的FPGA开发工具包括Xilinx的Vivado和Altera的Quartus II。

这些工具提供了一个开发环境,可以进行FPGA设计、仿真和调试。

第四步:设计LED控制电路为了点亮LED灯,需要设计一个电路,将FPGA的输出信号连接到LED的控制引脚上。

一个简单的LED控制电路通常由一个电阻和一个开关构成。

电阻用于限制电流,而开关用于控制电路的通断。

当开关关闭时,电流流过LED,LED灯亮起。

第五步:编写HDL代码现在,我们可以开始编写HDL(硬件描述语言)代码,描述FPGA的逻辑和功能。

常见的HDL语言包括VHDL和Verilog。

以下是一个简单的VHDL 代码片段,用于点亮LED灯。

vhdl定义一个实体(entity),包含一个输入信号(clk)和一个输出信号(led)entity led_controller isport (clk : in std_logic;led : out std_logic);end entity led_controller;声明结构体(architecture),使其逻辑在每个时钟循环(rising_edge(clk))时执行。

小梅哥和你一起深入学习FPGA之点亮LED灯(下)

小梅哥和你一起深入学习FPGA之点亮LED灯(下)
第2页共3页
手头暂无开发板,板级验证略。 十、 总结 可能无数初学,又看过其它一些资料的学生会对小梅哥的这种组织方式 感觉不太习惯,认为原来一个代码模块就能搞定的事儿被我硬生生拆成 了两个,增强了系统的复杂性。其实,我这里主要是强调了一种建模的 思想,我们所做的模块一定要具有灵便性和通用性,当其它设计中需要 用到该外设时,只需要关怀其内部端口就行了,在顶层例化时只需要将 对应信号接到该端口上就能实现功能了,不用再特地为了特定应用再写 一次。目前系统容易,可能大家还看不出这种方式的优势,随着以后的 设计越来越复杂,大家就能很显然的看到这种设计方式的优势所在了。
小梅哥和你一起深入学习 FPGA 之点亮 LED 灯(下)
七、 测试平台设计 本试验主要对的输出和输入与复位的关系举行测试,通过仿真,即可验 证设计的正确性和合理性。相关 testbench 的代码如下: 以下是代码片段: `timescale 1ns/1ns module LED_Driver_tb; reg Rst_n; reg [3:0] Sig; wire [3:0] Led; LED_Driver ( /*参数例化*/ .Width (4) )
LED_Driver_inst(/*端口例化*/ .Rst_n(Rst_n), .Sig(Sig),/*OFF ON ON OFF*/ .Led(Led) ); initial begin Rst_n = 0; Sig = 4'b1010; 100; Rst_n = 1; 40 Sig = 4'b0001; 40 Sig = 4'b0010; 40 Sig = 4'b0011; 40 Sig = 4'b010Sig = 4'b0101; 40 Sig = 4'b0110; 40 Sig = 4'b0111; 40 Sig = 4'b1000; 40 Sig = 4'b1001; 40 Sig = 4'b1010; 40 Sig = 4'b1011; 40 Sig = 4'b1100; 40 Sig = 4'b1101; 40 Sig = 4'b1110; 40 Sig = 4'b1111; 40; $stop; end

FPGA入门系列实验教程——点亮LED

FPGA入门系列实验教程——点亮LED

FPGA入门系列实验教程——点亮LED1.实验任务点亮发光二极管。

通过这个实验,熟悉并掌握CPLD/FPGA开发软件Quartus II的使用方法和开发流程以及Verilog HDL的编程方法。

2.实验环境硬件实验环境为艾米电子工作室型号EP2C5T144开发套件。

软件实验环境为Quartus II8.1开发软件。

3.实验原理FPGA器件同单片机一样,为用户提供了许多灵活的独立的输入/输出I/O口(单元)。

FPGA每个I/O口可以配置为输入、输出、双向、集电极开路和三态门等各种组态。

作为输出口时,FPGA的I/O口可以吸收最大为24mA的电流,可以直接驱动发光二极管LED等器件。

图1.1为8个发光二极管硬件原理图,本原理图对应艾米电子工作室型号为EP2C5T144FPGA开发板及接口板。

通过原理图可知如果要点亮这八个LED,所以只要正确分配并锁定引脚后,在相应的引脚上输出相应高电平“1”,就可实现点亮该发光二极管的功能。

本工作室开发板均采用输出“1”点亮LED的模式,以后就不再另作说明。

图1.1发光二极管LED硬件原理图4.实验程序(1)利用连续赋值assign 语句来实现(文件名led.v )module led1(led);//模块名ledoutput[7:0]led;//定义输出端口assign led=8'b10101010;//输出0x AAendmodule(2)利用过程赋值语句来实现(文件名led1.v )module led1(led);//模块名led1output[7:0]led;//定义输出端口reg[7:0]led;alwaysbeginled=8'b10101010;//输出0xAAendendmodule5.实验步骤1)打开Quartus II 软件并建立工程(1)通过桌面上的快捷方式打开Quartus II 8.1软件,进入集成开发环境,软件界面如图1.2所示。

基础实验一、FPGA实现按键控制LED

基础实验一、FPGA实现按键控制LED
QuartusII 下面的 Message 窗口会显示一些编译信息,最后编译成功弹出提示:
7. 下载。 (1) 下载设置:如果第一次使用下载线下载配置文件到 FPGA,则需要在 QII 软件设 置下载线的型号等信息。先将 ByteBlasterII 下载线的一头接到 PC 的并口,执行菜单 Tools->Programmer(如下图)
Ñï¹âµç×Ó¹¤×÷ÊÒ
扬光电子工作室 qq:115513875 email:xiaoding113@
(5) 如果要下载到非易失 Flash 配置芯片(掉电后配置信息不丢失)里去,则将 ByteBlasterII 插到 EPCS1 芯片的下载口。并在下载界面的“Mode:”下拉列表应选择“Active Serial Programming”,并选择工程中.pof 后缀的文件进行下载。一般情况下使用 JTAG 下载 即可,等整个设计都完成了不需要再修改后才把最后的 POF 下载到 EPCS 芯片中。
Ñï¹âµç×Ó¹¤×÷ÊÒ
扬光电子工作室 qq:115513875 email:xiaoding113@
这里是选择其它 EDA 工具,对于该工程我们直接用 QuartusII 软件进行开发,因此不必 做修改,按 NEXT 进入工程的信息总缆对话框:
按 Finishi 按纽即建立一个空项目。 2、 建立顶层图
在工程目录下建立一个 name 为 Setup.tcl 的 file。File->New,选择 other files 页面:
Ñï¹âµç×Ó¹¤×÷ÊÒ
扬光电子工作室 qq:115513875 email:xiaoding113@
有关 tcl 文件的更详尽内容可参考 QuartusII 的帮助文档,对于我们所选用的 FPGA 开 发板 SOPC 开发板来说,由于不同型号的 FPGA 核心板的管脚与实验板上的引脚也不同, 因此不同的核心板对应的.tcl 文件也不同(关于核心板引脚与实验板引脚对应的详细情况请 学习套件用户手册”或相关电路原理图)。在实际项目中,该文件也可以根据具体管脚分配 要求来改写。

VHDL_fpga_数电实验_彩灯_LED_实验报告

VHDL_fpga_数电实验_彩灯_LED_实验报告

彩灯VHDL设计在日常生活中,为了增加聚会或是过节氛围,经常要使用到彩灯循环点亮。

单一的循环可能无法起到理想的效果,通过不同花样的变换则能够很好的完成任务。

多路彩灯循环控制可以有多种实现方法,例如利用单片机可以实现,利用数字电路时序逻辑也可以实现。

我们这里利用VHDL语言实现对多路彩灯的控制。

彩灯的一种点亮方式经过足够长的延时后,转变为了其他的点亮方式。

这就需要一个CLK信号完成,CLK信号可以由晶体振荡器或者是振荡电路产生。

至于各种不同花样彩灯的变换,我们可以通过增加输入信号Sel来控制。

Sel为两位二进制数,分别为00,01,10,11,四种状态对应四种花样。

同时系统还需一个复位信号实现对电路的清零控制。

输出八位彩灯,我们这里用LED发光二极管代替。

当电路输出为“1”时,LED点亮。

当电路输出为“0”时,LED熄灭。

利用VHDL语言实现该功能程序如下:LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;USE IEEE.std_logic_ARITH.ALL;USE IEEE.std_logic_UNSIGNED.ALL;ENTITY cd ISport( clk,clk_use:in std_logic;rst:in std_logic;light:out std_logic_vector(7 downto 0));END cd;ARCHITECTURE control OF cd IStype states is (s0,s1,s2,s3,s4,s5);signal state:states;SIGNAL clk1ms:std_logic:='0';SIGNAL cnt1:std_logic_vector(3 downto 0):="0000";SIGNAL cnt2:std_logic_vector(3 downto 0):="0000";SIGNAL cnt3:std_logic_vector(2 downto 0):="000";SIGNAL cnt4:std_logic_vector(2 downto 0):="000";SIGNAL cnt5:std_logic_vector(3 downto 0):="0000";SIGNAL cnt6:std_logic_vector(3 downto 0):="0000";BEGINPROCESS(clk1ms)BEGINif clk1ms'event and clk1ms='1' thenif state=s0 then --第一种彩灯花样的程序if (cnt1="1111") thencnt1<="0000";else cnt1<= cnt1+1;end if;case cnt1 iswhen "0000"=>light<="10000000";when "0001"=>light<="10100000";when "0010"=>light<="10101000"; when "0011"=>light<="10101010"; when "0100"=>light<="11101010"; when "0101"=>light<="11111010"; when "0110"=>light<="11111110"; when "0111"=>light<="11111111"; when "1000"=>light<="11111110"; when "1001"=>light<="11111010"; when "1010"=>light<="11101010"; when "1011"=>light<="10101010"; when "1100"=>light<="10101000"; when "1101"=>light<="10100000"; when "1110"=>light<="10000000"; when others=>light<="00000000";end case;elsif state=s1 then -- 第二种彩灯花样的程序if cnt2="1111" thenCnt2<="0000";else cnt2<= cnt2+1;end if;case cnt2 iswhen "0000"=>light<="11111111"; when "0001"=>light<="01111111"; when "0010"=>light<="00111111"; when "0011"=>light<="00011111"; when "0100"=>light<="00001111"; when "0101"=>light<="00000111"; when "0110"=>light<="00000011"; when "0111"=>light<="00000001"; when "1000"=>light<="00000011"; when "1001"=>light<="00000111"; when "1010"=>light<="00001111"; when "1011"=>light<="00011111"; when "1100"=>light<="00111111"; when "1101"=>light<="01111111"; when "1110"=>light<="11111111"; when others=>light<="00000000";end case;elsif state=s2 then -- 第三种彩灯花样的程序if cnt3="100" thenCnt3<="000";else cnt3<= cnt3+1;end if;case cnt3 iswhen "000"=>light<="10000001"; when "001"=>light<="11000011"; when "010"=>light<="11100111"; when "011"=>light<="11111111"; when others=>light<="00000000";end case;elsif state=s3 then -- 第四种彩灯花样的程序if cnt4="100" thencnt4<="000";else cnt4<= cnt4+1;end if;case cnt4 iswhen "000"=>light<="00011000"; when "001"=>light<="00111100"; when "010"=>light<="01111110"; when "011"=>light<="11111111"; when others=>light<="00000000";end case;elsif state=s4 then --第五种彩灯花样的程序if cnt5="1111" thenCnt5<="0000";else cnt5<=cnt5+1;end if;case cnt5 iswhen "0000"=>light<="11000000"; when "0001"=>light<="01100000"; when "0010"=>light<="00110000"; when "0011"=>light<="00011000"; when "0100"=>light<="00001100"; when "0101"=>light<="00000110"; when "0110"=>light<="00000011"; when "0111"=>light<="00000110"; when "1000"=>light<="00001100"; when "1001"=>light<="00011000"; when "1010"=>light<="00110000"; when "1011"=>light<="01100000"; when "1100"=>light<="11000000"; when others=>light<="00000000";end case;elsif state=s5 then -- 第六种彩灯花样的程序if cnt6="1111" thenCnt6<="0000";else cnt6<=cnt6+1;end if;case cnt6 iswhen "0000"=>light<="00000011"; when "0001"=>light<="00000110"; when "0010"=>light<="00001100"; when "0011"=>light<="00011000"; when "0100"=>light<="00110000"; when "0101"=>light<="01100000"; when "0110"=>light<="11000000"; when "0111"=>light<="01100000"; when "1000"=>light<="00110000"; when "1001"=>light<="00011000"; when "1010"=>light<="00001100"; when "1011"=>light<="00000110"; when "1100"=>light<="00000011"; when others=>light<="00000000";end case;end if;end if;END PROCESS P1;P2:PROCESS(clk) --分频进程variable cnt:integer range 0 to 10; BEGINIF(RST='0')thencnt:=0;ELSIF(clk'EVENT AND clk='1')thenif cnt<9 thencnt:=cnt+1;clk1ms<='0';elsecnt:=0;clk1ms<='1';end if;end if;end PROCESS P2;process(rst)--循环beginif (rst='1') thenstate<=s0;elseif(clk_use'event and clk_use='1') thencase state iswhen s0 =>state<=s1;when s1=>state<=s2;when s2=>state<=s3;when s3 =>state<=s4;when s4=>state<=s5;when s5=>state<=s1;end case;end if;end if;end process;end control;本控制电路采用VHDL语言设计。

FPGA实验开发系统之LED显示模块

FPGA实验开发系统之LED显示模块

FPGA实验开发系统之LED显示模块The LED Display Module of the FPGA Experiment and Development System摘要可编程逻辑器件的飞速发展及其越来越广泛的应用于电子信息产业的各个领域,使得可编程逻辑器件的电路设计显得越来越重要,本文介绍的就是利用现场可编程逻辑器件FPGA实现对数码管的显示的管理和控制。

整个设计从EDA技术出发,采用自顶向下的设计方法,首先叙述了顶层结构的划分,然后再较详细地介绍各个层次模块的功能和实现方法,同时给出了原理框图和全部仿真波形图以及全部的VHDL模块程序的清单。

关键字:可编程逻辑器件现场可编程门阵列数码管硬件描述语言AbstractQuickly progress of programmable device has brought many changes in design of digital circuit when they use more and more widely in many military and civilian applications. This paper introduces the management and control of the LED display with the FPGA.The design based on EDA technology, and used Top-to-Down method. First it introduces top level, then describes the second and other levels' modules in detail. This paper also provides all of the structure diagrams, simulation wave figures and all of the VHDL codes.Key words:CPLD FPGA LED VHDL1.文献综述1.1 FPGA简介FPGA是20 世纪80年代中期出现的高密度可编程逻辑器件,其结构类似于掩膜可编程门阵列,它由许多独立的可编程逻辑模块组成,用户可以通过编程将这些模块连接起来实现不同的设计。

实验一应用QuartusⅡ完成LED的驱动

实验一应用QuartusⅡ完成LED的驱动

实验一 LED的驱动实验一、实验目的通过实验,是同学们能够逐步了解、熟悉和掌握FPGA开发软件QuartusⅡ的使用方法及VHDL语言的编程方法。

二、实验内容本实验的内容是采用VHDL语言输入和原理图输入两种方式,控制LED亮/灭,要求点亮SmartEDA实验箱上的8个发光二极管。

实验内容包括:(1)使用QuartusⅡ建立工程;(2)QuartusⅡ工程设计;(3)下载硬件设计到目标FPGA;(4)观察LED状态。

三、实验原理FPGA器件同单片机一样,为用户提供了许多灵活独立的输入/输出I/O口。

FPGA每个I/O口可以配置为输入、输出、双向I/O、集电极开路和三态门等各种组态。

做输出口时,FPGA的I/O口可以吸收最大为24mA的电流,可以直接驱动发光二极管LED等器件。

所以只要正确分配并锁定引脚后,在相应的引脚上输出低电平“0”,就可实现点亮该发光二极管的功能。

四、实验步骤4.1VHDL语言输入方式下的工程建立步骤1、使用QuartusⅡ建立工程(1)打开QuartusⅡ软件并建立工程①打开Altera下的QuartusⅡ软件,软件界面如图1.1所示。

图 1.1②选择File—New project wizard来新建一项工程(注意是新建工程,不是New),如图1.2。

图1.2③任何一项设计都是一项工程,必须首先为此工程建立一个放置与此工程相关的所有文件的文件夹,此文件夹将被QuartusⅡ默认为工作库。

一般来说,不同的设计项目最好放在不同的文件夹中,而同一工程的所有文件都必须放在同一文件夹中。

不要将文件夹设在计算机已有的安装目录中,更不要将工程文件直接放在安装目录中。

文件夹所在路径名和文件夹名不能用中文、空格和括号,可用下划线“_”,最好不要以数字开头。

图1.3中第一栏用于指定工程所在的工作库文件夹;第二栏用于指定工程名,工程名可以取任何名字,也可以直接用顶层文件的实体名作为工程名(建议使用);第三栏用于至顶层文件的实体名。

实验一:点亮第一个LED灯

实验一:点亮第一个LED灯
示,拨码开关任意拨第四个,第四个灯会亮。
六、讨论
1:仿真软件的安装最后一步需要升级。 2:define 语句不写分号。
七、参考文献
《微机原理与接口技术》实验指导书
第5页
三、程序设计
开始
P0=P1
程序说明:从主程序开始不断执行将 P1 口赋值给 P0 口。
四、程序代码
#include <reg51.h> void main(void) // 程序主函数 {
第3页
技术报告用纸
while(1) // 循环用于实时扫描 IO 状态 { P0=P1; // 将 P1 口的数据发送给 P0 口 } } 五、运行结果
第1页
二、硬件设计
技术报告用纸
图 1-1 LED 接口电路 电路图说明:该图为 LED 接口电路,P0 口连接八个 LED 灯,每个 LED 灯要接 300 欧的上拉电阻 作为保护电路。八个灯为共阳极,低电平点亮 LED 灯。
第2页
技术报告用纸
图 1-2 拨码开关电路图 该图为拨码开关电路图,每个开关拨上连接到地,P1 口为低电平,拨下连接到 VCC,P1 口为高电 平。
实验内容为设置p1为输入口p0口为输出口将p1口的开关状态发送到p0口让灯亮灭将p1的电平状态通过p0口的led的亮灭表示出来
技术报告用纸
电气与自动化工程学院
单片机实训 课程研究型学习 技术报告
项目名称:
点亮第一个 LED 灯
学生姓名:
张倩如
学号: 160512239
项目序号:
1
专业: 自动化
提交时间:
一、项目概述
通过一简单的实验掌握: 1. 掌握 PL2303 驱动的安装,掌握 Keil3 开发环境的安装、设置和基本使用; 2. 掌握项目、文件的建立方法、程序的下载以及寄存器、存储器内容的查看方法; 3. 掌握程序的执行及断点设置方法。 实验内容:通过了解 P1 口的开关控制电路和 P0 的 LED 电路,编写基本输入输出实验程序。实验 内容为设置 P1 为输入口,P0 口为输出口,将 P1 口的开关状态发送到 P0 口,让灯亮灭,将 P1 的电平 状态通过 P0 口的 LED 的亮灭表示出来。 本实验由自己独立一人完成所有上述项目。

史上最全的LED点灯程序,你都掌握了吗?

史上最全的LED点灯程序,你都掌握了吗?

史上最全的LED点灯程序,你都掌握了吗?⼲货福利,第⼀时间送达!摘要:你点亮过多少板⼦的LED灯呢?有很多⼩伙伴留⾔说讲⼀下STM32、FPGA、Liunx他们之间有什么不同。

不同点很多,⼝说⽆凭,今天就来点亮⼀下STM32、FPGA和Liunx板⼦的LED灯,⼤家⼤致看⼀下点灯流程和点灯环境以及点灯流程,就能⼤概的了解⼀下三者的区别,可以有选择的去学习!⼀、使⽤STM32点亮LED灯STM32从字⾯上来理解ST是意法半导体,M是Microelectronics的缩写,32 表⽰32位,合起来理解,STM32就是指ST公司开发的32位微控制器。

在如今的32 位控制器当中,STM32可以说是最璀璨的新星,它受宠若娇,⼤受⼯程师和市场的青睐,⽆芯能出其右。

⾸先使⽤STM32电亮⼀个led灯,⼤家现在回过头来看是不是⾮常的简单。

STM32初始化流程1、使能指定GPIO的时钟。

2、初始化GPIO,⽐如输出功能、上拉、速度等等。

3、STM32有的IO可以作为其它外设引脚,也就是IO复⽤,如果要将IO作为其它外设引脚使⽤的话就需要设置 IO 的复⽤功能。

4、最后设置GPIO输出⾼电平或者低电平。

1、新建⼯程2、代码编写//LED IO初始化void LED_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF时钟//GPIOF9,F10初始化设置GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//LED0和LED1对应IO⼝GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHzGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIOGPIO_SetBits(GPIOF,GPIO_Pin_9 | GPIO_Pin_10);//GPIOF9,F10设置⾼,灯灭}3、编译代码4、配置下载器烧录代码⼆、使⽤FPGA点亮LED灯FPGA(Field Programmable Gate Array,简称 FPGA),译⽂:现场可编程门阵列,⼀种主要以数字电路为主的集成芯⽚,于1985年由Xilinx创始⼈之⼀ Ross Freeman发明,属于可编程逻辑器件PLD(Programmable Logic Device)的⼀种。

小梅哥和你一起深入学习FPGA之点亮LED灯(上)

小梅哥和你一起深入学习FPGA之点亮LED灯(上)

小梅哥和你一起深入学习FPGA之点亮LED灯(上)关键词: FPGA , LED在之前更新的目录里面,并没有安排这个实验,第一个实验应该是独立按键的检测与消抖。

可是,当小梅哥来做按键消抖的实验时,才发现没有做基本的输出设备,因此按键检测的结果无法直观的展示出来。

也算是为后续实验做铺垫吧,第一个实验就安排成了点亮LED灯。

一、实验目的实现4个LED灯的亮灭控制二、实验原理LED灯的典型电路如下2-1所示,我们控制led灯的亮灭,实质就是去控制FPGA的IO输给LED负极一个低电平或者高电平。

从图中可知,我们给对应的led负极上一个低电平,就会有对应的电流通过电阻,流过led灯,于是LED灯就会被点亮;当给led负极一个高电平时,led两端电压相等,因此没有电流流过,led则呈熄灭状态。

图2-1 led灯典型电路三、硬件设计本实验的硬件电路即如图2-1所示,读者一看即懂,因此本节内容略。

四、架构设计虽然本实验只是一个简单的点亮led灯实验,整个实验代码不过四五行,但是为了遵循小梅哥一直喜欢的那种模块化的设计理念,因此本设计还是将led的驱动做成子模块的形式。

本实验由两个模块组成,分别为led驱动模块和顶层例化模块,可能看过其它开发板资料的同学会觉得这样反而增加了系统的复杂程度,但是,小梅哥如此设计必定有我的道理,图4-1为本实验的模块组织结构图4-1 led实验模块组织结构图由图可知本实验仅有n个输出端口,对应了n个led灯(为了代码的可移植性,这里并没有将led的个数限定死,而是采用了参数化的设计,因此,在实际使用过程中,就可根据实际不同的需要,自由的调整led的个数)。

在modelsim仿真过程中,所有信号必须要有复位初始值,因此复位信号(Rst_n)必不可少。

可能读者这里会发现,与我昨天所写的端口命名规范有出入。

如果按照我所出的规范中来命名的话,则应该将复位信号命名为Global_Rst,对于这个问题,暂时小梅哥不做深入解说,其实严格意义上来说,这里的这个Rst_n应该只能算是一个内部信号,该信号在实际工程应用中往往由锁相环产生。

FPGA入门系列实验教程——按键消抖控制LED亮灭

FPGA入门系列实验教程——按键消抖控制LED亮灭

FPGA入门系列实验教程——按键消抖控制LED亮灭1.实验任务实现按键控制LED亮灭。

通过这个实验,掌握采用Verilog HDL语言编程实现按键控制LED亮灭及按键消抖方法。

2.实验环境硬件实验环境为艾米电子工作室型号EP2C8Q208C8增强版开发套件。

软件实验环境为Quartus II8.1开发软件。

3.实验原理当独立按键key1按下后,相应的LED被点亮;再次按下后,LED做翻转输出,即LED熄灭,从而实现按键控制LED亮灭。

本实验对按键进行了消抖处理。

作为机械开关的按键,操作时,机械触点的弹性及电压突跳等原因,在触点闭合或开启的瞬间会出现电压抖动,实际应用中如果不进行处理将会造成误触发。

按键去抖动的关键在于提取稳定的低电平状态,滤除前沿、后沿抖动毛刺。

按键消抖处理一般有硬件和软件两种方法。

软件消抖是检测到有触发后,延时一段时间后再检测触发状态,如果与之前检测到的状态相同,则认为有按键按下;如果没有则认为是误触发。

硬件就是加去抖电路。

4.实验程序module key_debounce(rst_n,clk,key,led);input rst_n;input clk;input key;output led;//通过降采样对key的输入做低通滤波,将其高频分量滤除,得到low_sw值reg[17:0]cnt;always@(posedge clk)if(!rst_n)cnt<=18'd0;elsecnt<=cnt+1'b1;wire sample_pulse=cnt==18'h3ffff;reg low_sw;always@(posedge clk)if(!rst_n)low_sw<=1'b1;else if(sample_pulse)low_sw<=key;//在整个low_sw(active_low)有效过程中取一个控制量作为led的控制信号//本实例中使用low_sw的下降沿reg low_sw_r;//将low_sw信号锁存一个时钟周期,延时不是真的“锁存”always@(posedge clk)low_sw_r<=low_sw;wire led_ctrl=low_sw_r&(!low_sw);reg led;always@(posedge clk or negedge rst_n)if(!rst_n)led<=1'b0;else if(led_ctrl)led<=~led;endmodule5.实验步骤(1)建立新工程项目:打开Quartus II软件,进入集成开发环境,点击File→New project wizard建立一个工程项目key_debounce。

基础实验一_FPGA_LED

基础实验一_FPGA_LED

前言FPGA在复杂逻辑电路以及数字信号处理领域中扮演者越来越重要的角色,SOC(片上系统)以其低功耗,高性能,低成本,高可靠性等优点成为嵌入式系统的发展趋势。

作为一个简明的教程,主要宗旨是让初学者快速地了解FPGA/SOPC(可编程片上系统)开发的流程。

目前IT技术的发展可以说是一日千里,以本人的观点来讲,如果希望在电子设计领域有所作为,则必须具备快速掌握新技术的能力。

电子设计最重要的是实践的积累,我们只要具备了一定的基础,应当马上投入实践,否则很多概念都无法真正理解。

有不少人包括我,当下决心要成为一个合格的电子设计工程师的时候,总是想如果把有关电路方面的理论都掌握了才能所向披靡,有底气参加实际项目设计。

当然如果能做到“把有关理论都掌握了”这样的境界,我想应该是很理想的,但经验发现这并不实际。

据我所知,我所认识的不少电子设计牛人,他们的理论知识可能都比不上我们的本科生,但很多不错的产品都是从他们的手中开发出来的,有了实践的经验后,他们掌握新技术的速度相当惊人。

有人跟我说:“新技术是拿来用的,不是拿来学的。

”他们认为掌握新的设计技术应当尽快掌握它的设计流程。

因此,我参考朋友给我的意见,写了这个简易的教程,以非常详细的实例来让初学者了解基于QuartusII和NiosII IDE的FPGA/SOPC开发的基本流程,目的是为了让初学者尽快上手FPGA/SOPC的开发流程,尽快投入到实践中。

为了易于说明问题,本教程中的一些概念并不是很严谨,如果读者对某些提法有异议,请参考相关资料和教材,并以相关资料和教材为准。

通过该简明教程,初学者能快速了解FPGA/SOPC的基本开发流程,很多技巧和深入理解都靠长期的经验积累,因此初学者应该在了解了基本流程以后,思维不能局限于此,应在实践中提高水平,并参考更全面和权威的资料。

本教程配套CT-SOPCx系列FPGA/SOPC学习套件(对于该套件的相关内容请参考附录。

)以实践为基础,适合具备基本的数字电路设计基础的初学者。

FPGA开发流程简介——LED闪烁例程

FPGA开发流程简介——LED闪烁例程

图 15
图 16
图 17 至此,我们从原理图开始定义一个模块端口和功能,到用 verilog 具体实现这个模块功能,整个过程是一个典型 的自顶向下的设计方法。接下来,我们要对 divider 模块进行行为仿真(Behavioral Simulation) 。行为仿真需要一个 test bench(测试平台) ,虽然 ISE 提供了专门的 test bench 文件类型(test bench waveform) ,但是我们常用自己编 写一个 testbench 来做仿真。具体方法是在 Source 窗口 Source 标签页内右击选择 New Source,添加一个 verilog 文 件,该文件没有端口,为顶层模块,在模块内部实例化前面设计好的 divider 模块并初始化其端口,以及编写测试向 量,利用系统函数控制和显示仿真流程。如图 18、19、20
图 36 至此,我们已经用前仿真验证了 divider 模块的正确性。我们继续添加其他模块,关闭 ModelSim,回到 ISE。在 Source 窗口的 Source 标签页上部的 Sources for 下拉列表框中选择 Synthesis/Implementation。接着在 Source 标签页 内右击,在弹出菜单中选择 New Source,选择 IP 文件类型。所谓的 IP 是指具有 intellectual property 的器件/模 块/内核等等,针对每一款芯片,厂商都会提供一堆能用于该芯片设计的 IP,方便用户的开发。在这里我们将利用 ISE 集成的 IP 添加 Xilinx FPGA 内部的一个 DCM 模块到设计中来。DCM 模块是一个数字时钟管理模块,能够实现 输出时钟对输入时钟的相位锁定、频率变换、消除延迟等等功能。我们的设计中,用 DCM 模块对输入的晶振时钟 进行分频。在 Source 窗口的 Source 标签页中右击 led_demo.sch,在弹出菜单中选择 New Source,弹出如图 37 所示对话框,单击 Next,如图 38。

FPGA实验开发系统之LED点阵显示模块

FPGA实验开发系统之LED点阵显示模块

FPGA实验开发系统之LED点阵显示模块The LED Matrix Display Module of The FPGA Experiment and Development System摘要EDA工具和PLD(包括CPLD和FPGA)技术的发展,使其正成为数字系统设计的主流。

而LED点阵显示器的显示,需要很高的扫描频率和精确的时序,FPGA的高性能和灵活的设计,非常适合用于设计LED点阵的显示控制电路。

该文介绍了在Altera公司的EDA 开发环境Quartus Ⅱ中,利用Verilog语言,在FPGA上设计LED点阵显示控制电路的方法关键词:FPGA LED点阵VerilogAbstractEDA tools and PLD (contain CPLD and FPGA) are becoming the first choice in digit system design, as the continuate development of EDA and FPGA technology. LED matrix displayers need high frequency and exact time sequence, FPGA , which has high performance and flexible design, is the right choice to design the display control circuit. This paper introduced the design method of LED matrix display control circuit which was described by Verilog, on FPGA. The EDA tool is Quartus Ⅱof Altera.Keywords : FPGA LED matrix Verilog课题简介内容:FPGA实验开发系统之LED点阵显示模块;要求:LED点阵显示屏的显示控制均由FPGA芯片实现;要求能按输入显示0-9、A-F 16个字符和预设的图文;有控制显示内容的移动、闪烁等功能;将模块做成能与实验开发系统相连的功能板;1、文献综述(包括本课题的现状和发展趋向);本课题需用到与LED点阵显示屏、EDA(用FPGA)技术、PCB制板等相关技术知识。

FPGA基础教程系列 -- 玩转LED

FPGA基础教程系列 -- 玩转LED

FPGA基础教程系列电子工程世界 EE_FPGA基础教程系列玩转LEDV1.0作者:xieqiang整理: chenzhuflyQQ: 368860522011‐3‐14电子工程世界 EE_FPGA基础教程系列Revision HistoryVersion Author Description Date1.0 chenzhufly EE_FPGA 基础教程‐‐‐‐ 玩转LEDKeywords:Abstract:本文举例分析点亮LED的Verilog程序,同时讲了计数器和流水灯的概念。

Table of Contents1. 剧情回放 (4)2. 玩转LED (4)2.1 硬件连接 (4)2.2 程序编写 (4)2.3 程序简介 (5)2.4 换个玩法 (7)2.5 点灯进阶 (7)2.6 答疑解惑 (9)3. 总结 (10)1. 剧情回放话说上次在建立的第一个EE_FPGA工程的时候,我们使用了一个点亮LED 的范例,这里我们继续点亮LED这个话题。

2. 玩转LED2.1 硬件连接首先,我们得打开EE_FPGA的硬件手册,找到LED部分的原理图。

如下图所示,我们看到,LED的右端是连着上拉电阻的VDD3.3V高电平,左端则连着FPGA的管脚pin_31-35。

那我们想,假若我们的FPGA管脚输出的是高电平即3.3V,那么左右两端的电压相当,就不会有电流流过LED,也就不会发光了。

如果FPGA管脚输出的是低电平,那就有电流从LED流过,LED就点亮了。

原理就是这么简单。

2.2 程序编写一般FPGA的核心电平是1.2V,管脚电平是3.3V,所以,要想点亮哪个LED,只要给连接的那个管脚赋0,不点亮赋1就可以了。

上次点亮四个LED的程序我们是这样写的:module led (clk,rst_n,led);input clk;input rst_n;output[3:0] led;reg[3:0] led_r;always @(posedge clk or negedge rst_n)beginif(!rst_n)led_r <= 4'b1111;elseled_r <= 4'b0; // led是一端接上拉电阻,输入低电平点亮endassign led = led_r;endmodule2.3 程序简介这里我就讲点Verilog的经验之谈,有不妥的地方还请大家多指正。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

艾米电子工作室FPGA入门系列实验教程FPGA入门系列实验教程V1.0前言目前市场销售FPGA开发板的厂商很多,但大多只提供些简单的代码,没有详尽的文档和教程提供给初学者。

经验表明,很多学生在学习FPGA设计技术的过程中,虽然刚开始学习热情很高,但真正坚持下来一直到“学会”的却寥寥无几,除了学生个人毅力的因素外,另外一个更主要的原因就是所选的开发板缺少配套的说明文档和手把手系列的入门教程。

原本FPGA的学习门槛相对于单片机来说就高了不少,再加上缺少手把手系列教程资料,这就给初学者学习FPGA增添了更多的困难,很多初学者因为找不到入门的方法而渐渐失去了学习FPGA的兴趣和信心。

作者从接著到系统学习FPGA有两年多的时间了,学习FPGA的时间不长,期间因为没有专业的老师指导,自己摸索学习FPGA走了很多的弯路。

有过问题迎刃而解的快乐,也有过苦苦寻求结果和答案的痛苦历程,回想起自己学习FPGA的历程,从开始的茫然,到后来的疯狂看书,购买开发板,在开发板上练习各种FPGA实例,到最后能独立完成项目,一路走来,感受颇多。

发觉学习FPGA只要选择正确的方法是有捷径可走的,有很多人学习FPGA很长时间,因为没有找到正确的方法还是停留在入门阶段。

针对现状,作者从初学者的角度出发,结合作者学习FPGA的经验和亲身体会,遵循“宁可啰嗦一点,也不放过细节”的原则编写了详尽的实验教程作为艾米电子工作室开发套件的配套教程使用,主要面向FPGA初学者。

FPGA的学习只有通过大量的操作与实践才能很好并快速的掌握。

为此本实验教程从点亮LED 灯写起,深入浅出,以图文并茂的方式由易到难地列举了很多实例,采用手把手、Step by Step的方式让初学者以最快的方式掌握FPGA技术的开发流程以及Quartus II软件的使用,从而激起初学者学习FPGA的兴趣。

在教程中作者采用“授人以渔”的方式,努力做到不仅讲述怎样进行试验,而且分析为什么这样做,以便初学者深刻理解并快速掌握FPGA的学习方法。

本实验教程的所有实例均在艾米电子工作室开发套件上验证通过,本教程虽然简单但编写也花费了作者大量的时间和精力,对于转载需要注明出处:(艾米电子工作室作者:静水流深),并未经艾米电子工作室同意不得用于其他商业用途。

FPGA技术是不断发展变化的,要掌握FPGA技术的精髓,需要设计者在实践中不懈地摸索与积累,逐步提高自己的设计水平,本实验教程试图对初学者起到快速入门的作用。

但由于作者学习FPGA时间不长,水平有限,错漏和不严谨之处在所难免,欢迎大家批评指正。

并请您将阅读中发现的错误或建议发送到作者Email:zhoujie9220@,以使本教程不断地完善。

FPGA入门系列实验教程——点亮LED1.实验任务点亮发光二极管。

通过这个实验,熟悉并掌握CPLD/FPGA开发软件Quartus II的使用方法和开发流程以及Verilog HDL的编程方法。

2.实验环境硬件实验环境为艾米电子工作室型号EP2C5T144开发套件。

软件实验环境为Quartus II8.1开发软件。

3.实验原理FPGA器件同单片机一样,为用户提供了许多灵活的独立的输入/输出I/O口(单元)。

FPGA每个I/O口可以配置为输入、输出、双向、集电极开路和三态门等各种组态。

作为输出口时,FPGA的I/O口可以吸收最大为24mA的电流,可以直接驱动发光二极管LED等器件。

图1.1为8个发光二极管硬件原理图,本原理图对应艾米电子工作室型号为EP2C5T144FPGA开发板及接口板。

通过原理图可知如果要点亮这八个LED,所以只要正确分配并锁定引脚后,在相应的引脚上输出相应高电平“1”,就可实现点亮该发光二极管的功能。

本工作室开发板均采用输出“1”点亮LED的模式,以后就不再另作说明。

图1.1发光二极管LED硬件原理图4.实验程序(1)利用连续赋值assign 语句来实现(文件名led.v )module led1(led);//模块名ledoutput[7:0]led;//定义输出端口assign led=8'b10101010;//输出0x AAendmodule(2)利用过程赋值语句来实现(文件名led1.v )module led1(led);//模块名led1output[7:0]led;//定义输出端口reg[7:0]led;alwaysbeginled=8'b10101010;//输出0xAAendendmodule5.实验步骤1)打开Quartus II 软件并建立工程(1)通过桌面上的快捷方式打开Quartus II 8.1软件,进入集成开发环境,软件界面如图1.2所示。

图1.2Quartus II软件界面工程栏资源管理器编译状态显示信息显示窗我们首先简单了解一下各部分的作用:标题栏:显示当前工程的路径和程序的名称。

菜单栏:主要包括文件(File)、编辑(Edit)、视图(View)、工程(Project)、资源分配(Assignments)、操作(Processing)、工具(Tools)、窗口(Window)、和帮助(Help)、9个下拉菜单组成。

工具栏:包含常用命令的快捷图标。

资源管理窗:显示当前工程中所有相关的文件。

工程工作区:对不同的工程文件进行各种操作。

编译状态显示窗:显示模块综合、布局布线过程和时间。

信息显示窗:显示软件综合、布局布线过程中的信息。

(2)在图1.2中选择File→New project wizard来新建一个工程。

新建工程向导说明对话框如图1.3所示。

图1.3新建工程向导说明对话框(3)在图1.3中单击Next进入如图1.4所示对话框保存工程路径工程名称顶层实体名图1.4新建工程路径、名称、顶层实体指定对话框注意:文件夹所在路径名和文件夹名不能用中文、空格和括号,可以用下划线,最好不要以数字开头。

建议使用顶层文件的实体名作为工程名,即工程名和顶层文件的实体名保持一致。

(4)在图1.4中单击Next进入如图1.5所示对话框图1.5新建工程添加文件对话框(5)在图1.5中单击Next进入如图1.6所示对话框。

在该对话框中指定目标器件,这里我们选择的是艾米电子工作室开发套件用的Cyclone II系列的EP2C5T144C8图1.6新建工程器件选择对话框(6)指定完器件后,单击Next 进入如图1.7所示对话框。

本实验利用的集成环境开发,不使用第三方的EDA 工具,采用默认设置。

元件系列选择具体元器件选择图1.7新建工程EDA工具设置对话框(7)单击图1.7中的Next进入如图1.8所示对话框。

从该对话框中,可以看到工程配置信息报告。

单击Finish完成新工程的建立。

图1.8新建工程配置信息报告对话框2)建立文本编辑文件(1)在Quartus II主界面中选择File→New打开新建文件对话框如图1.9所示。

图1.9新建文件对话框(2)选择VerilogHDL File点击OK建立一个空的VerilogHDL文件,将实验程序清单中的程序输入到文件中,然后在在Quartus II主界面中选择File→Save As 改名为led.v并保存。

(3)选择图1.10工具栏中的图1.10led.v文件编译对话框3)选择器件型号及器件和引脚的其他设置(1)选择器件型号每种型号的FPGA芯片的引脚可能都不相同,因此在进行引脚分配之前都应选择相应的目标FPGA芯片型号。

这一步在新建工程中已经完成,这里目的是初学者了解,在Quartus II工程创建好后仍然可以选择并修改器件型号。

在Quartus II软件主界面下选择Assignments→Device打开如图1.11所示对话框。

在该对话框中指定所需的目标器件型号。

图1.11器件选择对话框(2)器件和引脚的其他设置单击图1.11中的Device and Options打开Device and Options对话框,在该对话框中选择Configuration选项卡,并按图1.12所示进行设置,即采用串行配置器件EPCS1的主动配置方式。

在Device and Options对话框中选择Unused Pins选项卡对未使用的引脚按照图1.13所示设置为高阻输入。

配置方式图1.12Configuration 设置未定义引脚定义为三态输入图1.13未用引脚设置4)分配FPGA引脚(1)在Quartus II软件主页面下,选择Assignments→Pins或选择工具栏上按钮启动编译,直到出现“Full Compilation Report”对话框,点击OK即可。

6)波形仿真由于本次试验比较简单,波形仿真将在后面实验详细讲解。

7)下载设计程序到目标FPGA(1)在Quartus II主页面下,选择Tools→Pragrammer或点击工具栏上的开始使用配置文件对FPGA进行配置,Progress 框中显示配置进度,配置进度条为100%时说明配置成功,即可观察实验现象。

6.实验现象第一个实验终于完成了,看到实验板上的8个LED灯间隔点亮,是不是特有成就感!只要动手,一切都这么简单!让我们进行下面的实验吧!以后的实验将会更精彩!。

相关文档
最新文档