硬件描述语言实验报告

合集下载

硬件描述语言实验报告资料

硬件描述语言实验报告资料

《硬件描述语言》实验报告学院:学号:姓名:专业:实验时间:实验地点:指导教师:年月实验一简单组合逻辑设计一、实验目的及要求:1.掌握基本组合逻辑电路的实现方法。

2.初步了解两种基本组合逻辑电路的生成方法。

3.学习测试模块的编写。

4.通过综合和布局布线了解不同层次仿真的物理意义。

二、实验设备及要求装有modesim和synplify的电脑一台三、实验内容与步骤1.实验内容:本次实验采用Verilog HDL语言设计一个可综合的数据比较器,其功能是比较数据a与数据b的结果,如果两个数据相同,则输出结果1,否则给出结果0;并写出测试模型,使其进行比较全面的测试。

2.实验步骤:(1)建立工程文件,编写模块源码和测试模块,要求测试模块对源文件进行比较全面的测试;(2)编译源码和测试模块,用测试模块对源文件进行测试,并进行仿真;(3)观察综合后生成的文件和源文件的不同点和相同点。

(4)综合时采用不同的FPGA器件,观察综合后的结果有什么不同。

四、实验结果与数据处理:1.RTL图及仿真后波形图:2.综合后的电路图:五、分析与讨论:1.课本练习一的测试方法二中,第二个initial块有什么用?它与第一个initial块有什么关系?答:测试方法二中的第二个initial用来暂停仿真以便观察仿真波形,它与第一个initial是并行关系2.如果在第二个initial块中,没有写出#10000或者$stop,仿真会如何进行?答:如果没有写#10000,仿真会直接停止,没有$stop,仿真不会结束。

3.比较两种测试方法,哪一种更全面?答:第二种测试方法更全面,测试了更多种的变换的情况。

实验二简单分频时序逻辑电路的设计一、实验目的及要求:1.掌握条件语句在简单时序模块设计中的使用;2.掌握verilog语句在简单时序模块设计中的使用;3.学习在Verilog模块中应用计数器;4.学习测试模块的编写、综合和不同层次的仿真。

二、实验设备及要求装有modesim和synplify的电脑一台三、实验内容与步骤:1.实验内容:(1)使用always块和@(posedge clk)或@(negedge clk)的结构来表述时序逻辑,设计1/2分频的可综合模型。

vhdl实验报告

vhdl实验报告

vhdl实验报告VHDL实验报告引言:VHDL(Very High Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,广泛应用于数字电路设计和仿真。

本篇实验报告将介绍我在VHDL实验中的学习和实践经验,包括实验目的、实验过程、实验结果以及对VHDL的理解和展望。

一、实验目的VHDL实验的主要目的是让我们掌握VHDL语言的基本语法和使用方法,能够利用VHDL描述数字电路,并通过仿真和综合工具进行验证和实现。

通过这些实验,我们可以深入了解数字电路的原理和设计方法,提高我们的逻辑设计能力和工程实践能力。

二、实验过程在实验过程中,我们首先学习了VHDL的基本语法,包括实体声明、端口声明、信号声明等。

然后,我们通过实例学习了VHDL的建模方法,包括组合逻辑电路的建模和时序逻辑电路的建模。

在组合逻辑电路的建模中,我们学习了使用逻辑运算符和条件语句描述电路的功能;在时序逻辑电路的建模中,我们学习了使用过程语句和时钟信号描述电路的状态转换。

在学习了VHDL的基础知识后,我们开始进行实验设计。

我们选择了一个简单的数字电路,如4位加法器,来进行实验验证。

首先,我们通过VHDL语言描述了加法器的功能和结构,包括输入端口、输出端口和中间信号。

然后,我们使用仿真工具进行了功能仿真,验证了加法器的正确性。

接着,我们使用综合工具将VHDL代码综合成门级电路,并进行了时序仿真和时序优化,验证了加法器的时序正确性和性能。

三、实验结果通过实验,我们成功地实现了4位加法器的功能,并验证了其正确性和性能。

在功能仿真中,我们输入了不同的测试数据,观察了输出结果,发现加法器能够正确地进行加法运算,并得到了正确的结果。

在时序仿真中,我们观察了电路的时序行为,包括输入信号的变化、输出信号的响应和中间信号的传播延迟等,发现加法器能够在时序上满足要求,并且具有较好的性能。

vhdl设计实验报告

vhdl设计实验报告

vhdl设计实验报告VHDL设计实验报告引言VHDL(Very High Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,广泛应用于数字电路设计和验证。

本实验旨在通过设计一个简单的电路来熟悉VHDL语言的基本语法和设计流程。

一、实验背景数字电路是现代电子系统的基础,而VHDL则是描述和设计数字电路的重要工具。

VHDL可以帮助工程师们以一种形式化的语言来描述电路的功能和结构,从而实现电路的模拟和验证。

二、实验目的本实验的目的是通过使用VHDL语言设计一个简单的电路,加深对VHDL语言的理解,并掌握基本的电路设计流程。

三、实验步骤1. 确定电路功能在设计电路之前,首先需要明确电路的功能。

本实验中,我们选择设计一个4位加法器电路。

2. 设计电路结构根据电路功能的要求,设计电路的结构。

在本实验中,我们需要设计一个4位加法器,因此需要使用4个输入端口和一个输出端口。

3. 编写VHDL代码使用VHDL语言编写电路的描述代码。

在代码中,需要定义输入和输出端口的类型和位宽,并实现电路的功能。

4. 进行仿真使用仿真工具对设计的电路进行仿真,以验证电路的功能是否符合预期。

通过输入不同的测试数据,观察输出是否正确。

5. 下载到FPGA开发板将设计好的电路代码下载到FPGA开发板上进行验证。

通过连接输入信号和观察输出信号,验证电路在实际硬件上的运行情况。

四、实验结果与分析经过仿真和实际验证,我们设计的4位加法器电路在功能上符合预期。

输入不同的数据进行加法运算时,输出结果都正确。

五、实验总结通过本次实验,我们深入了解了VHDL语言的基本语法和设计流程。

通过设计一个简单的电路,我们掌握了VHDL的应用方法,并通过仿真和实际验证,加深了对电路设计的理解。

六、实验心得本实验让我对VHDL语言有了更深入的认识。

通过实际操作,我更加熟悉了VHDL的编写和仿真流程。

编程实验报告实验环境环境

编程实验报告实验环境环境

编程实验报告实验环境环境编程实验报告:实验环境环境摘要:本实验报告旨在介绍编程实验的实验环境环境,包括硬件环境、软件环境以及其他必要的工具和资源。

通过详细描述实验环境,读者可以更好地理解实验的进行过程,并且为实验结果的验证提供参考依据。

1. 硬件环境实验所需的硬件环境主要包括计算机设备和相关的外围设备。

在本实验中,我们使用了一台配备有Intel Core i7处理器、16GB内存和512GB固态硬盘的台式电脑。

此外,还连接了一台打印机、一个显示器和一个键盘鼠标套装。

这些硬件设备的性能和稳定性对于实验的进行具有重要的作用。

2. 软件环境在软件环境方面,我们选择了Ubuntu 20.04操作系统作为实验的基本环境。

此外,我们还安装了Python 3.8编程语言和相关的开发工具包,用于实验中的编程任务。

另外,为了支持实验数据的处理和分析,我们还安装了Jupyter Notebook、Matplotlib和Pandas等数据分析工具。

这些软件环境的选择和配置对于实验的顺利进行至关重要。

3. 其他工具和资源除了硬件和软件环境之外,实验还需要其他的工具和资源来支持实验的进行。

在本实验中,我们使用了Github作为代码版本管理工具,并且将实验的代码和文档进行了版本控制。

此外,我们还利用了一些开源的数据集和算法库,用于实验数据的获取和处理。

这些工具和资源的使用为实验的可重复性和可验证性提供了保障。

总结:实验环境环境是编程实验中至关重要的一部分,它直接影响着实验的进行和结果的验证。

通过本实验报告对实验环境的详细描述,读者可以更好地理解实验的进行过程,并且为实验结果的验证提供参考依据。

希望本报告能够对读者在编程实验中的实验环境配置提供一定的参考和帮助。

verilog实验报告

verilog实验报告

verilog实验报告Verilog实验报告引言:Verilog是一种硬件描述语言(HDL),用于设计和模拟数字电路。

它是一种高级语言,能够描述电路的行为和结构,方便工程师进行数字电路设计和验证。

本实验报告将介绍我在学习Verilog过程中进行的实验内容和所获得的结果。

实验一:基本门电路设计在这个实验中,我使用Verilog设计了基本的逻辑门电路,包括与门、或门和非门。

通过使用Verilog的模块化设计,我能够轻松地创建和组合这些门电路,以实现更复杂的功能。

我首先创建了一个与门电路的模块,定义了输入和输出端口,并使用逻辑运算符和条件语句实现了与门的功能。

然后,我创建了一个测试模块,用于验证与门的正确性。

通过输入不同的组合,我能够验证与门的输出是否符合预期。

接下来,我按照同样的方法设计了或门和非门电路,并进行了相应的测试。

通过这个实验,我不仅学会了使用Verilog进行基本门电路的设计,还加深了对逻辑电路的理解。

实验二:时序电路设计在这个实验中,我学习了如何使用Verilog设计时序电路,例如寄存器和计数器。

时序电路是一种具有状态和时钟输入的电路,能够根据时钟信号的变化来改变其输出。

我首先设计了一个简单的寄存器模块,使用触发器和组合逻辑电路实现了数据的存储和传输功能。

然后,我创建了一个测试模块,用于验证寄存器的正确性。

通过输入不同的数据和时钟信号,我能够观察到寄存器的输出是否正确。

接下来,我设计了一个计数器模块,使用寄存器和加法电路实现了计数功能。

我还添加了一个复位输入,用于将计数器的值重置为初始状态。

通过测试模块,我能够验证计数器在不同的时钟周期内是否正确地进行计数。

通过这个实验,我不仅学会了使用Verilog设计时序电路,还加深了对触发器、寄存器和计数器的理解。

实验三:组合电路设计在这个实验中,我学习了如何使用Verilog设计组合电路,例如多路选择器和加法器。

组合电路是一种没有状态和时钟输入的电路,其输出只取决于当前的输入。

硬件描述语言实验报告——四位加法器

硬件描述语言实验报告——四位加法器

硬件描述语言实验报告——四位加法器实验目的和要求:本次实验的目的是实现四位加法器的硬件描述语言,加深对数字电路的理解和PWM设计的学习。

要求在Vivado环境下实现对四位加法器的设计,能够正确地实现两个四位二进制数之间的加法操作,同时需要能够通过外接开关控制输入的数字。

实验准备工作:在进行本次实验前,首先需要对数字电路、FPGA开发板和Vivado环境有一定的了解:数字电路:是指由一些二进制电子、电气或电子元件通过布线连接而成的电路,可以根据输入信号的不同输出不同的电信号。

(如AND门、OR门、NOT门、NAND门等)FPGA开发板:是一种可编程逻辑器件,可以在硬件级别上实现数字电路。

通过FPGA 开发板,我们可以将数字电路的设计和实现转化为程序设计和实现,有效地降低了数字电路的设计和实现的复杂度。

Vivado环境:是一种FPGA编程工具,可以进行FPGA设计、仿真、实现和验证。

通过Vivado环境,我们可以实现对数字电路的开发和调试。

实验步骤:根据本次实验的要求,在Vivado环境下完成了对四位加法器的硬件描述语言编写与实现。

在实验过程中,我们需要进行以下步骤:1.创建新的工程并添加源文件在Vivado环境下,首先需要创建一个新的工程。

在创建工程的过程中,需要设定工程的名称、类型、硬件平台和绑定一个新的目录。

创建完工程后,我们需要将本次实验所需要的源文件添加到新创建的工程中。

这些文件包括:•top.v:顶层模块文件,将各个模块串联在一起。

•add.v:加法器模块,用于实现四位加法器的加法运算。

•switch.v:开关模块,用于控制输入数字。

2.对各模块进行修改和调试完成对源文件的添加后,我们便可以对各个模块进行修改和调试,以确保能够正确地实现四位加法器的加法运算。

在进行修改和调试时,我们需要根据所学的数字电路知识,利用逻辑门、时钟、寄存器等基本单元,将四位加法器进行分解,逐一实现每一部分的设计:•开关模块的设计:开关模块是本次实验中的输入模块,负责输入两个四位数。

VHDL硬件描述语言实验报告

VHDL硬件描述语言实验报告

硬件描述语言实验附录姓名:xxx学号:xxx指导教师:xxx目录硬件描述语言实验附录 (1)实验1.三输入与门电路实验 (2)实验2. 三—八译码器实验 (3)实验3. D触发器实验 (4)实验4. 分频器实验 (5)实验5. 状态机实验 (8)实验1.三输入与门电路实验--三输入与门电路threeinput--姓名:王定--学号:1306034248--中北大学LIBRARY IEEE; --调用库USE IEEE.STD_LOGIC_1164.ALL;--库文件--------------------------------------------------------------ENTITY threeinput IS --定义实体名,其名称必须与VHDL文本文件名称相同PORT( A: IN STD_LOGIC; --输入端口,时钟输入B: IN STD_LOGIC; --输入端口,个位写入使能C: IN STD_LOGIC; --输入端口,十位写入使能CO: OUT STD_LOGIC); --输出端口,溢出标志END ENTITY threeinput; --结束端口定义--------------------------------------------------------------ARCHITECTURE RTL OF threeinput IS--定义结构体BEGINPROCESS(A,B,C) IS --开始,必须带上BEGINCO<=A AND B AND C ;END PROCESS;END ARCHITECTURE RTL; --结束结构体表1. 三输入与门电路VHDL实验代码图1. 三输入与门电路仿真波形图,A,B,C输入,CO输出实验2. 三—八译码器实验--王定--2015年11月25日--3线-8线译码器LIBRARYIEEE; --调用库USEIEEE.STD_LOGIC_1164.ALL; --库文件-------------------------------------------------------------ENTITYthreetoeightISPORT(DA TAIN:INSTD_LOGIC_VECTOR(2DOWNTO0);--数据输入DA TAOUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));--数据输出ENDENTITYthreetoeight; --结束实体-------------------------------------------------------------ARCHITECTUREBEHA VEOFthreetoeightIS--结构体BEGIN --不能漏掉PROCESS(DATAIN) --数据输入BEGIN --开始,不能漏掉CASEDATAINIS --情况判定WHEN"000"=>DA TAOUT<="00000001";WHEN"001"=>DA TAOUT<="00000010";WHEN"010"=>DA TAOUT<="00000100";WHEN"011"=>DATAOUT<="00001000";WHEN"100"=>DA TAOUT<="00010000";WHEN"101"=>DA TAOUT<="00100000";WHEN"110"=>DATAOUT<="01000000";WHEN"111"=>DA TAOUT<="10000000";WHENOTHERS=>null;ENDCASE;ENDPROCESS;ENDBEHA VE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decoder_3_to_8 ISPORT (a,b,c,g1,g2a,g2b:IN STD_LOGIC;y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END decoder_3_to_8;ARCHITECTURE rtl OF decoder_3_to_8 ISSIGNAL indata:STD_LOGIC_VECTOR (2 DOWNTO 0);BEGINindata <= c & b & a;PROCESS (indata,g1,g2a,g2b)BEGINIF (g1 = '1' AND g2a = '0' AND g2b = '0' ) THENCASE indata ISWHEN "000" => y <= "11111110";WHEN "001" => y <= "11111101";WHEN "010" => y <= "11111011";WHEN "011" => y <= "11110111";WHEN "100" => y <= "11101111";WHEN "101" => y <= "11011111";WHEN "110" => y <= "10111111";WHEN "111" => y <= "01111111";WHEN OTHERS=>y<= "XXXXXXXX";END CASE;ELSEY <= "11111111";END IF;END PROCESS;END rtl;表2. 三—八译码器VHDL实验代码图2. 三—八译码器仿真波形图--异步复位/置位的D触发器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dff3 ISPORT(clk,d,clr,pset:IN STD_LOGIC;q : OUT STD_LOGIC);END dff3;ARCHITECTURE rtl OF dff3 ISBEGINPROCESS (clk,pset,clr)BEGINIF (pset='0') THENq<='1';ELSIF (clr='0') THENq<='0';ELSIF (clk'EVENT AND clk='1') THENq<=d;END IF;END PROCESS ;END rtl; --同步复位的D触发器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY dff4 ISPORT(clk,d,clr:IN STD_LOGIC;q : OUT STD_LOGIC );END dff4;ARCHITECTURE rtl OF dff4 ISBEGINPROCESS (clk)BEGINIF (clk'EVENT AND clk='1') THENIF (clr='0') THENq<='0';ELSEq<=d;END IF;END IF;END PROCESS ;END rtl;表3. 异步和同步D触发器VHDL实验代码图3. 异步触发器仿真波形图图4. 同步触发器仿真波形图--四分频器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;----------------------------------------------ENTITY clk_div ISPORT(clk: IN STD_LOGIC;--时钟输入clk_div2: OUT STD_LOGIC;clk_div4: OUT STD_LOGIC;clk_div8: OUT STD_LOGIC;clk_div16: OUT STD_LOGIC);END ENTITY clk_div;---------------------------------------------------ARCHITECTURE rtl OF clk_div ISSIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0);--定义一个四位的信号BEGINPROCESS(clk)BEGINIF(clk' event AND clk ='1') THEN--上升沿到来IF (count="1111") THEN--达到最大计数值count<="0000"; --置零ELSEcount<=count+1; --计数END IF;END IF;END PROCESS;clk_div2<=count(0); --2分频clk_div4<=count(1); --4分频clk_div8<=count(2); --8分频clk_div16<=count(3); --16分频END rtl;表4. 四分频器VHDL实验代码图5. 四分频器仿真波形图TMP1<= '0'; --置0,带入语句滞后ELSETMP1<= '1'; --置1END IF;END IF;END IF;END PROCESS;---------------------------------------------PROCESS(CLKIN,RST)BEGINIF RST ='1'THEN --复位有效COUNT2 <= "00000000"; --立即清零TMP2<= '1';ELSIF CLKIN'EVENT AND CLKIN='0' THEN --下降沿到来IF COUNT2 = "00000100" THEN --100==4(5个数据)COUNT2 <= "00000000";ELSECOUNT2 <= COUNT2 + 1;IF COUNT2 < "00000010" THEN --10==2(三个下降沿),小于三个上升沿时,始终置0,三个下降沿对应6分频TMP2<= '1';ELSETMP2<= '0';END IF;END IF;END IF;END PROCESS;END RTL;--信号是等待整个进程结束完后,再赋值图6. 五分频器仿真波形图实验5. 状态机实验ST <= S3; END IF; OP <= '1'; WHEN S3=> IF X = '0' THEN ST <= S3; ELSE ST <= S0; END IF; OP <= '0'; END CASE; END IF; END PROCESS STATE_COMP;END ARCHITECTURE A;END IF; END CASE; END IF;END PROCESS state_comp; END a;表6. moore 与mealy 状态机VHDL 实验代码图7. moore 型状态机VHDL 实验代码图8. mealy 型状态机仿真波形图。

CPLD实验报告

CPLD实验报告

实验一 Xilinx软件及状态机设计一实验目的:学习FPGA设计软件, 掌握软件流程, 掌握状态机编程。

二实验内容:设计一个状态机三实验说明:状态机设计是数字电路中使用非常广泛和方便的时序设计工具。

由于硬件是并行的触发, 相对软件是串行执行, 那么让硬件电路按照节拍执行串行操作指令就成为一个问题, 这就是状态机的主要功能。

相应的, 软件指令中的几十条简单顺序执行代码可能需要硬件的几十上百个触发器去实现其功能。

所以, 软件与硬件的设计思路有相当大的区别。

当然, 随着FPGA规模的不断扩大, 这些问题也越来越容易解决了。

我们可以用软件的思路去描述自己的设计, 可能最终实现的电路是几十万门级的器件, 但是你只要花费几美元就能买到。

状态机是数字电路的基础, 因此, VHDL的学习也从这个实验开始。

四实验过程:1.在进行实验之前, 我先自学了VHDL语言。

2.熟悉Xilinx软件环境。

3.通过仿真, 读懂了states这段代码所实现的功能及其出现的问题。

五思考题:1.通过仿真, 这段代码实现相应功能时出了什么问题?请修正代码。

答:这段程序完成的是对红绿灯的控制功能。

通过仿真发现所有的灯都比预期的多亮了2秒, 比如东西方向绿灯亮62秒(应该是60秒), 黄灯是5秒(应该是3秒)。

出现此问题的原因是没有考虑到硬件的延时问题。

所以只要把程序中的59改为57, 39改为37, 3改为1, 再进行仿真, 结果就正确了。

2.状态机输出分成同步输出和异步输出, 状态机异步输出直接用状态机的某个状态进行组合逻辑运算来得到一个输出, 同步输出是在该状态的时钟上跳沿控制输出变化。

请问同步输出和异步输出利弊各在哪里?答: 同步输出的优点是: 时钟脉冲的间距解决了组合逻辑电路中的延时和竞争问题。

只要时钟脉冲的宽度合适, 输出就不会存在竞争与现象。

缺点是: 外部输入信号的变化应满足触发器正常工作所需的建立和保持时间。

因为上述特点使得同步时序输出的工作速度的提高受到限制, 且对时钟脉冲到达个触发器的时间及外部信号的变化有较严格的要求。

FPGA一位全加器设计实验报告

FPGA一位全加器设计实验报告

FPGA一位全加器设计实验报告
本实验的目的是学习使用FPGA设计一个全加器,通过实践掌握FPGA硬件描述语言和数字电路设计的一些基础知识和技能。

一、实验背景
数字逻辑电路是计算机硬件的基础,而硬件描述语言是数字电路设计的重要手段。

FPGA是可编程逻辑器件,它可以根据用户的需求进行编程,实现不同的数电逻辑电路。

全加器是组成加法器的重要单元,也是我们学习数字逻辑的重要基础。

二、实验设计
本实验我们将采用Verilog硬件描述语言来设计一个全加器。

代码如下:
module full_add(
input A,B,Cin,
output S,Cout
);
wire w1,w2,w3;
xor(S,w1,A^B);//A异或B
xor(Cout,w2,A&Cin);//A与Cin之后异或
xor(w3,B&Cin,A&Cin);//B与Cin之后异或
xor(Cout,Cout,w3);//再次异或
endmodule
三、测试结果
我们使用Quartus II软件进行仿真和综合。

通过对代码的仿真和波形分析,我们发现该全加器符合设计要求,并且可以正确地输出结果。

四、实验总结
本实验我们学习了FPGA硬件描述语言,掌握了数字电路设计的一些基础知识和技能。

通过设计全加器,我们更深入地理解了数字逻辑电路的原理和应用。

希望在今后的学习中,能够继续深入研究数字电路的知识,为我们掌握计算机硬件设计打下坚实的基础。

硬件描述语言7

硬件描述语言7

硬件描述语言实验七:编码器实验
1、实验目的:进一步练习VHDL语言组合逻辑的描述方法。

2、实验环境:PC个人计算机、Windows XP操作系统、Quartus II集成开发环境软件。

3、实验要求:设计一个具有无有效输入标志和非法输入标志输出的8-3编码器,实体名称为“encode_8_3”,其引脚名称和逻辑功能如下表所示。

4、实验步骤:①建立工程、②编辑代码、③编译及修改错误、④建立仿真波形并仿真、⑤根据仿真结果分析设计是否正确。

实验报告要求:实验报告头部写明实验题目、实验人姓名、实验人学号,实验地点、实验时间等。

实验报告正文写明实验名称、实验目的、实验环境、设计要求、实验步骤、实验结果及分析。

硬件综合设计实验报告

硬件综合设计实验报告

一、实验目的1. 理解和掌握数字电路设计的基本原理和方法。

2. 学会使用FPGA(现场可编程门阵列)进行硬件设计。

3. 提高实际动手能力和问题解决能力。

4. 熟悉硬件描述语言(HDL)VHDL或Verilog的使用。

二、实验环境1. 开发平台:Xilinx Vivado 2022.22. 硬件设备:Xilinx Zynq-7000 SoC 开发板3. 软件工具:VHDL/Verilog 编辑器、仿真工具ModelSim、FPGA 编译器三、实验内容本次实验以设计一个简单的数字信号处理系统为例,包括以下模块:1. 数据输入模块2. 数据处理模块3. 数据输出模块四、实验步骤1. 需求分析根据实验要求,设计一个能够对输入数据进行简单处理的数字信号处理系统。

具体要求如下:- 输入数据为8位二进制数。

- 处理模块为简单的加法运算。

- 输出数据为处理后的结果。

2. 模块设计根据需求分析,将系统分为三个模块:- 数据输入模块:负责读取输入数据。

- 数据处理模块:负责执行加法运算。

- 数据输出模块:负责输出处理后的数据。

3. 代码编写使用VHDL或Verilog语言编写各模块代码。

```verilog// 数据输入模块module data_input(input clk, // 时钟信号input reset, // 复位信号output reg [7:0] data_in // 输入数据);always @(posedge clk or posedge reset) begin if (reset) begindata_in <= 8'b0;end else begin// 读取输入数据,此处省略具体实现endendendmodule// 数据处理模块module data_process(input [7:0] data_in, // 输入数据output reg [7:0] data_out // 输出数据);always @(data_in) begindata_out = data_in + 8'b1; // 简单的加法运算 endendmodule// 数据输出模块module data_output(input clk,input reset,input [7:0] data_out,output reg [7:0] data_display // 显示输出数据);always @(posedge clk or posedge reset) beginif (reset) begindata_display <= 8'b0;end else begindata_display <= data_out;endendendmodule```4. 仿真验证使用ModelSim进行仿真,验证各模块功能。

电子设计自动化(EDA)_数字时钟程序模块(LED数码管显示)_实验报告

电子设计自动化(EDA)_数字时钟程序模块(LED数码管显示)_实验报告

电子设计自动化(EDA)—数字时钟LED数码管显示二、实验内容和实验目的1. 6个数码管动态扫描显示驱动2. 按键模式选择(时\分\秒)与闹钟(时\分)调整控制,3. 用硬件描述语言(或混合原理图)设计时、分、秒计数器模块、闹钟模块、按键控制状态机模块、动态扫描显示驱动模块、顶层模块。

要求使用实验箱左下角的6个动态数码管(DS6 A~DS1A)显示时、分、秒;要求模式按键和调整按键信号都取自经过防抖处理后的按键跳线插孔。

实验目的: 1)学会看硬件原理图, 2)掌握FPGA硬件开发的基本技能3)培养EDA综合分析、综合设计的能力三、实验步骤、实现方法(或设计思想)及实验结果主要设备: 1)PC机, 2)硬件实验箱, 3)Quartus II软件开发平台。

1.打开Quartus II , 连接实验箱上的相关硬件资源, 如下图1所示。

2.建立新文件, 选择文本类型或原理图类型。

3. 编写程序。

4.编译5. 仿真, 加载程序到芯片, 观察硬件输出结果(数码管显示)6.结果正确则完成。

若结果不正确, 则修改程序, 再编译, 直到正确。

模24计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY count24 ISPORT(clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END count24;ARCHITECTURE arc OF count24 ISSIGNAL a,b:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk,en)BEGINhh<=a;hl<=b;IF(clk'EVENT AND clk='1') THENIF(en='1') THENIF(a="0010" AND b="0011") THENa<="0000";b<="0000";ELSE IF(b="1001") THENa<=a+'1';b<="0000";ELSE b<=b+'1';END IF;END IF;IF(a="0010" AND b="0010") THENcout<='1';ELSE cout<='0';END IF;END IF;END IF;END PROCESS;END arc;模60计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY count60 ISPORT(clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END count60;ARCHITECTURE arc OF count60 ISSIGNAL a,b:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL sout:STD_LOGIC;BEGINPROCESS(clk)BEGINhh<=a; hl<=b;IF(clk'EVENT AND clk='1') THENIF(en='1') THENIF(a="0101" AND b="1001") THENa<="0000";b<="0000";ELSE IF(b="1001") THENa<=a+'1';b<="0000";ELSE b<=b+'1';END IF;END IF;END IF;END IF;END PROCESS;sout<='1' WHEN a="0101" AND b="1001" ELSE '0';cout<=sout AND en;END arc;4-7显示译码模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY segment4to7 ISPORT(s:IN STD_LOGIC_VECTOR(3 DOWNTO 0);a,b,c,d,e,f,g:OUT STD_LOGIC);END segment4to7;ARCHITECTURE arc OF segment4to7 IS SIGNAL y:STD_LOGIC_VECTOR(6 DOWNTO 0); BEGINa<= y(6);b<= y(5);c<= y(4);d<= y(3);e<= y(2); f<= y(1);g<= y(0);PROCESS(s)BEGINCASE s ISWHEN "0000"=>y<="1111110"; WHEN "0001"=>y<="0110000"; WHEN "0010"=>y<="1101101"; WHEN "0011"=>y<="1111001"; WHEN "0100"=>y<="0110011"; WHEN "0101"=>y<="1011011"; WHEN "0110"=>y<="1011111"; WHEN "0111"=>y<="1110000"; WHEN "1000"=>y<="1111111"; WHEN "1001"=>y<="1111011"; WHEN OTHERS=>y<="0000000"; END CASE;END PROCESS;END arc;带闹钟控制模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mode_adjust_with_alarm ISPORT (adjust,mode,clk1hz: IN STD_LOGIC;clkh,enh,clkm,enm,clks,enha: OUT STD_LOGIC;clkh_a,clkm_a:OUT STD_LOGIC;mode_ss: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END mode_adjust_with_alarm;ARCHITECTURE arc OF mode_adjust_with_alarm ISTYPE mystate IS (s0,s1,s2,s3,s4,s5);SIGNAL c_state,next_state: mystate;BEGINPROCESS (c_state)BEGINCASE c_state ISWHEN s0=> next_state <= s1; clkh<=clk1hz; clkm<=clk1hz; clks<=clk1hz;enh<='0'; enm<='0'; enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="000";WHEN s1=> next_state <= s2; clkh<=adjust; clkm<= '0'; clks<='0';enh<='1'; enm<='0';enha<='0'; clkh_a<= '0';clkm_a<= '0'; mode_ss <="001";WHEN s2=> next_state <= s3; clkh<= '0'; clkm<=adjust; clks <= '0';enh<='0';enm<='1';enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="010";WHEN s3=> next_state <= s4; clkh<= '0'; clkm<= '0'; clks<=adjust;enh<='0'; enm<='0';enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="011";WHEN s4=> next_state <= s5; clkh<= clk1hz; clkm<= clk1hz; clks<=clk1hz;enh<='0';enm<='0';enha<='1'; clkh_a<=adjust; clkm_a<= '0'; mode_ss <="100";WHEN s5=> next_state <= s0; clkh<= clk1hz; clkm<= clk1hz; clks<=clk1hz;enh<='0'; enm<='0'; enha<='0'; clkh_a<= '0'; clkm_a<=adjust; mode_ss <="101";END CASE;END PROCESS;PROCESS (mode)BEGINIF (mode'EVENT AND mode='1') THENc_state<=next_state ;END IF;END PROCESS;END arc;扫描模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY scan ISPORT(clk256hz:IN STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END scan;ARCHITECTURE arc OF scan ISTYPE mystate IS (s0, s1,s2,s3,s4,s5);SIGNAL c_state,next_state: mystate;BEGINPROCESS ( c_state )BEGINCASE c_state ISWHEN s0=> next_state <=s1; ss<="010";WHEN s1=> next_state <=s2; ss<="011";WHEN s2=> next_state <=s3; ss<="100";WHEN s3=> next_state <=s4; ss<="101";WHEN s4=> next_state <=s5; ss<="110";WHEN s5=> next_state <=s0; ss<="111";END CASE;END PROCESS;PROCESS (clk256hz)BEGINIF (clk256hz'EVENT AND clk256hz='1') THENc_state<=next_state ;END IF;END PROCESS;END arc;复用模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux ISPORT(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);alarm:OUT STD_LOGIC);END mux;ARCHITECTURE arc OF mux ISSIGNAL a,hhtmp,hltmp,mhtmp,mltmp,shtmp,sltmp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(mode_ss)BEGINCASE mode_ss ISWHEN "000"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "001"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "010"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "011"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "100"=> hhtmp<=hha; hltmp<=hla; mhtmp<=mha; mltmp<=mla; shtmp<=sh; sltmp<=sl;WHEN "101"=> hhtmp<=hha; hltmp<=hla; mhtmp<=mha; mltmp<=mla; shtmp<=sh; sltmp<=sl;WHEN OTHERS=>hhtmp<="0000";hltmp<="0000";mhtmp<="0000";mltmp<="0000";shtmp<="0000";sltmp<="0000"; END CASE;END PROCESS;PROCESS(ss)BEGINCASE ss ISWHEN "010"=> a <=hhtmp;WHEN "011"=> a <=hltmp;WHEN "100"=> a <=mhtmp;WHEN "101"=> a <=mltmp;WHEN "110"=> a <=shtmp;WHEN "111"=> a <=sltmp;WHEN OTHERS => a <="0000";END CASE;y<=a;END PROCESS;alarm<='1' WHEN ((hh=hha)AND(hl=hla)AND(mh=mha)AND(ml=mla)) ELSE '0';END arc;闪烁模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY blink_control ISPORT(ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);blink_en:OUT STD_LOGIC);END blink_control;ARCHITECTURE arc OF blink_control ISBEGINPROCESS (ss,mode_ss)BEGINIF(ss="010" AND mode_ss="001") THEN blink_en<='1';ELSIF(ss="011" AND mode_ss="001") THEN blink_en<='1';ELSIF(ss="100" AND mode_ss="010") THEN blink_en<='1';ELSIF(ss="101" AND mode_ss="010") THEN blink_en<='1';ELSIF(ss="110" AND mode_ss="011") THEN blink_en<='1';ELSIF(ss="111" AND mode_ss="011") THEN blink_en<='1';ELSIF(ss="010" AND mode_ss="100") THEN blink_en<='1';ELSIF(ss="011" AND mode_ss="100") THEN blink_en<='1';ELSIF(ss="100" AND mode_ss="101") THEN blink_en<='1';ELSIF(ss="101" AND mode_ss="101") THEN blink_en<='1';ELSE blink_en<='0';END IF;END PROCESS;END arc;Top文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY design3 ISPORT (mode,adjust,clk1hz,clk2hz,clk256hz,clk1khz:IN STD_LOGIC;alarm,a,b,c,d,e,f,g:OUT STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END design3;ARCHITECTURE arc OF design3 ISCOMPONENT mode_adjust_with_alarm PORT (adjust,mode,clk1hz: IN STD_LOGIC;clkh,enh,clkm,enm,clks,enha: OUT STD_LOGIC;clkh_a,clkm_a:OUT STD_LOGIC;mode_ss: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;COMPONENT scan PORT (clk256hz:IN STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;COMPONENT segment4to7 PORT (s: IN STD_LOGIC_VECTOR(3 DOWNTO 0);a,b,c,d,e,f,g: OUT STD_LOGIC);END COMPONENT;COMPONENT mux PORT(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);alarm:OUT STD_LOGIC);END COMPONENT;COMPONENT blink_control PORT(ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);blink_en:OUT STD_LOGIC);END COMPONENT;COMPONENT count24 PORT (clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;COMPONENT count60 PORT (clk ,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;SIGNALclkh,enh,clkm,enm,clks,clkh_a,clkm_a,coutm,couts,coutm_en,couts_en,cout,vcc,coutma_en,coutma,alarm1,bli nk_en,blink_tmp,enha: STD_LOGIC;SIGNAL mode_ss,ss1:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL hh,hl,mh,ml,sh,sl,hha,hla,mha,mla,y,i:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINvcc<='1';coutm_en <= enh OR coutm;couts_en <= enm OR couts;coutma_en<= enha OR coutma;blink_tmp<=blink_en and clk2hz;i(3)<=y(3) OR blink_tmp;i(2)<=y(2) OR blink_tmp;i(1)<=y(1) OR blink_tmp;i(0)<=y(0) OR blink_tmp;ss<=ss1;alarm<=alarm1 AND clk1khz;u1:mode_adjust_with_alarmPORT MAP( adjust,mode,clk1hz,clkh,enh,clkm,enm,clks,enha,clkh_a,clkm_a,mode_ss);u2:count24 PORT MAP(clkh,coutm_en,cout,hh,hl);u3:count60 PORT MAP(clkm,couts_en,coutm,mh,ml);u4:count60 PORT MAP(clks,vcc,couts,sh,sl);u5:count24 PORT MAP(clkh_a,coutma_en,cout,hha,hla);u6:count60 PORT MAP(clkm_a,vcc,coutma,mha,mla);u7:mux PORT MAP(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla,ss1,mode_ss,y,alarm1);u8:scan PORT MAP(clk256hz,ss1);u9:blink_control PORT MAP(ss1,mode_ss,blink_en);u10:segment4to7 PORT MAP(i,a,b,c,d,e,f,g);END arc;实验结果:数字钟包括正常的时分秒计时, 实验箱左下角的6个动态数码管(DS6 A~DS1A)显示时、分、秒。

实验报告

实验报告

微电子课程设计实验报告一、设计要求应用VHDL或Verilog硬件描述语言进行设计,在ISE5.2开发工具上选择Xinlix 公司的FPGA芯片完成整个电路的设计工作,包括文件输入、编译、功能仿真、综合、时序仿真和下载实现等。

3道题必须在实验箱上进行下载后验证。

二、设计报告内容要求要有实验题目、设计思路、设计流程、硬件描述语言代码、电路图、时序仿真图和结果分析等。

用专用的报告纸手写报告,正文页必须在10页以上,仿真图打印出来粘贴在报告上,编程代码写在附页上。

若有报告雷同,报告成绩为零分。

三、设计实验内容1、某晚会用红绿黄3组彩灯采光,3组灯亮的顺序是:红灯亮—绿灯亮—黄灯亮—红绿灯亮—绿黄灯亮—黄红灯亮—全亮—全暗。

重复以上过程,试设计这三组灯的控制电路。

输入时钟频率为512Hz,灯亮的时间在1—4秒之间,可以自由控制。

电路中以“1”代表灯亮,以“0”代表灯灭。

2、奇偶校验器系统的功能是对八位二进制数据及其奇偶校验位的输入进行校验,输出正确的奇、偶校验位。

ODD_IN与EVEN_IN是控制奇校验和偶校验功能输入,IN0到IN7是七位数据及一位校验位数据输入,IN_READY表示输入数据已经准备好,可以处理,当OUT_REQ输入表示要求输出数据,CLK端口用于接收时钟信号,支持系统的时钟上升沿同步。

当输出端口OUT_READY输出信号有效时,表示输出数据已经准备好,可以为下级电路使用,ODD_OUT与EVEN_OUT 用来输出正确的奇偶校验位。

上述控制端口均为高电平有效。

3、设计一个交通灯管理系统。

其功能如下:(1)公路上无车时,主干道绿灯亮,公路红灯亮(2)公路上有车时,传感器输出C=1,且主干道通车时间超过最短时间主干道交通灯由绿→黄→红,公路交通灯由红→绿;(3)公路上无车,或有车且公路通车时间超过最长时间,则主干道交通灯由红→绿,公路交通灯由绿→→红;(4)假设公路绿灯亮的最长时间等于主干道绿灯亮的最短时间,都为16秒,若计时到E=1;黄灯亮的时间设为4秒,若计时到F=1。

cpu设计实验报告

cpu设计实验报告

cpu设计实验报告CPU设计实验报告摘要:本实验旨在设计一个基本的中央处理器(CPU),并通过实验验证其性能和功能。

在设计过程中,我们使用了Verilog硬件描述语言和ModelSim仿真工具。

通过对CPU的设计和仿真实验,我们验证了CPU的正确性和性能,并对其进行了性能分析和优化。

1. 引言CPU是计算机系统中最核心的部件之一,它负责执行计算机指令和控制数据流动。

因此,设计一个高效、稳定的CPU对于计算机系统的性能至关重要。

本实验旨在通过Verilog硬件描述语言和ModelSim仿真工具,设计一个基本的CPU,并验证其性能和功能。

2. 设计过程我们首先对CPU的功能和性能进行了分析和规划,确定了CPU的基本架构和指令集。

然后,我们使用Verilog语言编写了CPU的硬件描述,并通过ModelSim进行了仿真验证。

在设计过程中,我们重点关注了CPU的时序逻辑、数据通路和控制逻辑,确保CPU能够正确地执行指令并保持稳定的性能。

3. 实验结果通过对CPU的设计和仿真实验,我们验证了CPU的正确性和性能。

我们使用了一系列的测试用例对CPU进行了功能和性能测试,并对其进行了性能分析和优化。

实验结果表明,我们设计的CPU能够正确地执行各种指令,并在性能上达到了预期的目标。

4. 总结和展望本实验通过Verilog硬件描述语言和ModelSim仿真工具,设计并验证了一个基本的CPU。

通过实验,我们对CPU的设计和性能有了更深入的了解,并对其进行了性能分析和优化。

未来,我们将进一步完善CPU的设计,提高其性能和功能,以满足计算机系统的需求。

综上所述,本实验为我们提供了一个宝贵的机会,通过实际设计和验证,深入了解了CPU的工作原理和性能特点,为我们今后的学习和研究打下了坚实的基础。

希望通过不懈的努力,我们能够设计出更加高效、稳定的CPU,为计算机系统的发展做出更大的贡献。

vhdl全加器实验报告

vhdl全加器实验报告

vhdl全加器实验报告VHDL全加器实验报告引言:在数字电路设计领域,全加器是一种基本的逻辑电路。

它用于将两个二进制数相加,并产生相应的和与进位输出。

在本次实验中,我们将使用VHDL语言设计和模拟一个全加器电路,并通过实验验证其功能和正确性。

一、实验目的本实验的目的是通过设计和模拟一个VHDL全加器电路,加深对数字电路和VHDL语言的理解。

具体目标如下:1. 学习并掌握全加器的原理和电路结构;2. 掌握VHDL语言的基本语法和使用方法;3. 设计和模拟一个全加器电路,并验证其正确性;4. 分析和评估全加器电路的性能和优化方法。

二、全加器的原理和电路结构全加器是一种用于二进制加法的逻辑电路。

它接受两个输入位和一个进位输入位,并产生一个和输出位和一个进位输出位。

全加器的电路结构通常由两个半加器和一个或门组成。

半加器用于计算两个输入位的和,而或门用于计算进位输出位。

三、VHDL语言的基本语法和使用方法VHDL是一种硬件描述语言,用于描述和模拟数字电路。

它具有丰富的语法和功能,可以方便地进行电路设计和仿真。

VHDL语言的基本语法包括实体声明、端口声明、信号声明、过程声明等。

在本次实验中,我们将使用VHDL语言来描述和模拟全加器电路。

四、全加器电路的设计和模拟在本次实验中,我们将使用VHDL语言设计和模拟一个4位全加器电路。

首先,我们需要定义输入和输出信号,并声明全加器的实体和端口。

接下来,我们可以使用VHDL语言描述全加器的逻辑电路,包括半加器和或门的连接关系。

最后,我们可以使用仿真工具对全加器电路进行模拟,并观察输出结果。

五、全加器电路的验证和性能评估在模拟过程中,我们可以通过输入不同的二进制数来验证全加器电路的正确性。

我们可以逐个比较输入和输出的二进制数,并检查和进位输出是否与预期结果一致。

如果全加器电路能够正确地计算和输出结果,则说明设计和模拟过程是正确的。

此外,我们还可以评估全加器电路的性能和优化方法。

verilog课程设计实验报告

verilog课程设计实验报告

verilog课程设计实验报告一、教学目标本课程旨在通过Verilog硬件描述语言的学习,让学生掌握数字电路设计的自动化工具,理解并实践硬件描述语言在数字系统设计中的应用。

通过本课程的学习,学生应达到以下目标:1.知识目标:–理解Verilog的基本语法和结构。

–掌握Verilog中的模块化设计方法。

–学习常用的Verilog描述技巧,包括逻辑门级建模、行为级建模和结构级建模。

2.技能目标:–能够运用Verilog语言进行简单的数字电路设计。

–学会使用至少一种Verilog仿真工具进行电路功能验证。

–能够阅读和理解Verilog代码,进行简单的代码优化。

3.情感态度价值观目标:–培养学生的团队合作意识,在实验报告中能够体现分工合作的精神。

–培养学生的问题解决能力,鼓励学生在遇到问题时积极寻找解决方案。

–培养学生对新技术的好奇心和学习兴趣,激发他们对电子工程领域的热爱。

二、教学内容依据教学目标,本课程的教学内容将围绕Verilog语言的基础知识、实践应用和项目设计展开。

教学大纲安排如下:1.第一部分:Verilog基础知识(2周)–介绍Verilog的背景和基本概念。

–详细讲解Verilog的数据类型、运算符和语句。

2.第二部分:模块化设计(2周)–讲解模块的定义和封装。

–实践模块的端口声明和模块实例化。

3.第三部分:数字电路的Verilog描述(2周)–通过实例教学,掌握逻辑门、触发器等基本组件的Verilog建模。

–学习组合逻辑和时序逻辑的设计方法。

4.第四部分:仿真与测试(1周)–学习使用仿真工具进行电路功能验证。

–理解并实践测试台(testbench)的编写。

5.第五部分:项目设计(3周)–小组合作完成一个较为复杂的数字系统设计项目。

–包括系统模块的划分、编码、仿真和测试。

三、教学方法为了提高学生的学习效果,将采用多种教学方法相结合的方式进行授课:1.讲授法:用于讲解Verilog的基本概念和语法。

熟悉计算机硬件实验报告

熟悉计算机硬件实验报告

熟悉计算机硬件实验报告
计算机硬件实验报告通常涉及对计算机硬件组件的实际操作和
观察。

这些组件可能包括中央处理器(CPU)、内存、硬盘、显卡、
主板等。

在撰写这样的实验报告时,需要包括以下几个方面的内容:
1. 实验目的,明确实验的目的,例如是测试硬件性能、比较不
同硬件的性能差异或者观察硬件工作原理。

2. 实验环境,描述实验所用的计算机硬件设备及其配置,包括CPU型号、内存容量、硬盘类型等。

3. 实验方法,详细描述实验的步骤和操作过程,包括对硬件的
安装、连接和设置。

4. 实验结果,记录实验过程中观察到的现象和数据,例如不同
硬件配置下的性能表现、温度变化等。

5. 结果分析,对实验结果进行分析,解释观察到的现象,比较
不同硬件配置的优劣势,并提出可能的原因。

6. 实验总结,总结实验的主要内容和结果,讨论实验中遇到的问题和解决方法,提出改进建议,并指出实验的局限性。

在撰写实验报告时,需要准确记录实验过程中的数据和观察结果,尽量使用量化的数据进行分析,同时注意描述实验中遇到的困难和解决方法。

此外,报告应当清晰、简练,图表应当配有清晰的标注和说明。

最后,对于实验中的任何偏差或异常情况,也需要进行充分的解释和讨论。

八选一数据选择器

八选一数据选择器

学生实验报告实验课名称:VHDL硬件描述语言实验项目名称:八选一数据选择器专业名称:电子科学与技术班级:电科一班学号:3205080117学生姓名:刘海涛教师姓名:程鸿亮____2010____年___11_月___6_日组别 5 同组同学王帅周全实验日期2010年11月6 日实验室名称________成绩_____一、实验名称:八选一数据选择器二、实验目的与要求:设计一个8选1的数据选择器,初步掌握QuartusII软件的使用方法以及硬件编程下载的基本技能。

三、实验内容:1.通过VHDL编程,实现一个数据选择器,要求有8位数据输入端,1位数据输出端,通过3位地址输入信号寻址,并具有输出使能功能。

首先在QuartusII上进行功能和时序仿真,之后通过器件及其端口配置下载程序到SOPC开发平台。

如图所示:d0~d7为数据输入端;本实验用实验平台的拨动开关实现8位输入信号(d0~d7):g为使能端,高电平有效; a[2..0]为地址输入端;用实验平台的按键8,7,6实现地址信号和键3实现使能信号:y为输出端。

本实验输出采用LED发光阵列的LED12。

注:要求非使能或是无效地址状态时,y输出0。

首先在QuartusII上进行功能和时序仿真,之后通过器件及其端口配置下载程序到SOPC开发平台中。

2.操作步骤:1.在quartus建立工程,选择好相关器件(本实验用到的开发器件为cyclonell EP2C35F484C8),新建VHDL文件,输入相关实验的代码。

2.编译成功后,建立矢量波形文件,然后依次进行相应的功能仿真和时序仿真。

3.仿真结束后,参照开发系统所给的I/O端口映射表,通过开发平台上每个I/O器件附近的I/O编号,在映射表中找到相应的引脚名,进行引脚的锁定。

4.编译下载通过对话框中的Hardware Setup按钮,选择下载设备:USB-Blaster 进行下载仿真。

四、实验条件:1. WindowsXP操作系统2. QuartusII EDA开发系统3. 杭州康芯SOPC硬件开发平台五、实验原理:1.算法流程:八选一数据选择器执行对8个数据源的选择,d0,d1,d2,d3,d4,d5,d 6,d7 定义为七个数据输入端口作为数据输入端。

EDA技术实验报告七人表决器完美版

EDA技术实验报告七人表决器完美版

广东工业大学课程设计任务书一、课程设计的内容1. 系统功能分析;2. 实现系统功能的方案设计;3. 编写各功能模块VHDL语言程序;4. 对各功能模块进行编译、综合、仿真和验证;5. 顶层文件设计;6. 整个系统进行编译、综合、仿真和验证;二、课程设计的要求与数据1. 按所布置的题目要求,每一位学生独立完成全过程;2. 分模块层次化设计;3. 各功能模块的底层文件必须用VHDL语言设计,顶层文件可用VHDL语言设计,也可以用原理图设计。

三、课程设计应完成的工作1. 所要求设计内容的全部工作;2. 按设计指导书要求提交一份报告书;3. 提交电子版的设计全部内容:工程目录文件夹中的全部内容,报告书四、课程设计进程安排五、应收集的资料及主要参考文献1. 陈先朝,硬件描述语言与EDA技术实践指导书,2011年11月2. 曹昕燕等编著,EDA技术实验与课程设计,清华大学出版社,2006年5月3. 刘欲晓等编著,EDA技术与VHDL电路开发应用实践,电子工业出版社,2009年4月4. 刘昌华等编著,数字逻辑EDA设计与实践:MAX+plusⅡ与QuartusⅡ双剑合璧,国防工业出版社,2009年5. 刘江海主编,EDA技术课程设计,华中科技大学出版社,2009年1月发出任务书日期: 2011年12月 5日指导教师签名:计划完成日期: 2011年12月 9日基层教学单位责任人签章:主管院长签章:七人表决器设计一、设计目的1.熟悉Quartus II软件的使用。

2.熟悉七人表决器的工作原理3.熟悉EDA开发的基本流程。

二、设计要求表决器就是对于一个行为,由多个人投票,如果同意的票数过半,就认为此行为可行;否则如果否决的票数过半,则认为此行为无效。

七人表决器由七个人来投票,当同意的票数大于或者等于4人时,则认为同意;反之,当否决的票数大于或者等于4人时,则认为不同意。

实验中用7个拨挡开关来表示七个人,当对应的拨挡开关输入为‘1’时,表示此人同意;否则若拨挡开关输入为‘0’时,则表示此人反对。

EDA技术实验报告

EDA技术实验报告

EDA技术实验报告实验⼀利⽤原理图输⼊法设计4位全加器⼀、实验⽬的:掌握利⽤原理图输⼊法设计简单组合电路的⽅法,掌握MAX+plusII 的层次化设计⽅法。

通过⼀个4位全加器的设计,熟悉⽤EDA 软件进⾏电路设计的详细流程。

⼆、实验原理:⼀个4位全加器可以由4个⼀位全加器构成,全加器的进位以串⾏⽅式实现,即将低位加法器的进位输出cout 与相邻的⾼位加法器的低位进位输⼊信号cin 相接。

1位全加器f-adder 由2个半加器h-adder 和⼀个或门按照下列电路来实现。

半加器h-adder 由与门、同或门和⾮门构成。

四位加法器由4个全加器构成三、实验内容:1. 熟悉QuartusII 软件界⾯,掌握利⽤原理图进⾏电路模块设计的⽅法。

QuartusII 设计流程见教材第五章:QuartusII 应⽤向导。

2.设计1位全加器原理图(1)⽣成⼀个新的图形⽂件(file->new->graphic editor )(2)按照给定的原理图输⼊逻辑门(symbol ->enter symbol)COCO 1S 2S 3S 4(4)为管脚和节点命名:在管脚上的PIN_NAME处双击⿏标左键,然后输⼊名字;选中需命名的线,然后输⼊名字。

(5)创建缺省(Default)符号:在File菜单中选择Create Symbol Files for Current File项,即可创建⼀个设计的符号,该符号可被⾼层设计调⽤。

3.利⽤层次化原理图⽅法设计4位全加器(1)⽣成新的空⽩原理图,作为4位全加器设计输⼊(2)利⽤已经⽣成的1位全加器的缺省符号作为电路单元,设计4位全加器的原理图.4.新建波形⽂件(file->new->Other Files->Vector Waveform File),保存后进⾏仿真(Processing ->Start Simulation),对4位全加器进⾏时序仿真。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《硬件描述语言》实验报告学院:学号:姓名:专业:实验时间:实验地点:指导教师:年月实验一简单组合逻辑设计一、实验目的及要求:1.掌握基本组合逻辑电路的实现方法。

2.初步了解两种基本组合逻辑电路的生成方法。

3.学习测试模块的编写。

4.通过综合和布局布线了解不同层次仿真的物理意义。

二、实验设备及要求装有modesim和synplify的电脑一台三、实验内容与步骤1.实验内容:本次实验采用Verilog HDL语言设计一个可综合的数据比较器,其功能是比较数据a与数据b的结果,如果两个数据相同,则输出结果1,否则给出结果0;并写出测试模型,使其进行比较全面的测试。

2.实验步骤:(1)建立工程文件,编写模块源码和测试模块,要求测试模块对源文件进行比较全面的测试;(2)编译源码和测试模块,用测试模块对源文件进行测试,并进行仿真;(3)观察综合后生成的文件和源文件的不同点和相同点。

(4)综合时采用不同的FPGA器件,观察综合后的结果有什么不同。

四、实验结果与数据处理:1.RTL图及仿真后波形图:2.综合后的电路图:五、分析与讨论:1.课本练习一的测试方法二中,第二个initial块有什么用?它与第一个initial块有什么关系?答:测试方法二中的第二个initial用来暂停仿真以便观察仿真波形,它与第一个initial是并行关系2.如果在第二个initial块中,没有写出#10000或者$stop,仿真会如何进行?答:如果没有写#10000,仿真会直接停止,没有$stop,仿真不会结束。

3.比较两种测试方法,哪一种更全面?答:第二种测试方法更全面,测试了更多种的变换的情况。

实验二简单分频时序逻辑电路的设计一、实验目的及要求:1.掌握条件语句在简单时序模块设计中的使用;2.掌握verilog语句在简单时序模块设计中的使用;3.学习在Verilog模块中应用计数器;4.学习测试模块的编写、综合和不同层次的仿真。

二、实验设备及要求装有modesim和synplify的电脑一台三、实验内容与步骤:1.实验内容:(1)使用always块和@(posedge clk)或@(negedge clk)的结构来表述时序逻辑,设计1/2分频的可综合模型。

得到如下波形图:(2)对模块进行RTL级仿真、综合后门级仿真,布局布线仿真;2.实验步骤:(1)建立工程文件,编写模块源码和测试模块,要求测试模块能对源文件进行比较全面的测试。

(2)编译源码和测试模块,用测试模块对源文件进行测试,并综合仿真。

得到波形图。

(3)观察综合后生成的文件和源文件的不同点和相同点。

(4)记录数据并完成实验报告。

四、实验结果与数据处理:1.RTL图及仿真后波形图:2.综合后的电路图:五、分析与讨论:1.如果没有reset信号,能否控制2分频clk_out信号的相位?答:如果没有reset信号,则无法控制2分频clk_out信号的相位。

2.只用clk时钟沿的触发(即不用2分频产生的时钟沿)如何直接产生4分频、8分频、或者16分频的时钟?答:借助一个整型变量j做计数操作。

3.如何只用clk时钟沿的触发直接产生占空比不同的分频时钟?答:借助一个整型变量j做计数操作,从而用clk时钟沿的触发直接产生4分频、8分频或者16分频的时钟,及产生占空比不同的分频时钟。

实验三利用条件语句实现计数分频时序电路一、实验目的及要求:1.掌握条件语句在简单时序模块设计中的使用;2.掌握最基本时序电路的实现方法;3.学习在Verilog模块中应用计数器;4.学习测试模块的编写、综合和不同层次的仿真。

二、实验设备及要求装有modesim和synplify的电脑一台三、实验内容与步骤:1.实验内容:(1)复习课本,熟悉条件语句的使用方式;(2)建立工程并编写源代码;(3)综合并布局布线仿真并分析always语句在时序逻辑中的作用;(4)学习测试模块的编写、综合和仿真。

2.实验步骤:(·1)建立工程文件,编写模块源码和测试模块,要求测试模块能对源文件进行比较全面的测试;(2)编译源码和测试模块,用测试模块对源文件进行测试,并综合仿真;(3)观察综合后生成的文件和源文件的不同点和相同点;(4)综合时采用不同的FPGA器件,如Altera公司的Cyclone II系列和Stratix III系列,观察综合后的结果有什么不同。

四、实验结果与数据处理:1.RTL图及仿真后波形图:2.综合后的电路图:五、分析与讨论:如果综合时采用不同的FPGA器件,如Altera公司的Cyclone II系列和Stratix III系列,想想综合后的结果有什么不同?答:时钟分频的实现方法如果是采用行波时钟的方式(异步设计),容易造成时钟偏差,很难控制芯片内部的逻辑基本单元中的触发器的建立/保持时间,同时不同芯片的内部参数也有所不同,同一代码的时序分析结果分析得不同也很正常。

如果分频后的时钟作为后级设计的工作时钟,那么整个设计不只使用一个主时钟,而是用多个时钟来实现的话(异步设计),存在信号的跨时钟域转换问题,跨时钟域的信号如果设计不当,会采到亚稳态。

实验四阻塞赋值与非阻塞赋值的区别一、实验目的及要求:1.通过实验,掌握阻塞赋值与非阻塞赋值的概念与区别;2.深入理解顺序执行和并发执行的概念。

3.了解非阻塞和阻塞赋值的不同使用场合;4.学习测试模块的编写,综合和不同层次的仿真。

二、实验设备及要求:装有modesim和synplify的电脑一台三、实验内容与步骤:1.实验内容:(1)本次实验参照课本上的练习三,采用Verilog HDL语言描述两个模块,分别包含有阻塞和非阻塞赋值语句;(2)编写测试模块,在相同输入信号的条件下,比较阻塞与非阻塞语句的输出结果;(3)对模块进行RTL级仿真、综合后门级仿真,布局布线仿真;(4)分析阻塞赋值与非阻塞赋值的区别。

2.实验步骤:(1)仔细阅读课本,建立工程文件,编写模块源码和测试模块,要求测试模块能对源文件进行比较全面的测试;(2)编译源码和测试模块,用测试模块对源文件进行测试,并综合仿真;(3)观察综合后生成的两个电路结构图并观察仿真波形图,分析阻塞与非阻塞赋值的异同(4)综合时采用不同的FPGA器件,如Altera公司的Cyclone II系列和Stratix III系列,观察综合后的结果有什么不同。

四、实验结果与数据处理:1.RTL图及仿真后波形图:2.综合后的电路图:五、分析与讨论:1.解释说明测试模块中forever语句后若有其他语句,是否能够执行?为什么?答:不能。

forever循环语句常用于产生周期性的波形,用来作为仿真测试信号。

它与always不同之处在于它不能独立写在程序中,而必须写在initial块中。

2.在blocking模块中按如下两种方法,仿真与综合的结果会有什么样的变化?作出仿真波形,分析综合结果。

答:a)always@(posedge clk)beginc=b;b=a;end可以实现与上面非阻塞赋值相同的赋值结果。

b)always@(posedge clk)b=a;always@(posedge clk)c=b;有可能出现竞争现象。

实验五用always块实现较复杂的组合逻辑电路一、实验目的及要求:1.掌握用always实现较大组合逻辑电路的方法;2.进一步了解assign与always两种组合电路实现方法的区别和注意点;3.学习测试模块中随机数的产生和应用;4.学习综合不同层次的仿真,并比较结果。

二、实验设备及要求装有modesim和synplify的电脑一台三、实验内容与步骤1.实验内容:(1)运用always语句块设计一个8位数据选择器。

要求:每路输入数据与输出数据均为4位2进制数,当选择开关(至少3位)或输入数据发生变化时,输出数据也相应地变化;(2)写出测试模块,对模块的功能进行测试;(3)对模块进行RTL级仿真、综合后门级仿真,布局布线仿真。

2.实验步骤:(1)仔细阅读课本,建立工程文件,编写模块源码和测试模块,要求测试模块能对源文件进行比较全面的测试;(2)编译源码和测试模块,用测试模块对源文件进行测试,并综合仿真;(3)观察综合后生成的两个电路结构图并观察仿真波形图,分析assign与always两种组合电路实现方法的区别和注意点;(4)综合时采用不同的FPGA器件,如Altera公司的Cyclone II系列和Stratix III系列,观察综合后的结果有什么不同。

四、实验结果与数据处理:1.RTL图及仿真后波形图:.2.综合后的电路图:五、分析与讨论:1.分析用assign语句和always语句进行组合逻辑设计时有什么异同点?答:verilog语言中的赋值语句有两种,一种是持续赋值语句(assign语句),另一种是过程赋值语句(always语句)。

持续赋值语句(assign语句)主要用于对wire型变量的赋值,因为wire的值不能存住,需要一直给值,所以需要用持续赋值。

过程赋值语句(always语句)主要用于reg 型变量的赋值,因为always 语句被执行是需要满足触发条件的,所以always过程块里面的内容不是每时每刻都被执行,因此需要将被赋值的对象定义成寄存器类型,以便这个值能被保持住。

过程赋值又分为阻塞赋值“=”和非阻塞赋值“<=”两种。

六、教师评语成绩签名:日期:。

相关文档
最新文档