可编程逻辑器件设计实验报告
可编程逻辑器件实验报告

可编程逻辑器件实验报告可编程逻辑器件实验报告一、引言可编程逻辑器件(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.理解可编程逻辑器件(如FPGA)的原理和工作方式;2.掌握VHDL语言的基本语法和编程方法;3.学习使用开发工具进行电路设计和仿真;4.熟悉设计流程,培养实践操作能力。
二、实验原理1.可编程逻辑器件原理可编程逻辑器件(FPGA)是一种可重构的数字电路,可以通过编程方式配置其内部电路,实现各种逻辑功能。
FPGA由可编程逻辑单元(PLU)、输入输出模块和配置存储器组成,其中PLU是FPGA的核心部分,由一系列可编程查找表(LUT)组成,LUT可以存储逻辑功能和状态信息。
2.VHDL语言简介VHDL(VHSIC Hardware Description Language)是一种用于描述数字电路的硬件描述语言,它允许工程师用一种类似于C语言的描述方法来开发和测试电路。
VHDL可以描述电路的结构、行为和时序特性,具有很强的可移植性和灵活性。
三、实验环境和工具1. 实验环境:Windows操作系统;2. 开发工具:Xilinx ISE Design Suite。
四、实验内容本次实验中,我们要设计一个简单的计数器电路,并通过FPGA进行仿真验证。
计数器电路的原理如下:1.通过按键输入信号,控制计数器的工作方式:上升沿触发或下降沿触发;2.计数器可以进行增计或减计,最大计数值为7;3.计数器的输出结果通过LED灯显示出来。
五、实验步骤1. 在Xilinx ISE Design Suite中创建新工程,并设置工程的基本参数,如工程名称和目标设备;2.在ISE中创建新的源文件,并编写VHDL代码来描述计数器电路的结构、行为和时序;3. 对VHDL代码进行综合、布局和路由,生成对应的bit文件;5.在FPGA板上调试和测试设计的电路。
六、实验结果与分析经过实验,我们成功设计了一个简单的计数器电路,并通过FPGA进行了仿真验证。
通过按键控制,我们可以观察LED灯随着计数器的计数进行增亮或减弱的变化。
可编程逻辑实验报告(3篇)

第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)保存程序,并添加到工程中。
fpga实验报告

fpga实验报告FPGA实验报告引言随着科技的发展和计算机应用的广泛应用,人们对于计算机硬件的需求也越来越高。
在这个背景下,FPGA(Field Programmable Gate Array)作为一种可编程逻辑器件,被广泛应用于数字电路设计和嵌入式系统开发。
本篇文章将就FPGA的基本原理、实验设计和实验结果进行探讨。
一、FPGA的基本原理FPGA是一种可编程逻辑器件,它由一系列可编程逻辑单元(PLU)和可编程互连资源(PIM)组成。
PLU可以根据用户的需求进行编程,实现不同的逻辑功能。
PIM则用于连接不同的PLU,构成用户所需的电路结构。
FPGA的可编程性使得它能够根据不同的应用需求进行灵活的配置和重构,具有很高的可扩展性和适应性。
二、FPGA实验设计在FPGA实验设计中,我们通常需要进行电路设计、编程和仿真等步骤。
1. 电路设计FPGA实验中的电路设计是实验的核心环节。
我们需要根据实验要求,设计出符合要求的逻辑电路。
在设计过程中,我们可以使用硬件描述语言(HDL)如Verilog或VHDL来描述电路结构和功能。
通过对电路进行分析和优化,我们可以得到满足实验要求的电路设计。
2. 编程在电路设计完成后,我们需要将电路设计转化为FPGA可识别的编程文件。
这一步骤通常使用专门的软件工具来完成,如Xilinx ISE或Quartus II。
通过这些软件工具,我们可以将电路设计转化为FPGA可执行的bit文件。
3. 仿真在将编程文件下载到FPGA之前,我们通常需要进行仿真验证。
通过仿真,我们可以验证电路设计的正确性和性能。
仿真可以帮助我们发现潜在的问题和错误,从而提前解决,确保实验的顺利进行。
三、FPGA实验结果在实验过程中,我们通过将编程文件下载到FPGA上,使其实现我们设计的逻辑电路。
通过实验,我们可以获得电路的输出结果,并对其进行验证和分析。
1. 输出验证通过与设计预期结果进行比对,我们可以验证电路的输出是否符合预期。
可编程逻辑器件实验报告

可编程逻辑器件作业北京工业大学电子信息工程实验班王智一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的解调原理:调相信号是通过载波的相位变化来传输消息的,它具有恒定的包络,而且频率上也无法分离,所以不能采用包络解调,只能采用相干解调。
可编程逻辑器件设计实验报告

可编程逻辑器件设计实验报告可编程逻辑器件设计实验报告实验背景近年来,随着计算机技术的飞速发展,可编程逻辑器件逐渐成为了计算机领域中不可或缺的一部分。
可编程逻辑器件是一种能够通过编程实现特定功能的电路器件,具有广泛的应用范围,如数字系统控制、数据处理、自动化控制等领域。
在本次实验中,我们将通过设计一个可编程逻辑器件,来加深对于逻辑电路和计算机原理的理解,并能够对数字系统进行控制和设计。
实验原理可编程逻辑器件设计的原理基本上是对于基本逻辑门的运算进行模拟,然后将模拟结果存储在器件中,再根据需要进行处理和操作。
本实验中我们采用了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状态,将下一条指令取入指令寄存器,可以进行下一轮操作。
可编程逻辑实验报告

学校名称可编程逻辑实验报告实验名称实验一用原理图输入法设计门电路一:实验目的1.掌握PLD芯片的基本使用方法,熟悉EDA软件MAX+PLUSⅡ操作。
2.学会利用软件方针和硬件实现对数字电路的逻辑功能进行验证和分析。
3.能够利用CPLD器件开发具有基本与非逻辑功能的数字电路。
二:实验所用仪表及主要器材PC,EDA软件MAX+PLUSⅡ。
三:实验原理简述(源程序、真值表、原理图)(1)程序:Library ieee;Use ieee.std_logic_1164.all;Entity qwer isPort(a,b:in std_logic;y:out logic);End;Architecture rel_1 of qwer isBeginY<=a nand b ;End;(2)真值表:四:实验测量记录五:实验心得(实验中问题的解决方法等)这次试验最主要的目的是熟悉MAX-PLUS II的使用与操作原理并不是很困难,加上稍微对程序有一定的理解再照着书上的操作步骤一步一步来就可以了,老师的讲解也是十分的详细认真听讲了这个试验不算难的,很快就可以做出来.没有什么特别的问题。
实验名称二、用文本输入法设计门电路一:实验目的1.通过各种常见门电路的现实,进一步熟悉CPLD开发的全过程。
2.认识各种各种常见门电路,并掌握它们的逻辑功能。
3.能够通过CPLD的开发实现具有门电路功能的数字电路。
二:实验所用仪表及主要器材计算机,MAX+PLUSII软件三:实验原理简述(原程序、真值表、原理图)常见逻辑门的认知a.与门源程序:Library ieee;Use ieee.std_logic_1164.all;Entity e2_1_and isPort(a,b:in std_logic;y:out std_logic);End;Architecture rel_1 of e2_1_and isBeginY<=a and b ;End;逻辑表达式:y=a&bb.或门源程序:Library ieee;Use ieee.std_logic_1164.all;Entity e2_2_or isy:out std_logic);End;Architecture rel_1 of e2_2_or is BeginY<=a or b ;End;逻辑表达式:y=a+b真值表:c.与非门源程序:Library ieee;Use ieee.std_logic_1164.all; Entity e2_3_nand isPort(a,b:in std_logic;y:out std_logic);End;Architecture rel_1 of e2_3_nand is BeginY<=a nand b;End;逻辑表达式:y=/(a&b)真值表:d.或非门源程序:Library ieee;Use ieee.std_logic_1164.all; Entity e2_4_nor isPort(a,b:in std_logic;End;Architecture rel_1 of e2_4_nor is BeginY<=a nor b ;End;逻辑表达式:y=/(a+b)真值表:e.异或门源程序:Library ieee;Use ieee.std_logic_1164.all; Entity e2_5_xor isPort(a,b:in std_logic;y:out std_logic);End;Architecture rel_1 of e2_5_xor is BeginY<=a xor b ;End;逻辑表达式:y= a xor b真值表:f.同或门源程序:Library ieee;Use ieee.std_logic_1164.all; Entity e2_6_xnor isPort(a,b:in std_logic;End;Architecture rel_1 of e2_6_xnor isBeginY<=a xnor b ;End;逻辑表达式:y=a nxor b真值表:四:实验测量记录(数据、仿真波形图及分析、原程序分析、硬件测试实分析)a.(与门)波形图b.(或门)波形图c.(与非门)波形图d.(或非门)波形图e.(异或门)波形图f.(同或门)波形图五:实验心得通过本次实验,我进一步熟悉了Max + PLUS II 软件的使用,并学会了一些基本的VHDL 语法知识,并利用VHDL对基本门电路进行描述和仿真。
可编程逻辑器件实验报告

可编程逻辑器件实验报告
一.实验目的
1.掌握数字时钟的设计方法
2.掌握CPLD设计流程,设计60进制计数器,进行仿真同时观察控制效果二.方案设计与工作原理
1.方案设计
共用时钟和复位脉冲,DIVDER进行分频(此处仿真采用2分频,实际实验采用7分频),o_comm进行数码管显示控制,counter控制进制数(本实验采用60进制,各位十进制,十位6进制),encoder进行代码转换,将十进制数转换成相应控制数码管的16进制数,scaner控制4为数码管的输出顺序。
如图所示:
2.部分代码调试
Counter:
Divder:
Encoder:
Scanner:
三.系统实现与结果仿真
四.调试结果(照片)
五.感想与建议
1.可编程逻辑器件实验课的学习,锻炼了我的动手能力,将以前学习的数字电子技术理论知识与实践相结合,加深了我对数电知识的理解。
从编程到仿真到烧写开发板,直至完成每一次的实验,我体会到一种设计逻辑器件的乐趣。
同时,在与小组成员的交流中,合作能力也得到了培养。
2.我希望以后老师上课的讲解可以放慢一点,这样可以听的更清晰,也更易于理解。
PLD可编程逻辑器件-可编程逻辑器件设计及应用试验报告33页 精品

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、学习总线数据预置方式:通过使用相同名字来对总线进行连接设置,和总线数据格式。
一位全加器_可编程逻辑器件VHDL实验报告

1.一位全加器实验报告一、实验目的要求学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。
设计程序独立完成全加器的仿真。
全加器由两个半加器组合而成,原理类似。
半加器不考虑低位进位,但有高位进位;全加器要考虑低位的进位且该进位和求和的二进制相加,可能获得更高的进位。
二、设计方法与原理图图1是一个一位二进制全加器电路图,由图1所示,由两个半加器和一个或门构成一个一位二进制全加器;ain,bin为全加器的输入端,cin为全加器的低位进位,sum是全加器的全加和,cout是全加器的全加进位端;从而实现一位二进制全加器。
(图1)一位二进制全加器原理图三、实验内容按照教材上的步骤,在max plus II上进行编辑、编译、综合、适配、仿真。
说明例中各语句的作用,详细描述示例的功能特点,给出其所有信号的时序仿真波形。
四、源程序library ieee;use ieee.std_logic_1164.all;entity full_adder isport(a,b,cin:in std_logic;cout,sum:out std_logic);end entity full_adder;architecture fd1 of full_adder iscomponent h_adderport(a,b:in std_logic;co,so:out std_logic);end component;component or2aport(a,b:in std_logic;c:out std_logic);end component;signal d,e,f:std_logic;beginu1:h_adder port map(a=>ain,b=>bin,co=>d,so=>e); u2:h_adder port map(a=>e,b=>cin,co=>f,so=>sum); u3:or2a port map(a=>d,b=>f,c=>cout);end fd1;五过程性截图六、仿真结果(图2)一位二进制全加器仿真结果七、分析结果与总结由图2,本实验的目标已达成,及通过编写VHDL语言实现一个一位二进制全加器。
可编程逻辑器件实验报告

实验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的功能和正确性。
《可编程逻辑器件设计及应用》实验报告

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、功能仿真见实验结果。
【免费下载】可编程逻辑器件设计实验报告

q
地点: 803 实验室
学号:
2012117282
装
订
线
可编程逻辑器件设计实验报告
实验名称:第二部分:VerilogHDL 基础实验
实验目的:掌握 Quartus II 软件的基本使用方法,完成基本时序电路设计
实验时间:
学生姓名: 赵佳梦 实验名称:同步置数的 D 触发器
1、 实验步骤
2015 年
创建工程、创建文件、编译工程、观察 RTL 视图、仿真
2、 VerilogHDL 代码
module CFQ (clk,d,load,q); input clk,d,load; output q; reg q; always@(posedge clk) begin
if(!load) q<=1; else q<=d; end endmodule 3、RTL 视图
创建工程、创建文件、编译工程、观察 RTL 视图、仿真
2、VerilogHDL 代码
module _DFf (clk,d,load,rest,q); input clk,d,load,rest; output q; reg q; always@(posedge clk or negedge rest) begin if(!rest)
Q
地点: 803 实验室
学号:
q
2012117282
装
订
线
可编程逻辑器件设计实验报告
q<=0; else if (!load) q<=1; else q<=d; end endmodule 3、RTL 视图
4、仿真结果
load
clk
res t
d
10
可编程逻辑器件设计及应用实验报告

可编程逻辑器件设计及应用实验报告本文是一份关于可编程逻辑器件设计及应用实验报告的文档,旨在介绍可编程逻辑器件(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)验证:验证是确保电路可以在计划的时间内完成任务的过程。
可编程逻辑器件实验报告

本实验安排了5条机器指令,分别为ADD(0000 0000)、IN(0010 0000)、OUT(0011 0000) HLT (0101 0000)、JMP addr(1110 0000),括号内为各指令的二进制代码,指令格式如下所示,其中高4位为操作码。
可编程逻辑器件以其高集成度、高速、高可靠性、灵活的编程能力、全新的开发设计思想等特点, 成为当今微电子技术发展的一个重要突破, 并视为电子技术领域继单片机以来的又一次技术革命。它的发展给电气传动的理论研究和实践带来了新的发展机遇, 以往在单片机甚至DSP 上难以实现的复杂控制策略和控制算法, 可以在大规模FPGA 芯片上实现, 因而进一步拓展了电气传动的理论研究和实际应用的发展空间。可以预言, 随着以FPGA 为代表的微电子技术的发展、现代控制理论的广泛应用、电力电子器件和应用技术的不断进步, 电气传动的研究和应用将更加深入和广泛。
S3
00000001010010010
S4
00000000110010010
S5
00010010010001110
S6
0 1100000010011110
S7
10100000010 010010
S8
00000000010011010
S9
00000000011011001
S10
01000000000011011
LAMPA:控制A方向四盏灯的亮灭;其中,LAMPA0~LAMPA3,分别控制A方向的左拐灯、绿灯、黄灯和红灯;
可编程逻辑器件、FPGA、CPLD实验报告5

CPLD/FPGA设计实验报告实验名称: 时序电路仿真基础实验目的:掌握modelsim软件的基本使用方法, 完成基本时序电路仿真学生姓名: 学号:实验内容:实验一8位全加器装一、创建工程工程名称: add8 顶层实体文件名: add8订二、创建文件创建Verilog HDL文件, 实现一个8位全加器的测试功能。
线`timescale 1ns/1nsmodule t_add8;reg cin;reg [7:0] a,b;wire [7:0] sum;wire cout;parameter delay=100;add8 u(a,b,cin,cout,sum);initialbegina=8'b00000000;b=8'b00000000;cin=1'b1;#(delay/2) a=8'b00000001;b=8'b00000001;cin=1'b0;#(delay/2) a=8'b00000010;b=8'b00000011;cin=1'b0;#(delay/2) a=8'b00000100;b=8'b00000111;cin=1'b0;#(delay/2) a=8'b00001000;b=8'b00001001;cin=1'b1;#(delay/2) a=8'b00010000;b=8'b00010001;cin=1'b1;#(delay/2) a=8'b00100000;b=8'b00100001;cin=1'b1;#(delay/2) a=8'b01000000;b=8'b01000001;cin=1'b0;#(delay/2) a=8'b10000000;b=8'b10000001;cin=1'b0;#(delay/2) a=8'b00000111;b=8'b00000111;cin=1'b0;#(delay/2) a=8'b00001111;b=8'b00001001;cin=1'b1;#(delay/2) a=8'b00011111;b=8'b00010001;cin=1'b1;#(delay/2) a=8'b00111111;b=8'b00100001;cin=1'b1;#(delay/2) $stop;end三、编译工程四、仿真实验二4选1数据选择器一、创建工程工程名称: mux4_1 顶层实体文件名: mux4_1二、创建文件创建Verilog HDL文件, 实现3_8译码器仿真功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验名称:Quartus II基础实验实验目的:使用Quartus II设计并完成一个简单的逻辑电路实验时间:2015年地点:803实验室学生姓名:赵佳梦学号:2012117282 实验名称:使用Quartus II设计并完成一个简单的逻辑电路1、实验步骤(1)创建工程(2)创建文件(3)编译工程(4)观察RTL视图(5)仿真2、VerilogHDL代码采用原理图输入3、RTL视图4、仿真结果装订线实验名称:第二部分:VerilogHDL基础实验实验目的:掌握Quartus II 软件的基本使用方法,完成基本时序电路设计实验时间:2015年地点:803实验室学生姓名:赵佳梦学号:2012117282实验名称:简单D触发器1、实验步骤(1)创建工程(2)创建文件(3)编译工程(4)观察RTL视图(5)仿真2、VerilogHDL代码module _DFF (clk,d,q);input clk,d;output q;reg q;always@ (posedge clk)beginq<=d;endendmodule3、RTL视图4、仿真结果装订线实验名称:第二部分:VerilogHDL基础实验实验目的:掌握Quartus II 软件的基本使用方法,完成基本时序电路设计实验时间:2015年地点:803实验室学生姓名:赵佳梦学号:2012117282实验名称:同步置数的D触发器1、实验步骤创建工程、创建文件、编译工程、观察RTL视图、仿真2、VerilogHDL代码module CFQ (clk,d,load,q);input clk,d,load;output q;reg q;always@(posedge clk)beginif(!load)q<=1;elseq<=d;endendmodule3、RTL视图4、仿真结果装订线可编程逻辑器件设计实验报告实验名称:第二部分:VerilogHDL基础实验实验目的:掌握Quartus II 软件的基本使用方法,完成基本时序电路设计实验时间:2015年地点:803实验室学生姓名:赵佳梦学号:2012117282实验名称:同步置数异步清零的D触发器1、实验步骤创建工程、创建文件、编译工程、观察RTL视图、仿真2、VerilogHDL代码module _DFf (clk,d,load,rest,q);input clk,d,load,rest;output q;reg q;always@(posedge clk or negedge rest)beginif(!rest)q<=0;else if (!load)q<=1;elseq<=d;endendmodule3、RTL视图4、仿真结果装订线实验名称:第二部分:VerilogHDL基础实验实验目的:掌握Quartus II 软件的基本使用方法,完成基本时序电路设计实验时间:2015年地点:803实验室学生姓名:赵佳梦学号:2012117282实验名称:带Q_n输出的D触发器1、实验步骤创建工程、创建文件、编译工程、观察RTL视图、仿真2、VerilogHDL代码module d_q(in,clk,q,set,a,reset,q_n);input clk,in,set,a,reset;output reg q,q_n;always@(posedge clk,negedge reset) beginq_n=~q;if(!reset)q<=0;else if(!set)q<=a;elseq<=in;end3、RTL视图4、仿真结果装订线实验名称:第二部分:VerilogHDL基础实验实验目的:掌握Quartus II 软件的基本使用方法,完成基本时序电路设计实验时间:2015年地点:803实验室学生姓名:赵佳梦学号:2012117282实验名称:4选1数据选择器1、实验步骤创建工程、创建文件、编译工程、观察RTL视图、仿真2、VerilogHDL代码module mux4_1 (in0,in1,in2,in3,s0,s1,out);input s0,s1;input in0,in1,in2,in3;output out;reg out;always@(in0,in1,in2,in3,s0,s1) begincase({s0,s1})2'b00:out<=in0;2'b01:out<=in1;2'b10:out<=in2;2'b11:out<=in3;default:out<=1'bz;endcaseendendmodule3、RTL视图4、仿真结果装订线实验名称:第二部分:VerilogHDL 基础实验实验目的:掌握Quartus II 软件的基本使用方法,完成基本时序电路设计 实验时间: 2015年 地点: 803实验室学生姓名: 赵佳梦 学号: 2012117282 实验名称:6选1数据选择器1、实验步骤创建工程、创建文件、编译工程、观察RTL 视图、仿真 2、VerilogHDL 代码module mux6_1 (in0,in1,in2,in3,in4,in5,s0,s1,s2,out); input s0,s1,s2;input in0,in1,in2,in3,in4,in5; output out; reg out;always@(in0,in1,in2,in3,in4,in5,s0,s1,s2) begincase({s0,s1,s2}) 3'b000:out<=in0; 3'b001:out<=in1; 3'b010:out<=in2; 3'b011:out<=in3; 3'b100:out<=in4; 3'b101:out<=in5; default:out<=1'bz; endcase end endmodule 3、RTL 视图装订线4、仿真结果实验名称:第二部分:VerilogHDL基础实验实验目的:掌握Quartus II 软件的基本使用方法,完成基本时序电路设计实验时间:2015年地点:803实验室学生姓名:赵佳梦学号:2012117282实验名称:38译码器(assign语句实现)1、实验步骤创建工程、创建文件、编译工程、观察RTL视图、仿真2、VerilogHDL代码module as_38(a,q);input [2:0] a;output [7:0] q;parameter m=8'b00000001;assign q=(m<<a);endmodule3、RTL视图4、仿真结果装订线实验名称:第二部分:VerilogHDL 基础实验实验目的:掌握Quartus II 软件的基本使用方法,完成基本时序电路设计 实验时间: 2015年 地点: 803实验室学生姓名: 赵佳梦 学号: 2012117282 实验名称:38译码器(always 语句实现)1、实验步骤创建工程、创建文件、编译工程、观察RTL 视图、仿真 2、VerilogHDL 代码module yima3_8(in0,in1,in2,out); input in0,in1,in2; output [7:0] out; reg [7:0] out;always@(in0,in1,in2,out) begincase({in2,in1,in0})3'b000:out<=8'b00000001; 3'b001:out<=8'b00000010; 3'b010:out<=8'b00000100; 3'b011:out<=8'b00001000; 3'b100:out<=8'b00010000; 3'b101:out<=8'b00100001; 3'b110:out<=8'b01000001; 3'b111:out<=8'b10000001; default:out<=2'bz; endcase end endmodule 3、RTL 视图装订线4、仿真结果可编程逻辑器件设计实验报告实验名称:第三部分:VerilogHDL 中级实验实验目的:加深理解,熟练操作 实验时间: 2015年 地点: 803实验室学生姓名: 赵佳梦 学号: 2012117282实验名称:设计一个模10计数器(异步清零,同步置数)1、实验步骤创建工程、创建文件、编译工程、观察RTL 视图、仿真 2、VerilogHDL 代码module m10(clk,set,reset,qout,data,cout); input clk,set,reset; input [3:0] data; output reg [3:0] qout; output reg cout; always@(posedge clk,negedge reset) begin if(!reset) begin qout<=0; cout<=0; end else if(set==0) begin qout<=data; cout<=0; endelse if(qout<9) begin qout<=qout+1; cout<=0;end else begin qout<=0; cout<=1; end end endmodule装订线3、RTL视图4、仿真结果可编程逻辑器件设计实验报告实验名称:第三部分:VerilogHDL 中级实验实验目的:加深理解,熟练操作 实验时间: 2015年 地点: 803实验室学生姓名: 赵佳梦 学号: 2012117282实验名称:设计一个模60计数器(异步清零,同步置数)1、实验步骤创建工程、创建文件、编译工程、观察RTL 视图、仿真 2、VerilogHDL 代码module m_60(clk,load,reset,a,cnt,cout); input clk,load,reset; input [5:0] a; output cout; output [5:0] cnt; reg [5:0] cnt; reg cout;always@(posedge clk or negedge reset) beginif(!reset)cnt<=6'b00_0000; else if(load) cnt<=a; else beginif(cnt<6'd59) begincnt<=cnt+1; cout<=0; end else begin cout<=1;cnt<=6'b00_0000; end end end endmodule 3、RTL 视图装订线4、仿真结果可编程逻辑器件设计实验报告实验名称:第三部分:VerilogHDL 中级实验实验目的:加深理解,熟练操作 实验时间: 2015年 地点: 803实验室学生姓名: 赵佳梦 学号: 2012117282 实验名称:设计一个BCD 码计数器1、实验步骤创建工程、创建文件、编译工程、观察RTL 视图、仿真 2、VerilogHDL 代码module add_sub(ina,inb,sum1,sum2); input [3:0] ina; input [3:0] inb; output [4:0] sum1; output [4:0] sum2; reg [4:0] sum1; reg [4:0] sum2;always@(ina,inb) beginsum1<=ina-inb; sum2<=ina+inb; end endmodule 3、RTL 视图装订线4、仿真结果可编程逻辑器件设计实验报告实验名称:第三部分:VerilogHDL 中级实验实验目的:加深理解,熟练操作 实验时间: 2015年 地点: 803实验室学生姓名: 赵佳梦 学号: 2012117282 实验名称:设计一个4bit 加减计数器1、实验步骤创建工程、创建文件、编译工程、观察RTL 视图、仿真 2、VerilogHDL 代码module add_bcd (a,clk,en,load,reset,out,cout); input [3:0] a;input clk,en,load,reset; output [3:0] out; output cout; reg [3:0] out; reg cout;always@( posedge clk or negedge reset) beginif (!reset)out<=4'b0000; else if(!load) out<=a; else if(!en) out<=out+1; elseout<=out-1; end endmodule 3、RTL 视图装订线4、仿真结果可编程逻辑器件设计实验报告实验名称:第三部分:VerilogHDL 中级实验实验目的:加深理解,熟练操作 实验时间: 2015年 地点: 803实验室学生姓名: 赵佳梦 学号: 2012117282 实验名称:设计一个2、4、8分频器1、实验步骤创建工程、创建文件、编译工程、观察RTL 视图、仿真 2、VerilogHDL 代码module div2_4_8(clk,clk_2,clk_4,clk_8); input clk;output clk_2,clk_4,clk_8; reg clk_2,clk_4,clk_8;always@(posedge clk) beginclk_2<=~clk_2; endalways@(posedge clk_2) beginclk_4<=~clk_4; endalways@(posedge clk_4) beginclk_8<=~clk_8; end endmodule 3、RTL 视图4、仿真结果装订线实验名称:第三部分:VerilogHDL中级实验实验目的:加深理解,熟练操作实验时间:2015年地点:803实验室学生姓名:赵佳梦学号:2012117282 实验名称:设计一个2N分频器1、实验步骤创建工程、创建文件、编译工程、观察RTL视图、仿真2、VerilogHDL代码module div_14(clk,out);input clk;output out;reg out;reg [2:0] temp;always@(posedge clk)beginif(temp<3'd6)temp<=temp+1'b1;elsebeginout<=~out;temp<=0;endendendmodule3、RTL视图4、仿真结果装订线实验名称:第三部分:VerilogHDL 中级实验实验目的:加深理解,熟练操作 实验时间: 2015年 地点: 803实验室学生姓名: 赵佳梦 学号: 2012117282 实验名称:设计一个M+N 分频器1、实验步骤创建工程、创建文件、编译工程、观察RTL 视图、仿真 2、VerilogHDL 代码module div5_7 (clk,out); input clk; output out; reg out;reg [3:0] cout1; reg [3:0] cout2;always @(posedge clk) beginif (cout1<4'd11) begincout1<=cout1+1; if (cout1==4'b0100) out<=~out; end else begin cout1<=0; out<=~out; end endendmodule 3、RTL 视图装订线4、仿真结果可编程逻辑器件设计实验报告实验名称:第三部分:VerilogHDL 中级实验实验目的:加深理解,熟练操作 实验时间: 2015年 地点: 803实验室学生姓名: 赵佳梦 学号: 2012117282 实验名称:设计一个17分频器1、实验步骤创建工程、创建文件、编译工程、观察RTL 视图、仿真 2、VerilogHDL 代码 module div_17(clk,out); input clk;output wire out; reg out1,out2; reg [4:0] temp1; reg [4:0] temp2;assign out=out1|out2; always @(posedge clk ) beginif(temp1<4'd9)temp1<=temp1+1; else begin temp1<=0; out1<=~out1; end end always @(negedge clk) beginif(temp2<4'd9)temp2<=temp2+1; else begin temp2<=0; out2<=~out2; end endendmodule 3、RTL 视图装订线4、仿真结果可编程逻辑器件设计实验报告实验名称:第四部分:ModuleSim 基础仿真实验实验目的:编写一个测试文件 实验时间: 2015年 地点: 803实验室学生姓名: 赵佳梦 学号: 2012117282 实验名称:对1位全加器的仿真1、实验步骤创建工程、创建文件、编译工程、观察RTL 视图、仿真 2、VerilogHDL 代码module full_add(a,b,cin,sum,cout); input a,b,cin; output sum,cout; assign sum=a^b^cin;assign cout=(a&b)|(b&cin)|(cin&a); endmodule3、软件测试代码 `timescale 1ns/1ns module full_add_tb; reg a,b,cin; wire sum,cout;parameter delay=100;full_add u1 (a,b,cin,sum,cout); initial begina=0;b=0;cin=0;#delay a=1;b=0;cin=0; #delay a=0;b=1;cin=0; #delay a=1;b=1;cin=0; #delay a=0;b=0;cin=1;#delay a=1;b=0;cin=1; #delay a=0;b=1;cin=1; #delay a=1;b=1;cin=1; #delay; end endmodule 4、仿真结果装订线可编程逻辑器件设计实验报告实验名称:第四部分:ModuleSim 基础仿真实验实验目的:编写一个测试文件 实验时间: 2015年 地点: 803实验室学生姓名: 赵佳梦 学号: 2012117282实验名称:编写一个测试文件,完成对四选一数据选择器的仿真1、实验步骤创建工程、创建文件、编译工程、观察RTL 视图、仿真 2、VerilogHDL 代码module mux4_1 (in0,in1,in2,in3,s0,s1,out); input s0,s1;input in0,in1,in2,in3; output out; reg out;always@(in0,in1,in2,in3,s0,s1) begincase({s0,s1})2'b00:out<=in0; 2'b01:out<=in1; 2'b10:out<=in2; 2'b11:out<=in3; default:out<=1'bz; endcase end endmodule3、软件测试代码 `timescale 1ns/1ns module sjxz_t;reg s0,s1,in0,in1,in2,in3;mux4_1 u1(in0,in1,in2,in3,s0,s1,out); initial begin#100 in0=1;in1=1;in2=1;in3=1;s0=0;s1=0; #100 in0=1;in1=1;in2=1;in3=1;s0=1;s1=0; #100 in0=1;in1=1;in2=1;in3=1;s0=0;s1=1; #100 in0=1;in1=1;in2=1;in3=1;s0=1;s1=1; end endmodule装订线4、仿真结果可编程逻辑器件设计实验报告实验名称:第四部分:ModuleSim 基础仿真实验 实验目的:编写一个测试文件 实验时间: 2015年 地点: 803实验室学生姓名: 赵佳梦 学号: 2012117282实验名称:编写一个测试文件,完成对模60计数器的仿真 1、实验步骤创建工程、创建文件、编译工程、观察RTL 视图、仿真2、VerilogHDL 代码module m_60(clk,load,reset,a,cnt,cout);input clk,load,reset;input [5:0] a;output cout;output [5:0] cnt;reg [5:0] cnt;reg cout;always@(posedge clk or negedge reset)beginif(!reset)cnt<=6'b00_0000;else if(load)cnt<=a;elsebeginif(cnt<6'd59)begincnt<=cnt+1;cout<=0;endelsebegincout<=1;cnt<=6'b00_0000;endendendendmodule3、软件测试代码 装 订 线`timescale 1ns/1nsmodule sjxz_t;reg s0,s1,in0,in1,in2,in3;mux4_1 u1(in0,in1,in2,in3,s0,s1,out);initialbegin#100 in0=1;in1=1;in2=1;in3=1;s0=0;s1=0;#100 in0=1;in1=1;in2=1;in3=1;s0=1;s1=0;#100 in0=1;in1=1;in2=1;in3=1;s0=0;s1=1;#100 in0=1;in1=1;in2=1;in3=1;s0=1;s1=1; endendmodule4、仿真结果可编程逻辑器件设计实验报告实验名称:第四部分:ModuleSim 基础仿真实验 实验目的:编写一个测试文件 实验时间: 2015年 地点: 803实验室学生姓名: 赵佳梦 学号: 2012117282实验名称:编写一个测试文件,完成对模60BCD 码计数器的仿真 1、实验步骤创建工程、创建文件、编译工程、观察RTL 视图、仿真2、VerilogHDL 代码module bcdm_60(clk,qout,a,reset,load);input clk,reset,load;input [7:0] a;output reg [7:0] qout;always@(posedge clk or negedge reset)beginif(!reset)qout<=8'b0000_0000;else if(load)qout<=a;else if(qout[3:0]<9)qout<=qout+1;else if(qout[7:4]<5)beginqout[7:4]<=qout[7:4]+1;qout[3:0]<=4'b0000;endelse qout[7:0]<=8'b0000_0000;endendmodule3、软件测试代码`timescale 1ns/1nsmodule bcdm_60t;reg clk,reset,load;reg [7:0] a;wire [7:0] qout;parameter delay=100;integer i; 装 订 线bcdm_60 u1(clk,qout,a,reset,load); initialbeginclk=0;reset=0;#delay clk=~clk;reset=1;#delay clk=~clk;reset=0;#delay clk=~clk;reset=0;#delay clk=~clk;reset=1;for(i=0;i<200;i=i+1)#delay clk=~clk;#delay;endendmodule4、仿真结果可编程逻辑器件设计实验报告实验名称:第四部分:ModuleSim 基础仿真实验 实验目的:编写一个测试文件 实验时间: 2015年 地点: 803实验室学生姓名: 赵佳梦 学号: 2012117282实验名称:编写一个测试文件,完成对加4bit 减计数器的仿真 1、实验步骤创建工程、创建文件、编译工程、观察RTL 视图、仿真2、VerilogHDL 代码module add_sub(ina,inb,sum1,sum2);input [3:0] ina;input [3:0] inb;output [4:0] sum1;output [4:0] sum2;reg [4:0] sum1;reg [4:0] sum2;always@(ina,inb)beginsum1<=ina-inb;sum2<=ina+inb;endendmodule3、软件测试代码`timescale 1ns/1nsmodule add_4t;reg [3:0] ina,inb;wire [4:0] sum1,sum2;parameter delay=100;add_sub u1(ina,inb,sum1,sum2);initialbegin#delay ina=6;inb=3;#delay ina=9;inb=2;#delay ina=4;inb=1;#delay ina=10;inb=12;#delay; end 装 订 线endmodule 4、仿真结果可编程逻辑器件设计实验报告实验名称:第四部分:ModuleSim 基础仿真实验 实验目的:编写一个测试文件 实验时间: 2015年 地点: 803实验室学生姓名: 赵佳梦 学号: 2012117282实验名称:编写一个测试文件,完成对分频器的仿真1、实验步骤创建工程、创建文件、编译工程、观察RTL 视图、仿真2、VerilogHDL 代码module fdiv1(clk_in,clk_14,cnt);input clk_in; output reg clk_14; output reg [2:0]cnt; initial clk_14=0;always@(posedge clk_in)beginif(cnt<6)cnt<=cnt+4'b0001;elsebegincnt<=4'b0000;clk_14<=~clk_14;endendendmodule3、软件测试代码`timescale 1ns/1nsmodule fdiv1_tb;reg clk_in; 装订 线wire [2:0]cnt;wire clk_14;parameter delay=100;fdiv1 U0(clk_in,clk_14,cnt);always #delay clk_in=~clk_in;initialbeginclk_in=1;#delay;#(delay*1000) $stop;endinitial $monitor($time,,,"clk_in=%d clr_14=%d cnt=%d",clk_in,clk_14,cnt); endmodule4、仿真结果可编程逻辑器件设计实验报告实验名称:第五部分:阻塞式赋值与非阻塞式赋值 实验目的:比较阻塞式赋值与非阻塞式赋值的区别 实验时间: 2015年 地点: 803实验室学生姓名: 赵佳梦 学号: 2012117282 实验名称:使用两种赋值方式实现B=A;C=B;赋值,并比较综合结果和仿真结果1、实验步骤创建工程、创建文件、编译工程、观察RTL 视图、仿真2、VerilogHDL 代码module zsfz(a,b,c,clk);input a,clk;output reg b,c;always@(posedge clk)beginb=a;c=b;endendmodulemodule fzsfaz(a,b,c,clk);input a,clk;output reg b,c;always@(posedge clk)beginb<=a;c<=b;endendmodule3、 RTL 视图 装 订 线4、仿真结果可编程逻辑器件设计实验报告实验名称:第五部分:阻塞式赋值与非阻塞式赋值 实验目的:比较阻塞式赋值与非阻塞式赋值的区别 实验时间: 2015年 地点: 803实验室学生姓名: 赵佳梦 学号: 2012117282 实验名称:使用两种赋值方式实现模10计数器1、实验步骤创建工程、创建文件、编译工程、观察RTL 视图、仿真2、VerilogHDL 代码module counter(clk,clr_n,Q1,Q2,C1,C2);input clk,clr_n;output[3:0]Q1,Q2;output C1,C2;reg [3:0]Q1,Q2;reg C1,C2;always @(posedge clk or negedge clr_n)if(!clr_n)beginQ1<=0;C1<=0;endelsebeginif(Q1<9)beginQ1<=Q1+1;endelsebeginQ1<=0;endif(Q1==0)C1<=1;elseC1<=0; 装 订 线endalways @(posedge clk or negedge clr_n) if(!clr_n)beginQ2=0;C2=0;endelsebeginif(Q2<9)beginQ2=Q2+1;endelsebeginQ2=0;endif(Q2==0)C2=1;elseC2=0;endendmodule3、RTL视图5、仿真结果。