好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

北航FPGA实验报告.doc

23页
  • 卖家[上传人]:汽***
  • 文档编号:398989189
  • 上传时间:2023-05-17
  • 文档格式:DOC
  • 文档大小:533.50KB
  • / 23 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 电气技术实践 可编程逻辑器件FPGA应用开发实验报告姓 名 班 级 学 号 2016年12月 目 录一、实验目的 1二、实验要求 1三、实验内容 1四、实验代码及实验结果 11、4位二进制加法计数器 12、半加器 33、RS触发器 34、数码管十六进制计数器 55、跑马灯 76、键盘电路 97、LED点阵显示 128、多人抢答器 18五、实验感想 18一、实验目的1、熟悉使用可编程逻辑器件(Altera公司FPGA Cyclone系列EP1C6Q)2、熟悉使用硬件描述语言VHDL3、掌握FPGA集成环境(Altera公司FPGA QuartusII 9.0)开发流程4、熟悉使用核心目标系统板与接口电路等工作原理及其功能模块绑定信息5、熟悉并掌握下载线方式和下载文件的选择二、实验要求 1、学习并掌握文本、图形等输入和时序、功能仿真方法2、学习并熟悉门电路、组合电路、时序电路等单一模块功能3、学习并设计各种不同状态机逻辑功能4、学习并设计由单一模块→较多功能模块集成→系统集成方法5、学习并选择多种模式显示(发光二极管显示、米字型数码管显示、七段数码管→动态扫描或静态扫描显示、LED点阵显示各种字符和图形或静止或移动等方式、LCD液晶显示各种字符和图形或静止或移动等方式)。

      6、根据自已的兴趣和愿望,可从以下给定的实验目录中选取或自已设定功能题目7、实验数目没有要求,关键是看质量,是否是自已编写、调试、实现三、实验内容 1、按指导书集成开发环境章节操作实现文本编程实例1和图形编程实例2全过程2、任选门电路、组合电路、时序电路实验各完成一个其逻辑功能,其实现方案自已规定在进行FPGA目标器件输入和输出引脚绑定时,输入引脚绑定高/低电平、单脉冲、各种分频连续脉冲等多种信号,输出引脚可绑定发光二极管、七段数码管、LED点阵等显示模式3、在完成1位十进制计数器的基础上,可增加完成2或3等多位十进制计数器逻辑功能并用多位七段数码管来显示4、用LED点阵显示任意字符、图形等信息四、实验代码及实验结果1、4位二进制加法计数器(1)实验代码 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity erjinzhi isport(clk, rst:in std_logic; q:out std_logic_vector(3 downto 0));end entity erjinzhi;architecture bhv of erjinzhi issignal q1:std_logic_vector(3 downto 0); begin process(rst,clk) begin if(rst='0')then q1<="0000"; elsif(clk'event and clk = '1')then q1<=q1+1; end if; end process; q<=q1;end architecture bhv;(2)管脚分配(3)实验操作① 输入信号clk时钟→把FPGA_EA2_P6(Pin_P20)用导线与(FRQ_Q21 1Hz)连接、rst清零→N18(SW-1)、输出信号q3→U12(LED1)、q2→V12(LED2);q1→V15(LED3);q0→W13(LED4)。

      ② 把输入信号rst设为“1”、clk时钟(FRQ_Q21 1Hz) 用导线与(FRQ_Q21 1Hz)连接4)实验现象输出结果信息为第一、二、三、四个发光二极管按照0000→0001→……→1111循环显示,符合实验要求该实验板上低电平为“1”)2、半加器(1)实验原理图(2)管脚分配(3)实验操作逻辑分析:输入信号a、b;输出信号分别为sum(和)、carry(进位)逻辑方程:sum=a⊕b;carry=a * b输入信号a→N18(SW-1)、b→M20(SW-2)、输出信号sum(和)→U12(LED1)、carry(进位)→V12(LED2)(4)实验现象ⅰ输入信号a、b都为“0”,输出结果信息为两个发光二极管均为“灭”,说明和和进位都为0;ⅱ输入信号a为“1”,b为“0”,输出结果信息为第一个发光二极管“灭”,第二个发光二极管“亮”,说明和为“1”,进位为0;ⅲ输入信号a为“0”,b为“1”,输出结果信息为第一个发光二极管“灭”,第二个发光二极管“亮” 说明和为“1”,进位为“0”;ⅳ输入信号a、b都为“1”,输出结果信息为第一个发光二极管“亮” 第二个发光二极管“灭”,说明和为“0”,进位为“1”.均符合设计要求3、RS触发器(1)实验代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity rs_clk isport( s,r,res :in std_logic;q,not_q:out std_logic);end rs_clk;architecture behav of rs_clk issignal sel1,sel2: std_logic;beginprocess(res,sel1,sel2)beginif res='0' then sel1<='0';sel2<='1';elsif (S='1' and R='0') then sel1<='1';sel2<='0';elsif (S='0' and R='1') then sel1<='0';sel2<='1';elsif (S='0' and R='0') then sel1<=sel1; sel2<=sel2;end if;Q<=sel1;not_q<=sel2;end process;end behav;(2)管脚分配(3)实验操作(3)实验现象将实验现象总结为RS触发器特性表,其中X指0或1均可;输入为”1”指SW输入为高,输入为”0”指SW输入为低;输出为”1”指对应LED灯灭(实验台的LED灯为高电平灭),输出为”0”指对应LED灯亮。

      CLK触发输入S输入R原来的Q新的输出Q*100X保持原状11011110011011010100111X不定状态0XXX保持原状4、数码管十六进制计数器(1)实验代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity motor isport(clk:in std_logic;rst:in std_logic;sel:out std_logic;q:out std_logic_vector(3 downto 0); d: out std_logic_vector(7 downto 0));end entity;architecture b1 of motor is signal q1,q2:std_logic_vector(3 downto 0);beginprocess(clk,rst)beginif clk'event and clk='1' thenq1<=q1+1;q2<="0010";end if ;end process;q<=q2;process(q1)beginif(rst='1') then sel<='0';case q1 iswhen "0000"=>d<="11111100";when "0001"=>d<="01100000";when "0010"=>d<="11011010";when "0011"=>d<="11110010";when "0100"=>d<="01100110";when "0101"=>d<="10110110";when "0110"=>d<="10111110";when "0111"=>d<="11100000";when "1000"=>d<="11111110";when "1001"=>d<="11110110";when "1010"=>d<="11101110";when "1011"=>d<="00111110";when "1100"=>d<="10011100";when "1101"=>d<="01111010";when "1110"=>d<="10011110";when "1111"=>d<="10001110";end case;end if;end process;end;(2)管脚分配(3)实验现象将CLK接入较低频率,这样可以清晰地观察数码管从0—F(16进制数)的转变,完成一个循环之后,自动重新从0开始显示,进入下一个循环5、跑马灯(1)实验代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity led isport(clk:in std_logic;rst:in std_logic;q :out std_logic_vector(7 downto 0));end;architecture led of led isconstant s0:std_logic_vector(1 downto 0):="00"; constant s1:std_logic_vector(1 downto 0):="01";constant s2:std_logic_vector(1 downto 0):="10";constant s3:std_logic_vector(1 downto 0):="11";signal present:std_logic_vector(1 downto 0); signal q1:std_logic_vector(7 downto 0);signal count:std_logic_vector(3 downto 0);beginproc。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.