哈工大电信学院FPGA报告
哈工大数字逻辑电路与系统实验报告

哈工大数字逻辑电路与系统实验报告引言本实验旨在通过对数字逻辑电路与系统的学习与实践,加深对数字逻辑电路原理和应用的理解,掌握数字逻辑电路实验的设计与调试方法。
本报告将详细介绍实验步骤、实验结果以及实验心得体会。
实验目的1.掌握基本的数字逻辑电路设计方法;2.熟悉数字逻辑电路的布线和调试方法;3.学会使用EDA软件进行数字逻辑电路的仿真和验证。
实验器材•FPGA开发板•EDA软件实验过程实验一:逻辑门的基本控制本实验采用FPGA开发板进行实验,以下是逻辑门的基本控制步骤:1.打开EDA软件,新建工程;2.选择FPGA开发板型号,并进行相应配置;3.在原理图设计界面上,依次放置与门、或门、非门和异或门,并连接输入输出引脚;4.面向测试向量实现逻辑门的控制和数据输入;5.运行仿真并进行调试。
实验二:数字逻辑电路实现本实验以4位全加器为例,进行数字逻辑电路的实现,以下是实验步骤:1.打开EDA软件,新建工程;2.选择FPGA开发板型号,并进行相应配置;3.在原理图设计界面上,放置输入引脚、逻辑门和输出引脚,并进行连接;4.根据全加器的真值表,设置输入信号,实现加法运算;5.运行仿真并进行调试。
实验三:数字逻辑电路的串联与并联本实验旨在通过对数字逻辑电路的串联与并联实现,加深对逻辑门的理解与应用。
以下是实验步骤:1.打开EDA软件,新建工程;2.选择FPGA开发板型号,并进行相应配置;3.在原理图设计界面上,放置多个逻辑门,并设置输入输出引脚;4.进行逻辑门的串联与并联连接;5.根据逻辑门的真值表,设置输入信号,进行运算;6.运行仿真并进行调试。
实验结果经过实验测试,实验结果如下:1.实验一:逻辑门的基本控制–与门的功能得到实现;–或门的功能得到实现;–非门的功能得到实现;–异或门的功能得到实现。
2.实验二:数字逻辑电路实现–4位全加器的功能得到实现;–正确进行了加法运算。
3.实验三:数字逻辑电路的串联与并联–逻辑门的串联与并联功能得到实现;–通过逻辑门的串联与并联,实现了复杂的逻辑运算。
FPGA实训报告——简易数字钟

桂林电子科技大学职业技术学院课题:FPGA实训专业:电子信息工程技术学号:姓名:目录关键词: (1)引言: (1)设计要求: (1)EDA技术介绍: (1)Verilog HDL简介: (1)方案实现: (2)工作原理: (2)总结: (3)结语: (3)程序设计: (4)数字钟关键词:EDA、Verilog HDL、数字钟引言:硬件描述语言HDL(Hardware Des-cription Language)是一种用形式化方法来描述数字电路和系统的语言。
目前,电子系统向集成化、大规模和高速等方向发展,以硬件描述语言和逻辑综合为基础的自顶向下的电路设计发放在业界得到迅猛发展,HDL在硬件设计领域的地位将与C和C++在软件设计领域的地位一样,在大规模数字系统的设计中它将逐步取代传统的逻辑状态表和逻辑电路图等硬件描述方法,而成为主要的硬件描述工具。
Verilog HDL是工业和学术界的硬件设计者所使用的两种主要的HDL之一,另外一种是VHDL。
现在它们都已经成为IEEE标准。
两者各有特点,但Verilog HDL拥有更悠久的历史、更广泛的设计群体,资源也远比VHDL丰富,且非常容易学习掌握。
此次以Verilog HDL语言为手段,设计了多功能数字钟,其代码具有良好的可读性和易理解性。
设计要求:数字钟模块、动态显示模块、调时模块、到点报时模块等;必须有键防抖动功能。
可自行设计8位共阴数码管显示;亦可用FPGA实验平台EDK-3SAISE上的4位数管,但必须有秒指导灯。
EDA技术介绍:20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。
在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。
这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。
FPGA课程设计报告--基于FPGA的FIR滤波器的设计

目录一设计目的 (2)二设计要求 (2)2.1、基本要求 (2)2.2、提高部分 (3)三设计原理 (3)3.1、线性FIR滤波器原理 (3)3.2 设计分析 (5)3.3 实验结果分析验证提示 (6)3.4 DDS原理简介 (6)四设计思路 (7)4.1基于matlab工具的滤波器系数计算 (8)五设计内容 (10)5.1、寄存器模块 (10)5.2加法器模块 (11)5.3 减法器模块 (14)5.4 乘法器模块 (16)六结果分析 (21)七参考文献 (23)八心得体会 (24)基于FPGA的FIR滤波器的设计一设计目的为了帮助学生深入理解和消化基本理论、进一步提高综合应用能力并且锻炼独立解决问题的能力,我们将《数字信号处理》、《集成电路原理与应用》和《FPGA系统设计与应用》几门课程融合在一起开设的FPGA综合实验课程设计。
主要从以下两方面考虑:1、设计内容突出FPGA及信号处理的理论和技术的综合应用。
如在数字滤波实验中,要求学生能够熟悉数字滤波器的基本原理,并能运用VHDL语言实现数字滤波。
并采用MATLAB软件实现的结果与运用VHDL实现的仿真结果进行,来验证其正确性。
最后通过实验装置进行硬件实现,并对结果进行综合分析。
2、如何将《数字信号处理》、《集成电路原理与应用》和《《FPGA 系统设计与应用》三门课程有机的结合起来,设计一实际的系统。
由学生在所学知识的基础上,查阅相关资料,自主设计,通过实验装置进行实现,并对结果进行综合分析,寻找最佳设计方案。
希望学生通过完成一个利用FPGA实现信号处理相关的课题的理论设计、程序设计和实验调试任务,提高他们分析解决实际问题的能力。
本设计要求运用课程所学知识,进行算法实现、 Matlab 仿真,VHDL程序设计,FPGA开发平台上调试,加深对FPGA在信号处理知识领域的理解与运用,培养对FPGA系统的开发技能。
二设计要求2.1、基本要求利用所学知识,采用VHDL语言完成FIR滤波器的设计仿真。
哈工大高级电工电子实验报告

Harbin Institute of Technology课程报告课程名称:高级电子技术综合实验院系:报告者:学号:时间: 2016-6-3哈尔滨工业大学实验一 basys2学习板的简单应用一、实验目的1.熟悉使用basys2学习板,了解FPGA的相关知识2.熟悉ISE软件的应用3.使用basys2实现四人表决器的功能二、实验步骤1.将板子与PC相连2.将写好的程序烧录板子中3.波动板子上的开关,进行实验验证三、相关代码// Verilog test fixture created from schematicD:\Xilinx\13.4\example\test5.26\test5.sch - Thu May 26 10:16:03 2016 `timescale 1ns / 1psmodule test5_test5_sch_tb();// Inputsreg A;reg C;reg B;reg D;// Outputwire F;// Bidirs// Instantiate the UUTtest5 UUT (.A(A),.C(C),.B(B),.D(D),.F(F));// Initialize Inputs// `ifdef auto_initinitial beginC = 0;B = 0;D = 0; #100;A = 0;C = 0;B = 0;D = 1; #100;A = 0;C = 0;B = 1;D = 0; #100;A = 0;C = 0;B = 1;D = 1; #100;A = 0;C = 1;B = 0;D = 0; #100;A = 0;C = 1;B = 0;D = 1; #100;A = 0;C = 1;B = 1;D = 0; #100;A = 0;C = 1;B = 1;D = 1; #100;A = 1;C = 0;B = 0;D = 0;A = 1;C = 0;B = 0;D = 1;#100;A = 1;C = 0;B = 1;D = 0;#100;A = 1;C = 0;B = 1;D = 1;#100;A = 1;C = 1;B = 0;D = 0;#100;A = 1;C = 1;B = 0;D = 1;#100;A = 1;C = 1;B = 1;D = 0;#100;A = 1;C = 1;B = 1;D = 1;#100;end// `endifendmodule四、实验现象A按下,BCD三个当中至少有一个也按下时,灯亮;A不按下,BCD都按下时,灯也亮,其他情况下灯不亮。
FPGA实验报告5篇

FPGA实验报告5篇第一篇:FPGA实验报告FPGA实验报告专业:XXX 姓名:XXX 学号:XX一:实验目的1.熟悉Modelsim和Quartus II软件的运行环境和使用2.熟练使用Quartus II仿真软件生成网表。
3.熟悉FPGA前仿真和后仿真的整个流程。
二:实验内容编写counter计数器,在Quartus II仿真软件中生成网表,再在Modelsim中进行后仿真。
三: 实验步骤1.在Modelsim编写源程序(counter计数器及激励),编译源文件,确保程序的正确性,并进行前仿真,生成波形图如下:附:源程序如下:module counter(q,clk,reset);input clk,reset;output [3:0] q;reg [3:0] q;always @(posedge reset or negedge clk)if(reset)q <= 4'b0;elseq <= q + 1;endmodule module top;reg CLK,RESET;wire [3:0] Q;counter c1(Q,CLK,RESET);initialCLK=1'b0;always#1 CLK=~CLK;initial$monitor($time,“Q=%d”,Q);initialbeginRESET=1'b1;#5 RESET=1'b0;#180 RESET=1'b1;end endmodule 2.新建文件夹,将源程序counter.v放进去。
然后启动Quartus II仿真软件,生成网表。
1).在【File】下拉菜单中选中New Project Wizard选项,出现对话框。
并指定工程工作目录、工程名称和顶层模块名,如图(a)所示。
2).添加(Add)counter.v文件。
如图(b)所示。
3).选择器件系列4).指定其它EDA工具,如图(d)所示。
哈工大FPGA设计与应用分频器设计实验报告

FPGA设计与应用分频器设计实验报告班级:1105103班姓名:郭诚学号:1110510304日期:2014年10月11日实验性质:验证性实验类型:必做开课单位:电信院学时:2学时一、实验目的1、了解Quartus II软件的功能;2、掌握Quartus II的HDL输入方法;3、掌握Quartus II编译、综合、适配和时序仿真;4、掌握Quartus II管脚分配、数据流下载方法;5、了解设计的资源消耗情况;6、掌握分频器和计数器的实现原理;7、掌握数码管的静态和动态显示原理二、实验准备(1分)2.1 EP2C8的系统资源概述逻辑单元8,256M4K RAM 块(4k比特+512校验比特) 36总的RAM比特数165,888嵌入式乘法器18锁相环PLLs 22.2 工程所用到的FPGA引脚及功能说明工程所用到的FPGA引脚及功能说明:PIN_23是时钟引脚;PIN_114 PIN_117 PIN_127 PIN_134是数码管的位选引脚;PIN_133 PIN_116 PIN_110 PIN_112 PIN_128 PIN_118 PIN_115是数码管段选信号引脚;实验所用的LED是共阴级连接2.3 数码管的动态显示原理动态显示是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O 线控制,当输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于FPGA对位选通COM端电路的控制,所以只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
FPGA实验报告

FPGA实验报告一、实验目的本次实验的主要目的是了解和掌握FPGA的基本原理、主要特点和应用领域,以及学习使用HDL语言进行FPGA设计和开发。
二、实验器材和软件1.实验器材:FPGA开发板、计算机;2. 实验软件:Xilinx Vivado。
三、实验内容1.FPGA基础知识学习首先,我们学习了FPGA的基本原理和主要特点。
FPGA(Field Programmable Gate Arrays)即现场可编程门阵列,是一种可在现场进行编程和重新配置的集成电路。
与常规的固定功能集成电路相比,FPGA具有灵活性和可重构性的优势,因此在各种应用领域得到广泛应用。
2.VHDL语言学习在了解了FPGA基础知识后,我们开始学习使用HDL语言进行FPGA设计和开发。
HDL(Hardware Description Language)即硬件描述语言,是一种用于描述数字电路结构和行为的语言。
在本次实验中,我们主要学习了VHDL(VHSIC Hardware Description Language)语言的基础语法和常用结构,如组合逻辑和时序逻辑。
3.FPGA设计实验基于学习的FPGA和VHDL知识,我们进行了一系列的FPGA设计实验。
首先,我们设计了一个组合逻辑电路,实现了一个两输入AND门的功能。
然后,我们设计了一个时序逻辑电路,实现了一个简单的计数器,能够在每个时钟上升沿时进行计数。
四、实验结果与分析通过实验,我们成功地实现了一个两输入AND门和一个计数器电路。
经过仿真和综合,我们验证了设计的正确性和可行性。
从实验中,我们不仅掌握了FPGA的基本原理和主要特点,也学习了使用HDL语言进行FPGA设计和开发的基本方法。
通过自己动手实验,我们加深了对FPGA的理解,并提高了自己的实践操作能力。
五、实验总结通过本次实验,我们对FPGA的基本原理和主要特点有了更深入的了解,也掌握了使用HDL语言进行FPGA设计和开发的基本方法。
fpga实训报告

fpga实训报告1、实训背景本次FPGA实训旨在提升学员对于FPGA(Field-Programmable Gate Array)的了解和应用能力。
通过实际操作,加深对FPGA结构、原理和编程的理解,提高在数字电路设计和嵌入式系统开发中的实践能力。
2、实训目标2.1 掌握FPGA的基本原理和工作原理;2.2 熟悉FPGA的开发环境和常用开发工具;2.3 学会使用硬件描述语言(HDL)进行FPGA的设计和编程;2.4 利用FPGA实现数字电路设计和嵌入式系统开发。
3、实训过程与方法本次FPGA实训采用了以下步骤和方法:3.1 理论学习:通过课堂讲解和学习资料,学习FPGA的基本概念、原理和应用领域;3.2 实验操作:通过实验指导书,按照实验流程进行FPGA开发环境的搭建、FPGA设计和编程的实际操作;3.3 问题解决:在实验过程中遇到问题时,通过查阅资料、请教老师和同学等方式解决,保证实验的顺利进行;3.4 实验总结:每个实验结束后,撰写实验总结报告,总结所学到的知识和经验。
4、实训内容4.1 FPGA基础知识学习:包括FPGA的定义、特点、结构和工作原理等内容;4.2 FPGA开发环境搭建:包括安装开发软件、连接开发板和计算机等操作;4.3 硬件描述语言(HDL)的学习和应用:包括Verilog和VHDL的基本语法、模块化设计和状态机的实现等;4.4 FPGA设计和编程实验:包括数电实验、数字系统设计和嵌入式系统开发等;4.5 实验总结和报告撰写:对每个实验进行总结,包括实验目的、步骤、结果和心得体会等。
5、实训成果通过本次FPGA实训,学员们取得了一定的成果:5.1 提高了对FPGA的理解和应用能力;5.2 熟悉了FPGA开发环境和常用工具的使用;5.3 学会了使用HDL进行FPGA设计和编程;5.4 实现了数字电路设计和嵌入式系统开发等应用。
6、实训心得本次FPGA实训让我对FPGA有了更深入的了解,通过实际操作,我不仅学会了使用FPGA开发环境和编程工具,还实现了一些具体的应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
. .FPGA设计与应用综合实验报告班级::学号:日期:2016年11月3日实实验性质:验证性实验类型:必做开课单位:电信院学时:10学时一、实验目的1、了解分频器和计数器的基本实现原理;2、掌握七段数码管的使用方法;3、掌握锁相环的使用方法;4、掌握串口通信的基本原理和实现方法;5、了解线性分组码的基本原理及实现方法;6、掌握大型工程的模块设计方法。
二、实验要求该综合实验由两个独立的实验构成,分别是:综合实验1:(7,4)汉明编码、串口发送和数码管显示综合实验。
在该实验中,要求能够利用4个拨码开关产生4个信息比特送给FPGA;随后FPGA利用(7,4)汉明码对这4个信息比特进行编码;编码后的7位码字一方面通过串口送给计算机进行显示,另一方面通过七段数码管进行显示。
由于(7,4)汉明码的每个码字只有7个比特,而串口通信通常需要8个比特,所以采用低位插零的方式将7位汉明码字扩充为8个比特再进行串口传输和数码管显示。
要求使用2个七段数码管,其中一个显示扩充汉明码中的高4位(即信息位),而另一个数码管显示扩充汉明码中的低4位(即校验位)综合实验2:(7,4)汉明译码、串口接收和数码管显示综合实验。
在该实验中,要求能够利用计算机的串口发送汉明码字(可以是没有错误的汉明码字,也可以是有一个比特错误的汉明码字);然后利用FPGA进行串口数据接收;接收后进行(7,4)汉明译码,并将译码后的结果送给七段数码管进行显示。
要求使用4个七段数码管,其中2个数码管用于显示从串口接收到的数据,另一个数码管用于显示汉明译码后的正确信息比特,最后一个数码管用于指示出错比特的位置。
三、实验准备(10分)3.1 串口通信的基本原理(5分)串口通信指口按位发送和接收字节。
通信使用3根线完成,分别是地线、发送、接收。
由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。
其他线用于握手,但不是必须的。
串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。
对于两个进行通信的端口,这些参数必须匹配。
波特率表示每秒传输的位数,接受发送双方必须匹配。
不发送数据时,连线上为高电平。
发送数据时,要首先发送一个起始位,为低电平,然后按照协议发送需要的数据,八位或者九位(带有校验位),然后发送一个停止位,为高电平。
接收时,要首先确定起始位,然后按照协议接受八位或者九位数据。
接受完成后继续判断起始位,开始下一个接受周期。
3.2 (7, 4)汉明码的编译码基本原理(5分)一般来说,若汉明码长为n ,信息位数为k ,则监督位数r=n-k 。
若希望用r 个监督位构造出r 个监督关系式来指示一位错码的n 种可能位置,则要求n r ≥-12 或 112++≥-r k r (1) 下面以(7,4)汉明码为例说明原理:设汉明码(n,k )中k=4,为了纠正一位错码,由式(1)可知,要求监督位数r ≥3。
若取r=3,则n=k+r=7。
我们用0123456a a a a a a a 来表示这7个码元,用321S S S 的值表示3个监督关系式中的校正子,则321S S S 的值与错误码元位置的对应关系可以规定如表1所列。
表1 监督位与错码位置则由表1可得监督关系式:34501456123462a a a a S a a a a S a a a a S ⊕⊕⊕=⊕⊕⊕=⊕⊕⊕= (2)在发送端编码时,信息位3456a a a a 的值决定于输入信号,因此它们是随机的。
监督位2a 、1a 、0a 应根据信息位的取值按监督关系来确定,即监督位应使式(2)~式(4)中0S 、1S 、2S 的值为0(表示编成的码组中应无错码)345045613462a a a a a a a a a a a a ⊕⊕=⊕⊕=⊕⊕= (3)当数字信号编码成汉明码形式(本文中即A )后在信道中传输,由于信道中噪声的干扰,可能由于干扰引入差错,使得接收端收到错码,因此在接收端进行汉明码纠错,以提高通信系统的抗干扰能力及可靠性。
监督位计算结果:表2 (7,4)汉明码编码四、代码及测试(25分)4.1 综合实验1的原理框图、代码及相关说明(8分)原理框图:图1 发送数据LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY EX1 ISPORT ( xyt_CLK : IN STD_LOGIC;xyt_IN: IN STD_LOGIC_VECTOR( 3 DOWNTO 0 );xyt_LEDH: OUT STD_LOGIC_VECTOR( 6 DOWNTO 0 );xyt_LEDL : OUT STD_LOGIC_VECTOR( 6 DOWNTO 0 );xyt_OUT : OUT STD_LOGIC);END EX1;ARCHITECTURE xyt OF EX1 ISTYPE xyt_STATE_TYPE IS (xyt_STATE_IDLE,xyt_STATE_START,xyt_STATE_SEND,xyt_STATE_STOP);SIGNAL name_STATE:name_STATE_TYPE:=name_STATE_IDLE;SIGNAL name_EN:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL name_BAUD:STD_LOGIC;SIGNAL name_BAUDCNT: STD_LOGIC_VECTOR (8 DOWNTO 0);SIGNAL name_STOPCNT:STD_LOGIC_VECTOR(15 DOWNTO 0);BEGINU1:PROCESS(name_CLK)BEGINIF name_CLK'EVENT AND name_CLK='1' THENIF name_BAUDCNT<217 THENname_BAUDCNT<=name_BAUDCNT+1;name_BAUD<='0';ELSIF name_BAUDCNT<434 THENname_BAUDCNT<=name_BAUDCNT+1;name_BAUD<='1';ELSEname_BAUDCNT<=(OTHERS=>'0');name_BAUD<='0';END IF;END IF;END PROCESS;U2:PROCESS(name_CLK)BEGINname_EN(7 DOWNTO 4)<=name_IN(3 DOWNTO 0);name_EN(3)<=name_IN(3) XOR name_IN(1) XOR name_IN(0);name_EN(2)<=name_IN(3) XOR name_IN(2) XOR name_IN(1);name_EN(1)<=name_IN(2) XOR name_IN(1) XOR name_IN(0);name_EN(0)<='0';END PROCESS;U3:PROCESS(name_BAUD)BEGINIF name_BAUD'EVENT AND name_BAUD='1' THEN CASE name_EN(3 DOWNTO 0) ISWHEN "0000" => name_LEDL <="1000000";WHEN "0001" => name_LEDL <="1111001";WHEN "0010" => name_LEDL <="0100100";WHEN "0011" => name_LEDL <="0110000";WHEN "0100" => name_LEDL <="0011001";WHEN "0101" => name_LEDL <="0010010";WHEN "0110" => name_LEDL <="0000010";WHEN "0111" => name_LEDL <="1111000";WHEN "1000" => name_LEDL <="0000000";WHEN "1001" => name_LEDL <="0010000";WHEN "1010" => name_LEDL <="0001000";WHEN "1011" => name_LEDL <="0000011";WHEN "1100" => name_LEDL <="1000110";WHEN "1101" => name_LEDL <="0100001";WHEN "1110" => name_LEDL <="0000110";WHEN OTHERS => name_LEDL <="0001110";END CASE;CASE name_EN(7 DOWNTO 4) ISWHEN "0000" => name_LEDH <="1000000";WHEN "0001" => name_LEDH <="1111001";WHEN "0010" => name_LEDH <="0100100";WHEN "0011" => name_LEDH <="0110000";WHEN "0100" => name_LEDH <="0011001";WHEN "0101" => name_LEDH <="0010010";WHEN "0110" => name_LEDH <="0000010";WHEN "0111" => name_LEDH <="1111000";WHEN "1000" => name_LEDH <="0000000";WHEN "1001" => name_LEDH <="0010000";WHEN "1010" => name_LEDH <="0001000";WHEN "1011" => name_LEDH <="0000011";WHEN "1100" => name_LEDH <="1000110";WHEN "1101" => name_LEDH <="0100001";WHEN "1110" => name_LEDH <="0000110";WHEN OTHERS => name_LEDH <="0001110"; END CASE;END IF;END PROCESS;U4:PROCESS(name_BAUD)VARIABLE name_NUM:INTEGER RANGE 7 DOWNTO 0;BEGINIF name_BAUD'EVENT AND name_BAUD='1' THEN CASE name_STATE ISWHEN name_STATE_IDLE=>name_OUT<='1';name_STATE<=name_STATE_START;WHEN name_STATE_START=>name_OUT<='0';name_NUM:=0;name_STATE<=name_STATE_SEND;WHEN name_STATE_SEND=>name_OUT<=name_EN(name_NUM);IF name_NUM<7 THENname_NUM:=name_NUM+1;name_STATE<=name_STATE_SEND;ELSEname_STOPCNT<=X"0000";name_STATE<=name_STATE_STOP;END IF;WHEN name_STATE_STOP=>name_OUT<='1';IF name_STOPCNT>=X"FFFF" THENname_STOPCNT<=X"0000";name_STATE<=name_STATE_IDLE;ELSEname_STOPCNT<=name_STOPCNT+1;name_STATE<=name_STATE_STOP;END IF;WHEN OTHERS=>name_STATE<=name_STATE_IDLE;END CASE;END IF;END PROCESS;END name;4.2 综合实验2的原理框图、代码及相关说明(9分)原理框图:图2 译码接收原理图ENTITY EX2 ISPORT(name_CLK:IN STD_LOGIC;name_RXD:IN STD_LOGIC;name_RCVH:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);name_RCVL:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);name_YM_R:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);name_WR:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END ENTITY EX2;ARCHITECTURE name OF EX2 ISTYPE name_RCV_TYPE IS(name_RCV_IDLE,name_RCV_STOP,name_RCV_DATA);SIGNAL name_STATE:name_RCV_TYPE:=name_RCV_IDLE;SIGNAL name_BAUD:STD_LOGIC;SIGNAL name_BAUDCNT:STD_LOGIC_VECTOR(8 DOWNTO 0);SIGNAL name_BAUD8 : STD_LOGIC;SIGNAL name_BAUD8CNT: STD_LOGIC_VECTOR (7 DOWNTO 0);SIGNAL name_FLAG:STD_LOGIC:='0';SIGNAL name_S:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL name_RCV:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL name_YM:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL name_DATA:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL name_RXD_NEXT :STD_LOGIC;SIGNAL name_RIGHT:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINU1:PROCESS(name_CLK)BEGINIF name_CLK'EVENT AND name_CLK='1' THEN IF name_BAUDCNT<216 THENname_BAUDCNT<=name_BAUDCNT+1;name_BAUD<='0';ELSIF name_BAUDCNT<434 THENname_BAUDCNT<=name_BAUDCNT+1;name_BAUD<='1';ELSEname_BAUDCNT<=(OTHERS=>'0');name_BAUD<='0';END IF;END IF;END PROCESS;U11:PROCESS(name_CLK)BEGINIF name_CLK'EVENT AND name_CLK='1' THEN IF name_BAUD8CNT<27 THENname_BAUD8CNT<=name_BAUD8CNT+1;name_BAUD8<='0';ELSIF name_BAUD8CNT<54 THENname_BAUD8CNT<=name_BAUD8CNT+1;name_BAUD8<='1';ELSEname_BAUD8CNT<=(OTHERS=>'0');name_BAUD8<='0';END IF;END IF;END PROCESS;U2:PROCESS(name_BAUD8)VARIABLE name_NUM,NUM:INTEGER:=0;VARIABLE name_NUM0,name_NUM1:INTEGER:=0;VARIABLE name_RCV_TEMP:STD_LOGIC_VECTOR(8 DOWNTO 0); VARIABLE name_FLAG:STD_LOGIC:='0';BEGINIF name_BAUD8'EVENT AND name_BAUD8='1' THEN name_RXD_NEXT<=name_RXD;IF name_FLAG='0'THENIF name_RXD='0' AND name_RXD_NEXT='1' THENEND IF;ELSEIF name_RXD='0' THENname_NUM0:=name_NUM0+1;ELSE name_NUM1:=name_NUM1+1;END IF;name_NUM:=name_NUM+1;IF name_NUM=8 THENIF name_NUM0>name_NUM1 THENname_RCV_TEMP(NUM):='0';ELSE name_RCV_TEMP(NUM):='1';END IF;NUM:=NUM+1;name_NUM:=0;name_NUM0:=0;name_NUM1:=0;END IF;IF NUM=9 THENIF name_RCV_TEMP(0)='0' THENname_RCV<=name_RCV_TEMP(8 DOWNTO 1);END IF;NUM:=0;END IF;END IF;END IF;END PROCESS;U3:PROCESS(name_BAUD)BEGINIF name_BAUD'EVENT AND name_BAUD='1' THENCASE name_RCV(7 DOWNTO 4) ISWHEN "0000" => name_RCVH <= "1000000";WHEN "0001" => name_RCVH <= "1111001";WHEN "0010" => name_RCVH <= "0100100";WHEN "0011" => name_RCVH <= "0110000";WHEN "0100" => name_RCVH <= "0011001";WHEN "0101" => name_RCVH <= "0010010";WHEN "0110" => name_RCVH <= "0000010";WHEN "0111" => name_RCVH <= "1111000";WHEN "1000" => name_RCVH <= "0000000";WHEN "1001" => name_RCVH <= "0010000";WHEN "1010" => name_RCVH <= "0001000";WHEN "1100" => name_RCVH <= "1000110";WHEN "1101" => name_RCVH <= "0100001";WHEN "1110" => name_RCVH <= "0000110";WHEN "1111" => name_RCVH <= "0001110";WHEN OTHERS => NULL;END CASE;CASE name_RCV(3 DOWNTO 0) ISWHEN "0000" => name_RCVL <= "1000000";WHEN "0001" => name_RCVL <= "1111001";WHEN "0010" => name_RCVL <= "0100100";WHEN "0011" => name_RCVL <= "0110000";WHEN "0100" => name_RCVL <= "0011001";WHEN "0101" => name_RCVL <= "0010010";WHEN "0110" => name_RCVL <= "0000010";WHEN "0111" => name_RCVL <= "1111000";WHEN "1000" => name_RCVL <= "0000000";WHEN "1001" => name_RCVL <= "0010000";WHEN "1010" => name_RCVL <= "0001000";WHEN "1011" => name_RCVL <= "0000011";WHEN "1100" => name_RCVL <= "1000110";WHEN "1101" => name_RCVL <= "0100001";WHEN "1111" => name_RCVL <= "0001110";WHEN OTHERS => NULL;END CASE;CASE name_YM ISWHEN "0000" => name_YM_R <= "1000000";WHEN "0001" => name_YM_R <= "1111001";WHEN "0010" => name_YM_R <= "0100100";WHEN "0011" => name_YM_R <= "0110000";WHEN "0100" => name_YM_R <= "0011001";WHEN "0101" => name_YM_R <= "0010010";WHEN "0110" => name_YM_R <= "0000010";WHEN "0111" => name_YM_R <= "1111000";WHEN "1000" => name_YM_R <= "0000000";WHEN "1001" => name_YM_R <= "0010000";WHEN "1010" => name_YM_R <= "0001000";WHEN "1011" => name_YM_R <= "0000011";WHEN "1100" => name_YM_R <= "1000110";WHEN "1101" => name_YM_R <= "0100001";WHEN "1110" => name_YM_R <= "0000110";WHEN "1111" => name_YM_R <= "0001110";WHEN OTHERS => name_YM_R <= "0001110";END CASE;CASE name_S ISWHEN "000" => name_WR <= "1000110";WHEN "001" => name_WR <= "1111001";WHEN "010" => name_WR <= "0100100"; --2WHEN "011" => name_WR <= "0000010"; --6WHEN "100" => name_WR <= "0110000"; --3WHEN "101" => name_WR <= "0011001"; --4WHEN "110" => name_WR <= "1111000"; --7WHEN "111" => name_WR <= "0010010"; --5WHEN OTHERS => NULL;END CASE;END IF;END PROCESS;U4:PROCESS(name_CLK)BEGINIF name_CLK'EVENT AND name_CLK='1' THENname_DATA<=name_RCV(7 DOWNTO 0);name_S(2)<=name_RCV(7) XOR name_RCV(5) XOR name_RCV(4) XOR name_RCV(3);name_S(1)<=name_RCV(7) XOR name_RCV(6) XOR name_RCV(5) XORname_RCV(2);name_S(0)<=name_RCV(6) XOR name_RCV(5) XOR name_RCV(4) XOR name_RCV(1);CASE name_S ISWHEN "110"=>name_DATA(7)<=NOT name_DATA(7);WHEN "011"=>name_DATA(6)<=NOT name_DATA(6);WHEN "111"=>name_DATA(5)<=NOT name_DATA(5);WHEN "101"=>name_DATA(4)<=NOT name_DATA(4);WHEN "100"=>name_DATA(3)<=NOT name_DATA(3);WHEN "010"=>name_DATA(2)<=NOT name_DATA(2);WHEN "001"=>name_DATA(1)<=NOT name_DATA(1);WHEN OTHERS=>name_RIGHT <= name_DATA(7 DOWNTO 4);END CASE;name_YM<=name_RIGHT;END IF;END PROCESS;END ARCHITECTURE name;4.3 两个综合实验的SignalTap II测试结果(8分)(要求:测试数据必须和自己学号有关。