资源描述
内蒙古工业大学信息工程学院
xxxxx大学信息工程学院
实 验 报 告
课程名称: CPLD/FPGA 应用开发技术
实验名称: 组合逻辑电路的设计
实验类型: 验证性□ 综合性□ 设计性■
实验室名称: 信息学院机房
班级: 学号:
姓名: 组别:
同组人: 成绩:
实验日期: 2010年6月29日
预习报告成绩: 指导教师审核(签名): 年 月 日
预习报告
一、实验目的:
1、掌握用VHDL 语言和EPLD 进行组合逻辑电路的设计方法。
2、加深对EPLD 设计全过程的理解。
3、掌握组合逻辑电路的静态测试方法。
二、实验设备:
1、PC 机
2、EDA 实验箱(主芯片是ALTERA EPM7128SLC84-15)。
三、实验内容:
1、用VHDL 语言输入法设计一个四舍五入判别电路,其输入为8421BCD 码,要求当
输入大于或等于5 时,判别电路输出为1;反之为0。
2、用VHDL 语言输入法设计四个开关控制一盏灯的逻辑电路,要求合任一开关,灯亮;
断任一开关,灯灭。
3、用VHDL 语言输入法设计一个优先权排队电路。排队顺序为:
A=1 最高优先级
B=1 次高优先级
C=1 最低优先级
要求输出端最高只能有一端为“1”, 即只能是优先级较高的输入端所对应的输出端
为“1”。
四、实验步骤:
1、采用文本编辑器输入VHDL 语言源程序,建立工程。
2、编译。
3、仿真。
4、对芯片进行编程。
5、根据管脚分配情况连线。
(1) 四舍五入判别电路的四个输入管脚分别与四个拨码开关相连,输出数据与
LED 灯相连。
(2) 开关控制电路的四个输入管脚分别与四个按键开关相连,输出管脚与LED
灯相连。
(3) 优先权排队电路的A、B、C 三个信号分别连三个按键开关,三个输出信号
分别连三个LED 灯相连。
6、控制输入信号(按键或拨码开关), 观察电路输出(LED 灯的亮与灭)。
五、实验报告要求:
1、给出电路的VHDL 描述、仿真结果。
2、说明波形图中输入数据的给定依据。
3、说明物理连线情况以及物理连线与编译时进行管脚分配有何关系?
实验报告成绩: 指导教师审核(签名): 年 月 日
实验报告
一、 实验结果分析:
1.用VHDL 语言输入法设计一个四舍五入判别电路,其输入为8421BCD 码,要求当
输入大于或等于5 时,判别电路输出为1;反之为0。
程序清单:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity pan4_5 is
port(d: in std_logic_vector(3 downto 0);
y: out std_logic);
end pan4_5;
architecture beha of pan4_5 is
signal datain:integer;
begin
datain<=conv_integer(d);
process
begin
if (datain>=5) then
y<='1';
else
y<='0';
end if;
end process;
end beha;
仿真结果:
结果分析:
由上图分析可知,d3,d2,d1,d0 表示又BCD码表示的一位的十进制数。当d3,d2,d1,d0分别设为0110,转化为十进制数为6,(6>5)。则输出y为1。其他可以此类推得出结论。
2、用VHDL 语言输入法设计四个开关控制一盏灯的逻辑电路,要求合任一开关,灯亮;
断任一开关,灯灭
程序清单:
library ieee;
use ieee.std_logic_1164.all;
entity dd is
port (a,b,c,d: in std_logic;
clk: in std_logic;
y:out std_logic);
end dd;
architecture beha of dd is
signal q:std_logic;
begin
process(clk)
begin
if(clk'event and clk='1')then
if(a='1')or(b='1')or(c='1')or(d='1')then
q<=not q;
end if ;
end if ;
end process;
y<=q;
end beha;
仿真结果:
结果分析:
由上图易得出:在时钟上升沿前有高电平,则输出结果翻转。代表若4个开关中有一个状态变化,则灯的状态也发生改变。
3、用VHDL 语言输入法设计一个优先权排队电路。排队顺序为:
A=1 最高优先级
B=1 次高优先级
C=1 最低优先级
要求输出端最高只能有一端为“1”, 即只能是优先级较高的输入端所对应的输出端为“1”。
程序代码:
library ieee;
use ieee.std_logic_1164.all;
entity paidui is
port(din: in std_logic_vector(2 downto 0);
dout: out std_logic_vector(2 downto 0));
end paidui;
architecture beha of paidui is
begin
process(din)
begin
case din is
when "000"=> dout<="000";
when "001"=> dout<="001";
when "010"=> dout<="010";
when "011"=> dout<="010";
when others=> dout<="100";
end case;
end process;
end beha;
仿真结果:
结果分析:
当输入为,即A=1,输出。当输入为,即,A=0,B=1。输出为。同理当输入为2时,输出也为2。实现了优先排队的功能。
二、 实验心得体会
做完EDA实验,我感到受益匪浅。这不仅使我了解了EDA的实验系统,学习了MAX+PLUSⅡ软件的使用,掌握了基本的电路设计流程、方法以及技巧,更增强了我对EDA设计的兴趣。
在实验的过程中,老师又结合实际详细的教了我们VHDL语言的基本指令及编程方法,教我们熟悉了在PC机上运用MAX+PLUSⅡ软件和EPLD进行电路设计的设计和仿真过程。
之后,老师为我们布置了实验任务,开始,大家都不会编写程序,或是编出来的程序有很多错误,但是在老师的指导修改下,我们克服了困难,找到了问题所在,改正了错误,编出了正确的程序。但在软件使用及仿真的时候,大家都遇到了较大的困难,同学们都是第一次接触软件,而且软件都是纯英文,加上不熟悉使用流程,老师为我们了讲了使用方法之后大家还是不太懂,后来在同学们的互相讨论中,及个别问题请教老师后,终于也攻克了这一难关,得到了完美的仿真波形和结果。
具备这些基本知识,相信为我今后的自主学习奠定了良好的基础。
展开阅读全文