实验三VHDL硬件程序设计.doc

上传人:工**** 文档编号:555127961 上传时间:2024-01-23 格式:DOC 页数:7 大小:598.78KB
返回 下载 相关 举报
实验三VHDL硬件程序设计.doc_第1页
第1页 / 共7页
实验三VHDL硬件程序设计.doc_第2页
第2页 / 共7页
实验三VHDL硬件程序设计.doc_第3页
第3页 / 共7页
实验三VHDL硬件程序设计.doc_第4页
第4页 / 共7页
实验三VHDL硬件程序设计.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《实验三VHDL硬件程序设计.doc》由会员分享,可在线阅读,更多相关《实验三VHDL硬件程序设计.doc(7页珍藏版)》请在金锄头文库上搜索。

1、实验三 VHDL硬件程序设计一、 实验内容本次实验将练习针对具体硬件的VHDL设计,以及怎样把设计下载到可编程器件中去。本实验以一个加减法计数器的设计为例,实现加减法计数的功能。二、 实验原理已知某开发板使用了Altera公司MAX 系列的CPLD芯片EPM240T100C5,与本实验相关的主要元器件的电路连接图如图一所示(本实验中黄色LED与绿色LED未用到),要实现的加减法计数器主要功能可描述为:拨码开关的3号键up实现加法和减法功能的切换,计数器状态sum通过4个红色LED实时显示。如控制拨码开关的1号键,使rst复位端置低,则LED全部熄灭,rst端置高,再使能端en置高,则开始计数。

2、如控制拨码开关的1、2号键,使rst复位端置高,en使能端置低,则LED会停止到当前的计数状态。我们主要使用以下几组端口:1. 三个控制端口:1)、rst复位控制,低电平有效;2)、en使能控制,高电平有效;3)、up加/减控制,高电平加法,低电平减法。这三个端口分别与拨码开关的1、2、3号键位连接(即芯片EPM240T100C5的39、38、37号引脚分别连接节点SW1、SW2、SW3)。2. 四个计数器输出端口:1)、sum0.2为计数输出,分别与红色LED RED1、RED2、RED3连接,由芯片EPM240T100C5的6967号引脚进行控制;2)、cout为进位输出,连接到RED4上

3、,由芯片EPM240T100C5的66号引脚控制。3. 一个外部时钟输入端口(芯片EPM240T100C5的14号引脚),本实验所用外部时钟为50MHz。4. 红色信号选择线(芯片EPM240T100C5的72号引脚)。三、 实验步骤1、建立新工程,在新工程向导中设置工程目录、工程名(counter)、顶层设计实体名(counter),并选择本实验中所使用的芯片(MAX 系列,EPM240T100C5);2、新建VHDL设计文件,输入程序,完成后保存(保存名为counter),并进行全编译,直至(0 error),通过Tools-Netlist viewers-RTL viewer观察综合出的

4、电路;如下图所示:VHDL程序综合的电路原理图3、选择工具栏中的Pin Planner按钮(也可在菜单Assignments中选择),对引脚进行分配,(rst:39 ,en:38, up:37, sum0:69, sum1:68, sum2:67, cout:66, clk:14, red:72),具体所得图如下:1. 4、引脚分配完成后再次进行全编译,点击工具栏中的Programmer按钮进行(也可在Tools菜单中选择)下载:点击Programmer按钮后会弹出图四所示的窗口,在图中红圈处选择下载模式,如果软件未能识别你的下载器,可通过Hardware Setup按钮手工添加下载器,再在c

5、ounter.pof文件的Program/Configure选项上打钩,然后打开开发板电源,点击Start按钮即可完成程序下载,并观察到程序的运行过程(本实验是通过红色LED的亮灭所表示的计数过程进行显示的),控制拨码开关可观察到相应变化。(因没有硬件开发板,所以这一步仅仅演示一下)四、 实验程序Library ieee;Use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;-库使用说明entity counter isport(clk,rst,en,up:in std_logic;-引脚申明 sum:out std_logic

6、_vector(2 downto 0); cout:out std_logic; red:out std_logic);end counter;architecture one of counter is signal count:std_logic_vector(2 downto 0); signal clock:std_logic; begin red=1; process(clk)-为减小资源占用率,使用二级分频,分频是为了人眼能够识别 led 灯的变化 variable cnt1:integer range 0 to 5000; variable cnt2:integer range

7、0 to 2000; begin if clkevent and clk =1 then-clk上升沿触发 if cnt1=5000 then -cnt1为以及分频 cnt1:=0; if cnt2=2000 then -cnt2为二级分频 cnt2:=0; clock=not clock; -时钟信号取反 else cnt2:=cnt2+1; end if; else cnt1:=cnt1+1; end if; end if; end process;process(clock,rst)-计数器进程 begin if rst=0 then -rst低电平,复位端复位, count0) ; -进位清零 elsif rising_edge(clock) then-遇上升沿触发 if en=1 then -en为高电平,开始计数,使能控制 case up is when 1=countcount=count-1;-up低电平,为减法器 end case; end if; end if; end process; sum=not count; -计数输出 cout=0when en=1and(up=1andcount=7)or(up=0and count=0)else 1;-cout为进位输出,高电平有进位 end;五、

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号