文档详情

FPGA实验报告材料

hs****ma
实名认证
店铺
DOC
185KB
约15页
文档ID:470081203
FPGA实验报告材料_第1页
1/15

匕京4充空航夭大爭B E I H A N G UNIVERSITY电气技术实践可编程逻辑器件FPGA应用开发实验报告2016年12月目录一、 实验目的二、 实验要求三、 实验内容四、 实验代码及实验结果(1) 4位二进制加法计数器(2) 半加器(3) LED静态显示(4) 38译码器(5) 点阵扫描显示(6) 步进电机状态机五、 实验感想六、 学习并使用FPGA的心得与体会七、 电气技术实践总结一、 实验目的1、 熟悉使用可编程逻辑器件 (Altera 公司FPGA Cyclone系列EP1C6Q2、 熟悉使用硬件描述语言 VHDL3、 掌握FPGA集成环境(Altera 公司FPGA Quartusll 9.0) 开发流程4、 熟悉使用核心目标系统板与接口电路等工作原理及其功能模块绑定信息5、 熟悉并掌握下载线方式和下载文件的选择二、 实验要求1、 学习并掌握文本、图形等输入和时序、功能仿真方法2、 学习并熟悉门电路、组合电路、时序电路等单一模块功能3、 学习并设计各种不同状态机逻辑功能4、 学习并设计由单一模块t较多功能模块集成t系统集成方法5、 学习并选择多种模式显示 (发光二极管显示、米字型数码管显示、七段数码管t动态扫描或静态扫描显示、 LED点阵显示各种字符和图形或静止或移动等方式、 LCD^晶显示各种字符和图形或静止或移动等方式 )。

6、 根据自已的兴趣和愿望,可从以下给定的实验目录中选取或自已设定功能题目7、 实验数目没有要求,关键是看质量,是否是自已编写、调试、实现三、 实验内容1、 按指导书集成开发环境章节操作实现文本编程实例 1和图形编程实例2全过程2、 任选门电路、组合电路、时序电路实验各完成一个其逻辑功能,其实现方案自已规定在进行FPGA目标器件输入和输出引脚绑定时,输入引脚绑定高 /低电平、单脉冲、各种分频连续脉冲等多种信号,输出引脚可绑定发光二极管、七段数码管、 LED点阵等显示模式3、 在完成1位十进制计数器的基础上,可增加完成 2或3等多位十进制计数器逻辑功 能并用多位七段数码管来显示4、 根据状态机工作特点,设计一个有一定功能效果的例程5、 利用4X4键盘设计显示对应的键字符信息6、 用LED点阵显示任意字符、图形信息四、 实验代码及实验结果(1) 4位二进制加法计数器【实验代码】library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all; en tity count4 is port(clk,d:i n std_logic;rst: in std_logic;q:out std_logic_vector(3 dow nto 0)); end en tity coun t4;architecture bhv of count4 issig nal q1:std_logic_vector(3 dow nto 0);begi n process(rst,clk,d) begi nif(rst='0')the n q1<="0000";elsif(clk'event and clk = '1')then q1v=q1+1;end if;end process;q<=q1;end architecture bhv;【实验操作】输入信号clk时钟t Pin 152 ; rst清零Pinl ; d启动控制Pin2 ;输出信号q3~ Pin43 ; q2 tPin44 ; qlTpin45 ; q0^pin46.旋转位置在实验箱中部偏下部分 SW旋转分频开关、拨码开关对应位置在实验箱左下部分粉红色开关组左边开始第一个和第二个,显示位置在实验箱左上角第一、 二、三、四个发光二极管输入信号rst、d都为“ 1 ”、SW7旋转到1Hz,输出结果信息为第一、二、三、四个发光 二极管按照0000t0001t……t 1111循环显示,符合实验要求。

2)半加器【实验操作】逻辑分析:输入信号a、b;输出信号分别为sum (和)、carry (进位)逻辑方程:sum=a® b; carry=a * b.接口信号与目标器件引脚连接:输入信号 pin_namef Pin1、pin_name2f Pin2 ;输出信号 pin_name4 (和)f Pin44、pin_name3 (进位)f Pin43.可观察到通过输入得到的逻辑输出与上述的逻辑方程相符,符合半加器的逻辑要求3) LED静态显示【实验代码】library ieee;use ieee.std」o gic_1164.all;en tity dec7s1 isport(A:i n std」o gic_vector(3 dow nto 0); LED7S:out std」o gic_vector(6dow nto 0)); end;architecture onr of dec7s1 isbeg inprocess(A)beg incase A iswhen "0000" => LED7S<="1111110"; when "0001" => LED7S<="0110000"; when "0010" => LED7S<="1101101"; whe n "0011" => LED7S<="1111001"; whe n "0100" => LED7S<="0110011"; when "0101" => LED7S<="1011011"; when "0110"=> LED7S<="1011111"; when "0111" => LED7S<="1110000"; when "1000"=>LED7S<="1111111"; whe n "1001" => LED7S<="1111011"; whe n others => null; end case;end process;end;【实验操作】用开关A3, A2 , A1, A0作为输入设置,组成一个高输入有效的基本组合逻 辑器;从输出指示LED7S观察到数字随A3, A2 , A1, A0设置值的变化而引起的 相应变化。

真值表如图所示:输 A.笹 出h:,fC Al A0a b t d e f c0 0 0 0I 1 1 1 1 1 00 0 0 1a i i o o a o0 0 101 1 0 l 1 Q 10 0 1111110010 10 00 110 0 110 1 0 110 110 110 1101 0 I 1 1 1 1:„ 0 G10 0 011111111 0 0 L1 1 1 1 C 1 1(4) 38译码器 【实验代码】library ieee;use ieee.std」o gic_1164.all;use ieee.std_logic_ un sig ned.all;en tity en coder isport( a,b,c:in std_logic; y:out std」o gic_vector(7 dow nto 0)); end;architecture one of en coder issignal temp:std」ogic_vector(2 downto 0); signal tt:std」ogic_vector(7 downto 0);beg intempv=c &b&a; process(temp) beg in case temp is when "000" =>tt<="00000001"; when "001" =>tt<="00000010"; whe n "010" =>tt<="00000100"; whe n "011" =>tt<="00001000"; whe n "100" =>tt<="00010000"; whe n "101" =>tt<="00100000"; whe n "110" =>tt<="01000000"; when "111" =>tt<="10000000"; end case;end process;y<=tt;end one;【实验操作】三个拨码开关确定输入,由八个 LED的亮暗完成译码显示与真值表相同:输入端输出端A1A2A3Y0Y1Y2Y3Y4Y5Y6Y700010000000001010000000100010r 00000110 n001P 0000 n100000010001010000r 01001100「000P 0010「11100000001(5) 点阵扫描显示【实验代码】library IEEE;use IEEE.STD_L0GIC_116 4A LL;use IEEE.STD_LOGIC_UNSIGNED.ALL;en tity count4 isport (clk,d:in std_logic;--in bit;rst: in std_logic;q:out std_logic_vector(3 dow nto 0); p:out std_logic_vector(7 dow nto 0); m:out std_logic_vector(7 dow nto 0));end en tity coun t4;architecture jsq of count4 issig nal q1:std_logic_vector(3 dow nto 0); sig nal p1:std_logic_vector(7 dow nto 0); sig nal p2:std_logic_vector(7 dow nto 0); begi nprocess(rst,clk) begi nm<="10000000"; p1<="00000000"; p2<="00000000";if(clk'event and clk='1') then if(rst='0')the n q1<="0000";else if(d='1')the nif(q仁"1111")the n q1<="0000";elseq1v=q1+'1:end if;end if;end if;end if;q<=q1;case q1 iswhe n"0000"=>m<="11111111";pv="01111111";whe n"0001"=>m<="11111111";pv="01111111";whe n"0010"=>m<="11111111";pv="10111111";whe n"0011"=>mv="11111111";pv="10111111";whe n"0100"=>mv="11111111";pv="11011111"。

下载提示
相似文档
正为您匹配相似的精品文档