logo资料库

可编程逻辑器件与硬件描述语言实验报告.doc

第1页 / 共35页
第2页 / 共35页
第3页 / 共35页
第4页 / 共35页
第5页 / 共35页
第6页 / 共35页
第7页 / 共35页
第8页 / 共35页
资料共35页,剩余部分请下载后查看
组合逻辑电路实验
(一)实验名称:
3-8译码器电路设计
时序逻辑电路实验
第六章 综合实验
可编程逻辑器件与硬件描述语言 实 验 报 告 评 语: 成 绩 教 师: 年 月 日 班 级: 学 号: 姓 名: 地 点: 时 间:
组合逻辑电路实验 (一)实验名称: 3-8 译码器电路设计 (二)实验目的: 1)掌握 ISE 开发工具的使用,掌握 FPGA 开发的基本步骤; 2)掌握组合逻辑电路设计的一般方法; 3)掌握程序下载方法,了解 UCF 文件的格式; 4)初步了解开发板资源,掌握开发板使用方法。重点了解滑动开关和 LED 显示灯的使用方法。 5)理解并掌握 VHDL 程序的结构,掌握输入输出端口的含义; (三)实验内容: (1)用 VHDL 实现 3-8 译码器模块 译码器电路如图 3-1 所示。其功能如表 3-1 所示。试用 VHDL 完成该译码器 的设计,并在开发板上进行检验。
A B C 3-8 译码器 G1 G2A G2B Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 表 3-1 译码器功能表 输入 G2A G2B C X X X 1 X X 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 X X 1 0 0 0 0 0 0 0 0 G1 0 X X 1 1 1 1 1 1 1 1 B X X X 0 0 1 1 0 0 1 1 图 3-1 74x138 3-8 译码器 A X X X 0 1 0 1 0 1 0 1 Y7 0 0 0 0 0 0 0 0 0 0 1 Y6 0 0 0 0 0 0 0 0 0 1 0 Y5 0 0 0 0 0 0 0 0 1 0 0 输出 Y3 0 0 0 0 0 0 1 0 0 0 0 Y4 0 0 0 0 0 0 0 1 0 0 0 Y2 0 0 0 0 0 1 0 0 0 0 0 Y1 0 0 0 0 1 0 0 0 0 0 0 Y0 0 0 0 1 0 0 0 0 0 0 0 (2)将程序下载到 FPGA 并进行检验  资源使用要求:  用滑动开关 SW0~SW4 作为输入 A,B,C,G1;  滑动开关 BTN_EAST,BTN_WEST 作为控制端 G2A,G2B;  8 个 LED 灯表示 8 个输出。  检验方法: 当 SW0 处于 OFF(G1=1)或者 SW1 处于 ON(G2A=1)或者 SW2 处于 ON (G2B=1)位置时,所有 LED 灯灭; 当 SW0 处于 ON(G1=1),且 BTN_EAST,BTN_WEST 均处于 OFF 状态时, 反映当前输入的译码输出在 LED 灯上显示,即当输入为 000(滑动开关 SW0-SW2
处于 OFF 状态),LED0 亮,其它灯灭,等等。 (四)实验步骤: 1)启动 ISE,新建工程文件,编写 3-8 译码器的 VHDL 模块; 2)新建 UCF 文件,输入位置约束; 3)完成综合、实现,生成下载文件; 4)连接开发板 USB 下载线,开启开发板电源; 5)下载到 FPGA; 6)拨动开关,验证结果是否正确。 (5)实验代码: VHD 文件: library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity li00 is Port ( A : in STD_LOGIC; B : in STD_LOGIC; C : in STD_LOGIC; G1 : in STD_LOGIC; G2A : in STD_LOGIC; G2B : in STD_LOGIC; Y : out STD_LOGIC_VECTOR (7 downto 0)); end li00; architecture Behavioral of li00 is signal comb:std_logic_vector (2 downto 0); begin comb<=C&B&A; process(G1,G2A,G2B,comb)
begin if(G1='1' and G2A='0' and G2B ='0')then case comb is when "000" => Y<="11111110"; when "001" => Y<="11111101"; when "010" => Y<="11111011"; when "011" => Y<="11110111"; when "100" => Y<="11101111"; when "101" => Y<="11011111"; when "110" => Y<="10111111"; when "111" => Y<="01111111"; when others => Y<="11111111"; end case; else Y<="11111111"; end if; end process; end Behavioral; UCF 文件: NET "A" LOC = "L13" | IOSTANDARD = LVTTL | PULLUP ; NET "B" LOC = "L14" | IOSTANDARD = LVTTL | PULLUP ; NET "C" LOC = "H18" | IOSTANDARD = LVTTL | PULLUP ; NET "G1" LOC = "N17" | IOSTANDARD = LVTTL | PULLUP ; NET "G2A" LOC = "V4" | IOSTANDARD = LVTTL | PULLDOWN ;
NET "G2B" LOC = "K17" | IOSTANDARD = LVTTL | PULLDOWN ; NET "Y<7>" LOC = "F9" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ; NET "Y<6>" LOC = "E9" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ; NET "Y<5>" LOC = "D11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ; NET "Y<4>" LOC = "C11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ; NET "Y<3>" LOC = "F11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ; NET "Y<2>" LOC = "E11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ; NET "Y<1>" LOC = "E12" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ; NET "Y<0>" LOC = "F12" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
时序逻辑电路实验 (一)实验名称: 八位可逆计数器电路设计 (二)实验目的: 1)进一步熟练 ISE 开发工具,巩固 FPGA 开发的基本步骤; 2)掌握设计仿真方法; 3)掌握时序逻辑电路设计的一般方法,掌握时钟分频程序设计方法; 4)理解 VHDL 的层次结构设计,掌握原理图输入方法; 5)巩固程序下载方法; 6)了解开发板时钟资源,以及时钟分频方法。 (三)实验内容: 本实验分多个模块实现,采用原理图输入方法完成设计输入。 (1)实现如下八位可逆计数器 可逆计数器电路图及功能表如图 4-1 和表 4-1 所示。用 VHDL 完成该电路模 块的设计,并生成原理图。 clr en Up/Dn clk Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 图 4-1 可逆计数器原理图 表 4-1 可逆计数器功能表
clr 1 0 0 0 en X 0 1 1 输入 Up/Dn X X 1 0 输出 clk X X ↑ ↑ Y7 ~ Y0 00000000 停止计数 计数器+1 操作 计数器-1 操作 (2)资源使用要求及实现方法: 1)用 LED0~LED7 作为计数器输出显示,LED7 为高位,LED0 为低位; 2)SW0 为计数方向 up/dn 控制; 3)SW1 为计数允许 EN 控制端; 4)BTN_EAST 为 clr 按钮; 5)计数时钟频率为 1Hz,通过对 50Mhz 系统时钟分频得到,分频电路独立 编写一个模块,如图 4-2 所示。完成模块设计,并生成原理图; 50M clock 1/5000000 1Hz clock 图 4-2 1/5000000 分频器 6)计数器扩展:可以对按键次数进行计数(按键为 BTN_SOUTH),即通过 SW2 选择计数源。即当 S='1'时,输出 In1,当 S='0'时,输出 In2。 二选一电路如图 4-3 所示。 In1 In2 S 2 选 1 电路 Dout 图 4-3 二选一电路 7)将图 4-1~图 4-3 三个模块连接起来,构成一个完整计数器。如图 4-4 所 示。
分享到:
收藏