可编程逻辑器件基础实验合集
- 格式:doc
- 大小:677.00 KB
- 文档页数:25
可编程逻辑器件实验报告可编程逻辑器件实验报告一、引言可编程逻辑器件(Programmable Logic Device,简称PLD)是一种集成电路器件,它具有可编程的逻辑功能。
PLD的出现极大地推动了数字电路设计的发展,使得设计师能够更加灵活地实现各种复杂的逻辑功能。
本实验旨在通过对PLD的实际应用,加深对其原理和工作方式的理解。
二、实验目的1. 理解PLD的基本原理和工作方式;2. 学会使用PLD进行逻辑电路设计;3. 掌握PLD编程工具的使用方法。
三、实验装置与材料1. PLD芯片:采用Xilinx系列XC9500;2. 开发板:配备了适配XC9500芯片的开发板;3. 逻辑分析仪:用于对PLD工作过程进行实时观测。
四、实验步骤1. 准备工作:a. 将PLD芯片插入开发板的插槽中,并确保插入正确;b. 连接逻辑分析仪与开发板,以便实时观测PLD的工作过程;c. 打开PLD编程工具,准备进行逻辑电路设计。
2. 逻辑电路设计:a. 根据实验要求,确定需要设计的逻辑电路功能;b. 在PLD编程工具中创建新的工程,并选择适合的PLD芯片型号;c. 使用工具提供的逻辑图绘制功能,设计出所需的逻辑电路;d. 对设计好的逻辑电路进行仿真验证,确保功能正确。
3. 编程与下载:a. 将设计好的逻辑电路与PLD芯片进行绑定;b. 进行编程操作,生成逻辑电路的配置文件;c. 将配置文件下载到PLD芯片中,使其能够按照设计的逻辑功能进行工作。
4. 实验验证:a. 将开发板接通电源,观察PLD芯片的工作状态;b. 使用逻辑分析仪对PLD的输入输出信号进行实时观测;c. 对比实验设计的逻辑功能和实际观测到的结果,验证PLD的正确性。
五、实验结果与分析通过实验验证,我们成功设计出了一个简单的逻辑电路,并将其下载到PLD芯片中。
在实际观测中,我们发现PLD能够准确地根据输入信号产生相应的输出信号,实现了预期的逻辑功能。
这充分证明了PLD的可编程性和灵活性。
第1篇一、实验目的1. 熟悉可编程逻辑器件(FPGA)的基本原理和操作方法。
2. 掌握使用FPGA进行数字电路设计的流程。
3. 学会使用FPGA进行简单数字电路的设计与实现。
二、实验器材1. FPGA开发板2. 编译器软件(如Xilinx ISE、Vivado等)3. 实验指导书4. 实验数据线三、实验原理可编程逻辑器件(FPGA)是一种基于半导体工艺的可编程数字电路,具有高集成度、高速度、可重构性强等特点。
FPGA通过内部逻辑单元(如查找表、触发器等)来实现各种数字电路功能。
本实验主要涉及以下原理:1. 数字电路基本原理2. 可编程逻辑器件(FPGA)的基本结构和工作原理3. 编译器软件的使用方法四、实验步骤1. 熟悉开发板(1)认识开发板上的各个模块,如时钟模块、输入输出模块、存储器模块等。
(2)了解开发板上各个模块的功能和作用。
2. 设计数字电路(1)根据实验要求,设计所需的数字电路。
(2)使用原理图或HDL语言进行电路描述。
3. 编译与下载(1)使用编译器软件对设计的数字电路进行编译。
(2)生成比特流文件。
(3)将比特流文件下载到FPGA中。
4. 测试与验证(1)观察FPGA上各个模块的输出信号,验证电路功能是否正确。
(2)使用示波器等仪器进行波形观察,进一步验证电路功能。
五、实验内容1. 设计一个4位全加器(1)原理图设计:使用原理图编辑器设计4位全加器电路。
(2)HDL语言设计:使用HDL语言描述4位全加器电路。
(3)编译与下载:将设计的电路编译成比特流文件,下载到FPGA中。
(4)测试与验证:观察FPGA上各个模块的输出信号,验证4位全加器电路功能是否正确。
2. 设计一个8位奇偶校验器(1)原理图设计:使用原理图编辑器设计8位奇偶校验器电路。
(2)HDL语言设计:使用HDL语言描述8位奇偶校验器电路。
(3)编译与下载:将设计的电路编译成比特流文件,下载到FPGA中。
(4)测试与验证:观察FPGA上各个模块的输出信号,验证8位奇偶校验器电路功能是否正确。
2012 秋《可编程逻辑器件》 课程设计报告报告题目:数字钟实验报告组长 组员姓名学号邮箱成绩.1 设计内容概述 1.1 功能概述:一个具有计秒、计分、复位的数字钟,数字钟从 0 开始计时,计 满 60 秒后自动清零,分钟加 1,最大计时显示 59 分 59 秒。
用 A7 按键 作为系统时钟复位,复位后全部显示 00 00,重新开始计时。
1.2 输入输出接口:NET "clk" LOC = "B8" ; NET "dula[0]" LOC = "L14" ; NET "dula[1]" LOC = "H12" ; NET "dula[2]" LOC = "N14" ; NET "dula[3]" LOC = "N11" ; NET "dula[4]" LOC = "P12" ; NET "dula[5]" LOC = "L13" ;NET "dula[6]" LOC = "M12" ; NET "dula[7]" LOC = "N13" ; NET "rst" LOC = "A7" ;NET "wela[0]" LOC = "F12" ; NET "wela[1]" LOC = "J12" ; NET "wela[2]" LOC = "M13" ; NET "wela[3]" LOC = "K14" ;2 系统框图及模块划分 采用自顶向下分层设计思想的大概设计示意图如下:计时器秒计数分计数动态显示60 进制'..3 组员任务划分 1:负责本课题的开展,组织,协调及任务分配与安排问题,查找课题相关资料,完成主程序,及接口控制文件的编写。
一、实验目的通过本次实验,使学生掌握可编程逻辑器件(FPGA)的基本原理和操作方法,了解其结构特点和应用领域。
通过实验,培养学生动手实践能力和创新意识,提高学生运用FPGA进行数字系统设计和验证的能力。
二、实验原理可编程逻辑器件(FPGA)是一种高度集成的数字电路,具有可编程性、可扩展性和可重用性。
FPGA主要由可编程逻辑单元、可编程互连资源、时钟管理单元、I/O单元等组成。
通过编程,用户可以根据自己的需求定制FPGA内部逻辑结构,实现各种数字电路功能。
FPGA编程通常采用硬件描述语言(HDL),如VHDL或Verilog。
HDL描述了电路的功能和结构,通过编译和综合,生成FPGA内部的逻辑资源分配和互连关系。
实验中,我们将使用Quartus II软件进行FPGA编程和仿真。
三、实验内容1. FPGA基础操作(1)安装Quartus II软件,熟悉软件界面和基本操作。
(2)搭建FPGA实验平台,包括FPGA开发板、电源、连接线等。
(3)将FPGA开发板连接到计算机,进行硬件初始化和配置。
2. FPGA编程(1)使用VHDL或Verilog语言编写实验程序,实现简单的数字电路功能,如全加器、编码器、译码器等。
(2)将编写好的程序导入Quartus II软件,进行编译和综合。
(3)观察编译报告,检查程序语法错误和资源占用情况。
(4)进行仿真,验证程序功能是否正确。
3. FPGA下载与验证(1)将编译后的程序下载到FPGA芯片中。
(2)使用示波器或逻辑分析仪等工具,观察FPGA输出的波形,验证程序功能。
(3)根据实验要求,修改程序参数,优化电路性能。
四、实验步骤1. 搭建实验平台(1)将FPGA开发板连接到计算机,确保所有连接线正确。
(2)检查电源电压,确保FPGA芯片供电正常。
2. 编写程序(1)打开Quartus II软件,创建新工程。
(2)选择合适的HDL语言,编写实验程序。
(3)保存程序,并添加到工程中。
可编程逻辑器件作业北京工业大学电子信息工程实验班王智一09022128一、实验内容1.3×8译码器(1)设计输入①建立新的工程,建立新的VHDL FILE,输入程序代码(注意:工程文件夹、工程名称以及顶层实体名推荐使用相同的名称):程序代码:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity demo isPort ( A : in STD_LOGIC_VECTOR (2 downto 0);EN: in STD_LOGIC;Y : out STD_LOGIC_VECTOR (7 downto 0));end demo;architecture DEC of demo issignal indata:STD_LOGIC_VECTOR (2 downto 0);beginprocess(A,EN)beginindata(0)<=A(0);indata(1)<=A(1);indata(2)<=A(2);if(EN='1')thencase indata iswhen "000" =>Y<="00000001";when "001" =>Y<="00000010";when "010" =>Y<="00000100";when "011" =>Y<="00001000";when "100" =>Y<="00010000";when "101" =>Y<="00100000";when "110" =>Y<="01000000";when "111" =>Y<="10000000";when others=>Y<="11111111";end case;end if;end process;end DEC;(2)编译实验仿真波形:图1 3×8译码器输入波形图2 3×8译码器输出波形图3 3×8译码器管脚配置截图图4 3×8译码器Xilinx仿真波形2.数码管显示(1)设计输入程序代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY demo ISPORT(di: in STD_LOGIC_VECTOR(3 downto 0);a: out STD_LOGIC;b: out STD_LOGIC;c: out STD_LOGIC;d: out STD_LOGIC;e: out STD_LOGIC;f: out STD_LOGIC;g: out STD_LOGIC);END demo;ARCHITECTURE a of demo isbeginprocess(di)type data_out is array(0 to 6) of std_logic;variable outp: data_out;begincase di iswhen "0000"=>outp:="1111110";when "0001"=>outp:="0110000";when "0010"=>outp:="1101101";when "0011"=>outp:="1111001";when "0100"=>outp:="0110011";when "0101"=>outp:="1011011";when "0110"=>outp:="1011111";when "0111"=>outp:="1110000";when "1000"=>outp:="1111111";when "1001"=>outp:="1111011";when "1010"=>outp:="1110111";when "1011"=>outp:="0011111";when "1100"=>outp:="1001110";when "1101"=>outp:="0111101";when "1110"=>outp:="1001111";when "1111"=>outp:="1000111";when others=>null;end case;a<=outp(0);b<=outp(1);c<=outp(2);d<=outp(3);e<=outp(4);f<=outp(5);g<=outp(6);end process;end a;(2)编译实验仿真波形:图5 数码管输出波形3.BPSK的解调(1)BPSK的解调原理:调相信号是通过载波的相位变化来传输消息的,它具有恒定的包络,而且频率上也无法分离,所以不能采用包络解调,只能采用相干解调。
实验一Quartus II 8.0软件使用简介(基础性实验)一实验目的1、了解利用Quartus II 8.0 软件开发数字电路的基本流程以及掌握Quartus II软件的详细操作。
2、了解使用VHDL语言和原理图设计进行HDL描述的实现方法。
3、掌握Quartus II 8.0 软件开发数字电路的基本设计思路,软件环境参数配置,时序仿真,管脚分配,并且利用JTAG接口进行下载的常规设计流程。
4、掌握使用SIGNALTAP II进行硬件采样的具体过程。
二实验前的准备1、将红色的MODUL_SEL拨码开关组合的1、2、8拨上,3、4、5、6、7拨下,使数码管显示当前模式为:C1.2、检查JTAG TO USB转换接口和USB连接线的连接,并且将JTAG线连接到核心板上的JTAG接口(核心板的第二个十针的插口)处。
三实验要求学习使用Quartus II 8.0软件,掌握VHDL文本描述和原理图描述的RTL级描述方法,掌握硬件设计方案下载到FPGA芯片的方法,掌握嵌入式逻辑分析仪分析硬件信号的方法。
四实验内容1、建立MUX41A的工程,利用VHDL语言设计多功能计数器的程序文件,并对其进行编辑,保存,综合。
给出各语句的作用的说明。
2、给出VHDL设计方案的时序仿真波形,根据波形详细描述设计的功能特点。
3、锁定锁定好引脚,并进行硬件下载测试。
4、使用SIGNALTAP II 对此4选1多路选择器进行实时测试。
5、将实验过程和实验结果的测试详细过程写进实验报告。
实验二多功能计数器的设计(设计性实验)一实验目的1、熟悉利用Quartus II 8.0 软件开发数字电路的基本流程以及熟悉Quartus II软件的操作。
2、了解使用VHDL语言和原理图设计进行HDL描述的实现方法。
3、掌握多功能计数器设计的基本设计思路,软件环境参数配置,时序仿真,管脚分配,并且利用JTAG接口进行下载的常规设计流程。
4、掌握使用SIGNALTAP II进行硬件采样的具体过程。
可编程逻辑器件实验讲义目录实验一 QuartusⅡ软件及EDA实验平台介绍 (1)实验二 QuartusⅡ文本设计输入 (4)实验三 QuartusⅡ混合设计输入 (5)实验四 D、T触发器 (7)实验五十六进制数码管显示 (8)实验六 3-8译码器设计 (10)实验七计数器的设计 (12)实验八数控分频器的设计 (13)实验九锁存器的设计 (15)实验十 4选1多路选择器 (17)实验十一循环彩灯控制器的设计 (19)实验一 QuartusⅡ软件及EDA实验平台介绍(1)实验目的:熟悉QuartusⅡ软件的使用,学习其操作过程及仿真过程。
(2)实验内容:学习使用QuartusⅡ对程序进行编辑输入、编译及仿真。
1、打开QuartusII软件。
2、选择路径。
选择 Project Wizard,指定工作目录,指定工程和顶层设计实体称;注意:工作目录名不能有中文。
3、添加设计文件。
将设计文件加入工程中。
单击“Next”,如果有已经建立好的VHDL或者原理图等文件可以在中选择路径然后添加,或者选择Add All 添加所有可以添加的设计文件(.VHDL ,.Verilog原理图等)。
如果没有直接点击“Next”,等建立好工程后再添加也可,这里我们暂不添加。
4、选择FPGA器件。
Family选择Cyclone,Available device选EP1C12Q240C8,点击“Next”。
5、选择外部综合器、仿真器和时序分析器。
Quartus II支持外部工具,可通过选中来指定工具的路径。
这里我们不做选择,默认使用Quartus II自带的工具。
6、结束设置。
单击“Next”,弹出“工程设置统计”窗口,上面列出了工程的相关设置情况。
最后单击“Finish”,结束工程设置。
7、建立VHDL原文件。
选择菜单“File” “New…”。
8、添加文件到工程中。
VHDL原文件编辑完后,选择,选择和工程相同的文件名。
点击“保存”,文件就被添加进工程当中。
可编程逻辑器件设计实验报告可编程逻辑器件设计实验报告实验背景近年来,随着计算机技术的飞速发展,可编程逻辑器件逐渐成为了计算机领域中不可或缺的一部分。
可编程逻辑器件是一种能够通过编程实现特定功能的电路器件,具有广泛的应用范围,如数字系统控制、数据处理、自动化控制等领域。
在本次实验中,我们将通过设计一个可编程逻辑器件,来加深对于逻辑电路和计算机原理的理解,并能够对数字系统进行控制和设计。
实验原理可编程逻辑器件设计的原理基本上是对于基本逻辑门的运算进行模拟,然后将模拟结果存储在器件中,再根据需要进行处理和操作。
本实验中我们采用了FPGA芯片,它具有可编程的逻辑门、可编程的触发器和可编程的连接关系等,能够在一个芯片中实现很多模块。
我们利用Verilog HDL语言,将逻辑模块设计成RTL级别的元件,并组成所需的逻辑电路,最后通过实验板实现电路的实际运行。
实验流程本次实验分为两部分:第一部分为单周期CPU实验,第二部分为五级流水线CPU实验。
1. 单周期CPU实验单周期CPU是指执行一个指令需要一个时钟周期的CPU。
本实验建立的CPU支持R-type、lw和sw三种指令。
具体的流程如下:① 取指令(instruction fetch,IF)从存储器中(ROM)读取指令并存入指令寄存器中。
② 指令译码(instruction decode,ID)将指令寄存器中存放的指令解析出来,识别出操作码和操作寄存器,并将后者中写入数据的数据读出。
③ 执行(execution,EX)根据操作码,将指令的两个操作数进行运算,并将运算结果写入数据写寄存器中。
④ 访存(memory access,MEM)从存储单元中读取或写入数据,具体包括load word(lw )指令和store word(sw)指令。
⑤ 写回(write back,WB)将执行结果写入指令寄存器。
完成后,程序会返回至IF状态,将下一条指令取入指令寄存器,可以进行下一轮操作。
可编程逻辑器件及EDA技术实验报告一、组合逻辑电路设计数字逻辑电路按照逻辑功能的特点分为两类,一类是组合逻辑电路,简称为组合电路;另一类是时序逻辑电路,简称为时序电路。
组合电路的特点是电路任意时刻输出状态只取决该时刻的输入状态,而与该时刻钱的电路状态无关。
1、逻辑门电路设计实验原理:逻辑门电路包括基本逻辑门电路和符合逻辑门电路。
VHDL语言可以直接支持的逻辑运算符共有七种逻辑运算,它们是:NOT 逻辑非AND 逻辑与NAND 逻辑与非OR 逻辑或NOR 或非XOR 异或XNOR 异或非实验内容:例3-2的参考程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee. std_logic_unsigned.all;entity example3_2 isport(a,b,c,d:in std_logic;f:out std_logic_vector(3 downto 0));end example3_2;architecture behavioral of example3_2 isbeginf(0)<=(a and b)or(b and c)or(not b and not c);f(1)<=(a and b and c)or not(not a or not b or not c);f(2)<=(a xor b xor c)or(not(d)and(a or c));f(3)<=not ((a and b)xor (c and d))or((a and b and d)xor(b and c and d));end behavioral;实验分析:用逻辑运算符是实现了相对较为复杂的逻辑运算。
参考程序中使用括号来强制控制逻辑运算的优先级,对于用VHDL设计,这种写法是必修的。
CPLD/FPGA设计实验报告装订线实验名称:时序电路仿真基础实验目的:掌握modelsim软件的基本使用方法,完成基本时序电路仿真学生姓名:学号:实验内容:实验一 4bit加减计数器1、创建工程工程名称:updown 顶层实体文件名:updown2、创建文件创建Verilog HDL文件,实现一个4bit加减计数器的测试功能。
`timescale 1ns/1ns;module t_updown;reg clk,load,reset,up_down;reg [3:0] d;wire[3:0] q;integer i;parameter delay=100;updown u(clk,d,load,reset,up_down,q);initialbeginreset=1'b0;load=1'b0;clk=1'b0;up_down=1'b1;#delay clk=~clk;#delay reset=1'b1;load=1'b1;d=4'b0000;clk=~clk; #delay clk=~clk;#delay reset=1'b1;load=1'b0;clk=~clk;#delay clk=~clk;for (i=0;i<20;i=i+1)#delay clk=~clk;#delay up_down=1'b0;for (i=0;i<20;i=i+1)#delay clk=~clk;endendmodule三、编译工程四、仿真实验二 N分频器1、创建工程工程名称:fdiv 顶层实体文件名:fdiv2、创建文件创建Verilog HDL文件,实现N分频器仿真功能。
(N设为12)`timescale 1ns/1ns;module t_fdiv;reg reset,clk;wire out;wire [4:0] q;integer i;parameter delay=100;fdiv u(reset,clk,out,q);initialbeginreset=1'b0;clk=1'b0;#delay clk=~clk;#delay reset=1'b1;clk=~clk;for (i=0;i<200;i=i+1)#delay clk=~clk;endendmodule3、编译工程4、仿真。
H a r b i n I n s t i t u t e o f T e c h n o l o g y可编程逻辑器件设计及应用实验报告实验一:电路图方法设计:异步16分频一、实验内容1、熟悉ISE M的安装及使用2、熟悉电路图方式的输入方法;3、熟悉ISE环境下的波形仿真4、学习SIE安装过程5、建立一个新的工程(cpld 9500系列)6、输入电路图异步16分频,如图1-1所示:图1-1二实验结果1、异步16分频电路图如图1-2所示:图1-2 2、建立测试波形方法仿真激励图形,如图1-3所示:图1-33、引脚约束条件如下:NET "CLK" LOC = "P6";NET "CLR" LOC = "P7";NET "O1" LOC = "P42";NET "O2" LOC = "P37";NET "O3" LOC = "P40";NET "O4" LOC = "P39";4、最终仿真结果如图1-4,1-5所示:图1-4图1-5三实验结果讨论分析通过本次试验,初步掌握了ISE的使用方法,通过ISE自带库文件完成电路的搭建,实现了对输入时钟的2分频,4分频,8分频和16分频,通过最终的试验验证得到了正确的试验结果。
指导教师签字:实验二电路图方法分层设计:全加器一、实验内容1、建立一个新的工程(cpld 9500系列)2、建立一个独立的电路图(All_ADD)3、输入电路图:一位全加器图2-1一位全加器4、建立测试波形方法仿真激励图形图2-2波形仿真激励5、功能仿真记录结果,分析正确性。
6、生成电路模块图2-3模块建立7、利用电路模块设计8位全加器,(新电路图或者顶层电路图)图2-4 8位全加器(顶层电路图)8、建立测试波形方法仿真激励图形图2-5 8位全加器波形仿真激励9、学习总线数据预置方式:通过使用相同名字来对总线进行连接设置,和总线数据格式。
实验1:四位加减法器设计1。
实验任务:设计带借位、进位的4位二进制减法、加法器。
2。
实验要求:要考虑借位、进位。
在软件环境下,编写源文件并用器件实现。
3。
实验过程:(1)原理分析:多位减加法器的构成有两种方式:并行进位和串行进位方式。
并行进位加法器,串行进位是将全加器进行级联构成的,这种方式电路会比较简单。
本次实验中采用了自底向上(Bottom—Up)的分层次电路设计方法。
实际上,Verilog HDL 语言中的加减运算符为程序设计提供了很大的便利,此次实验又采用它实现了加减法器.(2)Verilog HDL源文件设计:[1]。
利用算术运算符的程序设计:module adderandsubtracter(s,k,cin,cout);input cin,k;parameter[3:0] aa = 4'b0100;parameter[3:0]bb = 4'b0101;output cout;output[3:0] s;reg cout,s;always@(k)beginif(k == 1){cout,s}〈= aa+bb+cin;else{cout,s}<= aa-bb—cin;endendmodule[2]。
自底向上(Bottom—Up)的分层次电路设计方法的Verilog HDL源文件。
module Adderandsubtracter1 bit (k,A,B,Cin ,Sum,Cout );input A,B,Cin,k;output Sum,Cout;parameter[3:0] A = 4'b0100;parameter[3:0] B = 4'b0101;assign Sum=(((A^k)^B)^Cin)^k;assign Cout=((A^k)&B)| ((A^k)&Cin) | (B&Cin);end modulemodule Adderorsubtracter4bit (k,First, Second, Carry_In, Sum_out, Carry_out);input[0:3] First,Second;input Carry_in;output[0:3] Sum_out;output Carry_out;wire [0:2]Car;always@(k)beginif(k == 0)Adderandsubtracter1 bitA1 (First[3],Second[3],Carry_in,Sum_out[3],Car[2]);A2 (First[2],Second[2], Car[2],Sum_out[3],Car[1]);A3 (First[3],Second[3],Car[1],Sum_out[3],Car[0]);A4 (First[3],Second[3],Car[0],Sum_out[3],Carry_out);elseAdderandsubtracter1 bitA1 (First[3],Second[3],Carry_in,Sum_out[3],Car[2]);A2 (First[2],Second[2],Car[2],Sum_out[3],Car[1]);A3 (First[3],Second[3],Car[1],Sum_out[3],Car[0]);A4 (First[3],Second[3], Car[0],Sum_out[3],Carry_out);endend module(3)编译源文件:在主界面Process窗口中双击Translate Design,对所编辑的代码进行综合,通过后会出现绿色对号。
可编程逻辑器件实验报告完整版实验报告:可编程逻辑器件的应用与实验引言:可编程逻辑器件(Programmable Logic Device,PLD)是一种用于实现数字逻辑功能的集成电路。
它可以根据用户的需求进行可编程配置,从而实现不同的逻辑功能。
本次实验旨在通过对可编程逻辑器件的使用和应用,了解其原理和使用方法,培养我们的电路设计和实现能力。
一、实验目的:1.了解可编程逻辑器件的基本原理和工作方式;2. 掌握使用Xilinx ISE软件进行PLD设计和仿真的方法;3.进行简单的PLD设计与实现,验证其功能和正确性。
二、实验原理:可编程逻辑器件由可编程逻辑阵列(Programmable Logic Array,PLA)和可编程互连(Programmable Interconnect)组成。
它可以通过内部的可编程开关电路和存储器单元,将逻辑功能和互连关系进行可编程配置,从而实现不同的逻辑功能。
1. 可编程逻辑阵列(PLA):主要由可编程逻辑门阵列(Programmable Logic Gate Array,PLGA)和存储器单元(Memory Cell)组成。
PLGA由多个逻辑门和可编程开关电路组成,可以实现逻辑功能的实现和连接。
存储器单元用于存储逻辑功能实现的信息。
2. 可编程互连(Programmable Interconnect):可编程逻辑器件内部的互连部分由可编程开关电路组成,用于将PLGA中的逻辑功能进行连线,形成所需的电路。
3. 配置位流(Configuration Bitstream):配置位流是将设计好的逻辑功能以二进制的形式存储到可编程逻辑器件中,实现PLD的可编程配置。
三、实验步骤:1. 运行Xilinx ISE软件,创建一个新的工程;2.在工程中添加一个PLD器件,并选择相应的型号和参数;3.设计逻辑功能电路,将其转化为逻辑图;4. 使用Xilinx ISE软件进行逻辑综合和仿真,验证电路功能的正确性;6.通过信号发生器输入测试信号,并通过示波器观察输出结果,验证PLD的功能和正确性。
可编程逻辑器件及EDA技术实验报告一、组合逻辑电路设计数字逻辑电路按照逻辑功能的特点分为两类,一类是组合逻辑电路,简称为组合电路;另一类是时序逻辑电路,简称为时序电路。
组合电路的特点是电路任意时刻输出状态只取决该时刻的输入状态,而与该时刻钱的电路状态无关。
1、逻辑门电路设计实验原理:逻辑门电路包括基本逻辑门电路和符合逻辑门电路。
VHDL语言可以直接支持的逻辑运算符共有七种逻辑运算,它们是:NOT 逻辑非 AND 逻辑与NAND 逻辑与非 OR 逻辑或NOR 或非 XOR 异或XNOR 异或非实验内容:例3-2的参考程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee. std_logic_unsigned.all;entity example3_2 isport(a,b,c,d:in std_logic;f:out std_logic_vector(3 downto 0));end example3_2;architecture behavioral of example3_2 isbeginf(0)<=(a and b)or(b and c)or(not b and not c);f(1)<=(a and b and c)or not(not a or not b or not c);f(2)<=(a xor b xor c)or(not(d)and(a or c));f(3)<=not ((a and b)xor (c and d))or((a and b and d)xor(b and c and d));end behavioral;实验分析:用逻辑运算符是实现了相对较为复杂的逻辑运算。
参考程序中使用括号来强制控制逻辑运算的优先级,对于用VHDL设计,这种写法是必修的。
Harbin Institute of Technology可编程逻辑器件设计及应用实验报告姓名:同组人:学号:班级: 1105201指导教师:张新潮院系:电子与信息工程学院实验一异步16分频一、实验内容1、学习SIE安装过程2、建立一个新的工程(cpld 9500系列)3、输入电路图4、建立测试波形方法仿真激励图形5、功能仿真6、建立引脚约束文件NET "CLK" LOC = "P6";NET "CLR" LOC = "P7";NET "O1" LOC = "P42";NET "O2" LOC = "P37";NET "O3" LOC = "P40";NET "O4" LOC = "P39";7、形成下载文件二实验结果三实验结果讨论分析实验当中采用了四个分频器,将发送的脉冲信号进行分频,并实现十六分频。
从仿真可以看出,实验结果和预期相符地很好。
指导教师签字:实验二:电路图方法分层设计:全加器一、实验内容1、建立一个新的工程(cpld 9500系列)2、建立一个独立的电路图(All_ADD)3、输入电路图一位全加器4、建立测试波形方法仿真激励图形5、功能仿真见实验结果。
8、生成电路模块9、利用电路模块设计8位全加器,(新电路图或者顶层电路图)10、建立测试波形方法仿真激励图形11、功能仿真仿真图见实验结果。
二实验结果2.1一位全加器仿真结果2.2 八位全加器功能仿真结果三实验结果讨论分析按照实验步骤依次建立相关模块,并进行仿真。
从波形图中可以看出,对于单个全加器可以实现全加,对于八个全加器能够实现八位全加。
实验结果符合要求。
指导教师签字:3 实验三:Verilog语言方法设计:8位全加器二、实验内容1、建立一个新的工程(cpld 9500系列)2、建立一个Verilog模块(All_ADD8)3、输入全加器module ALL_Addr8(A, B, CI, SUM, CY);input [7:0] A;input [7:0] B;input CI;output [7:0] SUM;output CY;assign {CY,SUM}=A+B+CI;endmodule4、建立测试波形方法仿真激励图形5、功能仿真见实验结果。
可编程逻辑器件设计及应用实验报告本文是一份关于可编程逻辑器件设计及应用实验报告的文档,旨在介绍可编程逻辑器件(PLD)的原理、设计方法和应用实验。
一、PLD的原理和分类可编程逻辑器件(PLD)是一种数字电路器件,是一种能够配置自定义逻辑电路的器件。
它由可编程逻辑数组(PLA)和可编程输入和可编程输出的I/O的一个组合而成。
PLA是逻辑电路的基本部件。
PLA可以对使用的逻辑类型进行编程,以及透明地传输引脚。
PLD一般分为三大类:可编程数组逻辑器件(PAL),可编程逻辑阵列器件(PLA)和复杂可编程逻辑器件(CPLD)。
1.PALPAL是PLD的第一代产品。
PAL的原理是使用一组固定的OR门和一组可编程的AND门。
PAL需要使用一个和与逻辑表格显示器一起工作的编程器。
PAL由于自身设计的限制,在设计复杂的电路时存在很大的局限性。
2.PLAPLA是PLD的第二代产品。
PLA利用可编程的AND和OR 逻辑门对电路进行编程。
PLA的编程方式是将逻辑等式写在内部RAM中,这些逻辑等式是由双路维护电路输入的状态计算出来的。
PLA的通常的坏处是输入功率较高,在大多数电路设计中,PLA会消耗很大的功率。
3.CPLDCPLD是由PLA发展而来的,它是PLA的第三代产品。
CPLD 采用了浮动门架设计的晶体管,可以代替PLA中的PAL、GAL。
CPLD模块包括可编程集成电路和高速D触发器,它们可以优化PLA架构以执行信号编码、处理和控制任务。
二、PLD的设计方法1.设计流程PLD的设计方法主要分为以下几个部分:(1)电路分析:这是设计PLD电路的第一个步骤。
在这个步骤中,我们需要分析系统要完成的任务,并确定使用器件的类型。
(2)设计逻辑:在逻辑设计过程中,需要查看各种器件数据表以获取逻辑门的定制设置。
(3)编程:编程是根据设计逻辑对PLD进行编程的过程。
(4)仿真:仿真可以用于在实际硬件上测试电路的正确性和性能。
(5)验证:验证是确保电路可以在计划的时间内完成任务的过程。
MAX+PLUSⅡ软件平台的使用练习一、实验目的1、学会使用MAX PLUS II开发工具。
2、掌握原理图和程序代码两种常用的输入方式。
二、实验内容1、以模12计数器为例,学习使用原理图输入的方式进行设计该电路。
具体步骤为:(1)项目建立(2)原理图输入(3)项目编译(4)项目仿真2、以模12计数器为例,用已经给出的程序代码,学习使用程序代码输入的方式进行设计该电路。
具体步骤为:(1)项目建立(2)文本输入(3)项目编译(4)项目仿真三、实验结果1、画出你设计的模12计数器的原理图。
2、画出用原理图设计的模12计数器的仿真波形图。
五、实验小结(手写)4位全加器的设计一、实验目的1、用原理图设计4位全加器。
2、掌握调用系统和自定义元件的方法。
3、掌握用原理图设计电路的方法。
二、实验原理1位全加器可以用两个1位半加器和一个二输入或门组成。
1位半加器的具体设计如下图所示:1位全加器的具体设计如下图所示:4位全加器可看作4个1位全加器串行构成,具体连接方法如下图中所示:三、实验内容1、用VHDL 语言(原理图)设计4位全加器。
2、对设计的4位全加器进行时序仿真。
1A 1B 1S 2A 2B 2S0A 0B 0C 0S 3A 3B 3S3C 位全加器连接示意图位全加器构成由41A B1位半加器逻辑原理图1位全加器逻辑原理图1、画出你设计的4位全加器的顶层原理图。
2、画出你设计的4位全加器的仿真波形图。
五、实验小结(手写)计数器的设计一、实验目的1、熟练掌握原理图设计电路的方法。
2、掌握调用元件图形符号的方法。
3、用原理图方法设计我们所需的各种计数器。
二、实验原理两个二进制(十进制)的可逆计数器串行就可以组成一个0-255(0-99)的可逆计数器。
具体连接方法就是把低位计数器的进位输出送到高位计数器的时钟输入,其它的连接就与这个具体几进制计数器的端口决定。
这是一个最基本的方法,在数字电子课程中已经学过。
对于二进制可逆计数器可用一个74169(十进制可逆计数器74168)得到。
实验一基于74161的100进制计数一、实验原理计数器电路是一种随时钟输入CP的变化,其输出按一定的顺序变化的时序电路。
按照输出的编码形式可分为:二进制计数器、二一十进制计数器、循环码计数器等。
按计数的容量分:十进制计数器、十六进制计数、一百进制计数器等。
本设计采用两片74161芯片级联的方式,在quartusII中通过原理图设计法实现100进制计数器,即实现从0~99的计数。
74161介绍:74161是一个十六进制加法计数器。
清零采用的是异步方式,置数采用的是同步方式。
74161有数据置入功能。
未计数前,将输出QD,QC,QB,QA,置成1000,然后开始计数,就能构成七进制计数器,计数到111时就有脉冲进位信号。
以此类推,当两片74161芯片级联时,就可是实现0~99的计数,从而完成100进制计数器的设计。
其中是直接清零端,是预置数控制端,ABCD是预置数据输入端,ENP 和ENT是计数控制端,QA、QB、QC、QD是计数输出端,RCO是进位输出端。
外引线排列图逻辑符号二、实验步骤(一)创建工程1、选择菜单file—New Project Wizard,选择保存位置,并命名工程名。
2、将设计文件加入工程。
3、选择仿真器和综合类型,目标芯片EP2C5T144C8。
4、设置相关参数(二)原理图设计1、在QuartusII操作环境中,单击工具栏“File”选择“new”中的“Device Design Files”建立新的原理图编辑窗口。
2、双击编辑窗口,将相关元件调入原理图编辑窗口中,并连接好电路,在元件名上双击后可以更改各器件引脚名。
3、保存到工程建立的目录文件夹4、将设计项目设置成可调用的文件。
在打开原理图文件的情况下,选择File —Create/Update—Create Symbol Files for Cureent File,即可将当前文件变成一个元件符号存盘,以待在高层次设计中调用。
如半加器h_adder.bdf,一位全加器f_adder..bdf。
(三)全程编译设置好相关参数后,将设计好的工程文件进行编译,若无错误,则可进行下一步的功能仿真操作,如有错误,则需按照提示错误进行改正,直至无误。
(四)功能仿真1、打开文件波形编辑器,新建波形文件。
2、设置仿真时间区域,保存。
3、将工程的端口信号名选入波形编辑器中。
View—Uility Windows—Node Finder—list,将有关端口引脚拖进波形编辑器。
4、编辑输入波形,设置参数后,启动仿真器,观察结果。
三、实验结果通过quartusII原理图设计法设计100进制计数器,两片74161级联得到计数器原理图,经综合无错误,通过功能仿真结果可知,本设计达到设计目的,能够实现0~99的一百位计数,实验结果如下:图1 100进制计数器原理图图2 100进制计数器功能仿真四、实验分析总结通过这次的可编程逻辑器件实验课,我对Quartus II 13软件的使用与CPLD/FPGA设计有进一步了解与掌握。
实验通过一个简单的实例来演示如何使用QuartusⅡ做一个0~100的计数器。
虽然有许多不懂,但经过查询资料,使我克服困难,同时加深了对可编程逻辑器件应用与开发这门课的兴趣,我相信,以后能更好运用其中知识。
这次设计总的来说我还是很满意的,毕竟自己耗费了很多的时间和精力,设计的每一个部分都是自己的心血,并且达到了100位计数器的要求,能够实现100位计数。
实验二 8位二进制加法器一、实验原理一位全加器仿真表分析:表1 一位全加器真值表逻辑式:cin bin ain S ⊕⊕=um ()bin ain cin bin ain Cout •+⊕=8位二进制加法器,它的功能主要是实现两个8位二进制数的相加,其结果的范围应该在00000000到111111110之间,即000到510之间。
我们通常输入的是十进制数,一个八位二进制数所对应的最大的十进制数是255,于是输入两个范围在0到255之间的数,首先通过二-十进制编码器将输入的十进制数的个位、十位、百位分別转换为8421BCD 码,得到两个十二位字码,再通过加法器将它们相加,逄10进1,得到一个新的十二位字码,再还原到原来的三位十进制数。
最后输出的就是一个三位十进制数,其范围在000到510之间。
本设计采取用8个1位全加器构成一个8位全加器的设计方法,加法器间的进位可以串行方式实现。
即将低位加法器的进位输出cout 与其相邻的高位加法器的最低进位输入信号cin 相接,通过上述方法我们实现了八位二进制数的相加,从而达到了题目的要求。
二、实验步骤(一) 创建工程1、选择菜单file —New Project Wizard ,选择保存位置,并命名工程名2、将设计文件加入工程。
3、选择仿真器和综合类型,目标芯片EP2C5T144C8。
4、设置相关参数 (二)原理图设计1、在QuartusII 操作环境中,单击工具栏“File ”选择“new ”中的“DeviceDesign Files”建立新的原理图编辑窗口。
2、双击编辑窗口,将相关元件调入原理图编辑窗口中,并连接好电路,在元件名上双击后可以更改各器件引脚名。
3、保存到工程建立的目录文件夹4、将设计项目设置成可调用的文件。
在打开原理图文件的情况下,选择File —Create/Update—Create Symbol Files for Cureent File,即可将当前文件变成一个元件符号存盘,以待在高层次设计中调用。
如半加器h_adder.bdf,一位全加器f_adder..bdf(三)全程编译设置好相关参数后,将设计好的工程文件进行编译,若无错误,则可进行下一步的功能仿真操作,如有错误,则需按照提示错误进行改正,直至无误。
(四)功能仿真1、打开文件波形编辑器,新建波形文件。
2、设置仿真时间区域,保存。
3、将工程的端口信号名选入波形编辑器中。
View—Uility Windows—Node Finder—list,将有关端口引脚拖进波形编辑器。
4、编辑输入波形,设置参数后,启动仿真器,观察结果。
三、实验结果通过quartus原理图设计法设计八位二进制加法器时,首先设计半加器,将半加器设置成底层文件,之后由半加器设计成一位全加器,再由8个一位全加器级联,从而完成八位二进制的设计,经验证,原理图综合无错误,通过功能仿真结果可知,本设计达到设计目的,能够完成0~255的加法,实验结果如下:图1半加器原理图(h_adder)图2半加器功能仿真图3 一位全加器原理图(f_adder)图4 一位全加器功能仿真图5 八位二进制加法器原理图图6 八位二进制加法器功能仿真(b设为50)四、实验分析总结本次实验通过一个简单的实例来演示如何使用QuartusⅡ做一个八位二进制加法器。
虽然有许多不懂,但经过查询资料,使我克服困难,同时加深了对可编程逻辑器件应用与开发这门课的兴趣,我相信,以后能更好运用其中知识。
这次设计总的来说我还是很满意的,功能都能够很好的实现,而且通过这次试验,我也熟悉了利用 Quartus II 的原理图输入设计简单组合电路的方法,掌握了层次化设计的方法及相关流程,并且初步掌握了利用EDA软件进行电子线路设计的详细流程。
实验三 3-8译码器一、实验原理由3-8译码器的特性,可得出以下真值表:3-8 译码器:输入3位二进制代码,输出8个互斥的信号。
二进制译码器的输入是一组二进制代码,输出是一组与输入代码一一对应的高、低电平信号。
对于3-8译码器来说,3位二进制共有8种状态,所以对应的输出有8 种状态。
例如:对于二进制代码111来说,输出为01111111。
二、实验步骤1、编辑3-8线译码器的源程序执行“File”→“New”→“Verilog HDL File ”命令,进入VerilogHDL 文本编辑方式,按下列3 线-8 线译码器的Verilog HDL 源代码输入源程序:module V3_8_if_case(dout, din, ena, clr); output reg [7:0] dout;input [2:0] din;input ena, clr;always @(din,ena,clr)if(!clr)dout <= 8'b00000000;elsebeginif(ena==1)case(din)3'b000:dout <= 8'b11111110;3'b001:dout <= 8'b11111101; 3'b010:dout <= 8'b11111011; 3'b011:dout <= 8'b11110111; 3'b100:dout <= 8'b11101111; 3'b101:dout <= 8'b11011111; 3'b110:dout <= 8'b10111111; 3'b111:dout <= 8'b01111111; default:dout <=8'b10101010; endcaseelsedout <= 8'b11111111;endendmodule对应RTL viewer为:图1 RTL viewer2、设计文件存盘和编译完成3线-8 线译码器的文本编辑后,以decoder.v件名将设计文件保存在工程目录中,“.v”表示Verilog HDL 源程序文件。
完成文本文件编辑并存盘后,执行QuartusII 的“Processing”→“Start Compilation”命令,对设计文件进行编译,检查设计文件中的错误。
3、生成元件符号在Quratus II 集成环境下,执行“File”菜单中的“Create Default Symbol”命令,可为通过编译的设计文件产生一个元件符号,并被保存在工程目录中,该元件符号可以被其他电路系统设计调用,成为该系统的一个基本元件。
其输入/输出端口名由系统自动改为大写字母。
3-8线译码器的元件符号如图所示:图24、仿真设计文件在Quratus II 波形编辑方式下,编辑3-8线译码器的波形文件,并完成输入信号输入电平的设置。
波形文件编辑结束后也要将波形文件保存在工程目录中,波形文件存盘后,执行启动仿真器“Start Simulation”命令开始仿真,可通过观察仿真波形进行设计电路的功能验证。
三、实验结果图3对其仿真图进行仿真分析:DIN为输入信号组,它由DIN[2]-DIN[0]三个二进制代码输入信号组成。