EDA实验报告
EDA实验报告
EDA实验报告班级:姓名:目录实验一:七段数码显示译码器设计 (1)摘要 (1)实验原理 (1)实验方案及仿真 (1)引脚下载 (2)实验结果与分析 (3)附录 (3)实验二:序列检测器设计 (6)摘要 (6)实验原理 (6)实现方案及仿真 (6)引脚下载 (7)实验结果与分析 (8)实验三:数控分频器的设计 (11)摘要 (11)实验原理 (11)方案的实现与仿真 (11)引脚下载 (12)实验结果及总结 (12)附录 (12)实验四:正弦信号发生器 (14)摘要 (14)实验原理 (14)实现方案与仿真 (14)嵌入式逻辑分析及管脚下载 (16)实验结果与分析 (17)附录 (18)实验一:七段数码显示译码器设计摘要:七段译码器是一种简单的组合电路,利用QuartusII的VHDL语言十分方便的设计出七段数码显示译码器。
将其生成原理图,再与四位二进制计数器组合而成的一个用数码管显示的十六位计数器。
整个设计过程完整的学习了QuartusII的整个设计流程。
实验原理:七段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用译码程序在FPGA\CPLD中来实现。
本实验作为7段译码器,输出信号LED7S的7位分别是g、f、e、d、c、b、a,高位在左,低位在右。
例如当LED7S 输出为“1101101”时,数码管的7个段g、f、e、d、c、b、a分别为1、1、0、1、1、1、0、1。
接有高电平段发亮,于是数码管显示“5”。
实验方案及仿真:I、七段数码显示管的设计实现利用VHDL描述语言进行FPGA上的编译实现七段数码显示译码器的设计。
运行QuartusII在G:\QuartusII\LED7S\下新建一个工程文件。
新建一个vhdl语言编译文件,编写七段数码显示管的程序见附录1-1。
EDA-实验报告
实验一五人表决器设计一、实验目的1 加深对电路理论概念的理解3 加深计算机辅助分析及设计的概念4 了解及初步掌握对电路进行计算机辅助分析的过程二、实验要求制作一个五人表决器,共五个输入信号,一个输出信号。
若输入信号高电平数目多于低电平数目,则输出为高,否则为低。
三、实验原理根据设计要求可知,输入信号共有2^5=32种可能,然而输出为高则有15种可能。
对于本设计,只需一个模块就能完成任务,并采用列写真值表是最简单易懂的方法。
四、计算机辅助设计设A,B,C,D,E引脚为输入引脚,F为输出引脚。
则原理图如1所示图1.1 五人表决器原理图实验程序清单如下:MODULE VOTEA,B,C,D,E PIN;F PIN ISTYPE 'COM';TRUTH_TABLE([A,B,C,D,E]->[F])[0,0,1,1,1]->[1];[0,1,1,1,0]->[1];[0,1,0,1,1]->[1];[0,1,1,0,1]->[1];[1,0,1,1,1]->[1];[1,1,0,1,1]->[1];[1,1,1,0,1]->[1];[1,1,1,1,0]->[1];[1,1,1,0,0]->[1];[1,1,0,1,0]->[1];[1,1,1,1,1]->[1];[1,1,0,0,1]->[1];[1,0,0,1,1]->[1];[1,0,1,0,1]->[1];[1,0,1,1,0]->[1];END五、实验测试与仿真根据题目要求,可设输入分别为:0,0,0,0,0;1,1,1,1,1;1,0,1,0,0;0,1,0,1,1。
其测试程序如下所示:MODULE fivevoteA,B,C,D,E,F PIN;X=.X.;TEST_VECTORS([A,B,C,D,E]->[F])[0,0,0,0,0]->[X];[1,1,1,1,1]->[X];[1,0,1,0,0]->[X];[0,1,0,1,1]->[X];END测试仿真结果如图1.2所示:图1.2 五人表决器设计仿真图可知,设计基本符合题目要求。
EDA实验 报告范文
实验一:五人表决器一、程序清单library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity vote5 isport(v_in:in std_logic_vector(4 downto 0);lock,clr:in std_logic;v_over:out std_logic_vector(2 downto 0);num_agr,num_opp:out std_logic_vector(3 downto 0);v_out:out std_logic_vector(4 downto 0);led_agr,led_opp:out std_logic);end entity vote5;architecture one of vote5 isbeginprocess(clr,v_in,lock)variable agr,opp: std_logic_vector(3 downto 0);beginif(clr='1')thenled_agr<='0';led_opp<='0';agr:="0000";opp:="0000";if agr="0000" thennum_agr<="0000";end if;if opp="0000"thennum_opp<="0000";end if;v_out<="00000";v_over<="000";elsif(lock'event and lock='1')thenv_out<=v_in;v_over<="111";agr:="0000";opp:="0000";for i in 0 to 4 loopif (v_in(i)<='0') then opp:=opp+1;end if;agr:=5-opp;end loop;num_agr<=agr;num_opp<=opp;if(agr>opp)thenled_agr<='1';led_opp<='0';elseled_agr<='0';led_opp<='1';end if;end if;end process;end architecture one;三.仿真1. 功能仿真波形2.时序仿真波形实验二:九九乘法表系统的设计一、程序清单library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;entity multiply is --构造体描述4位乘法器port( clk:in std_logic;a,b:in std_logic_vector(3 downto 0);led_data:out std_logic_vector(7 downto 0);seg_sel:out std_logic_vector(2 downto 0) );end multiply;architecture rtl of multiply issignal led_data2,led_data1,led_data0: std_logic_vector(7 downto 0);--LED显示代码,寄存十位个位的数signal displayclk: std_logic;beginprocess(a,b)variable s: std_logic_vector(7 downto 0);--乘积variable bai,shiwei,gewei: std_logic_vector(3 downto 0);--乘积的十位个位begins(7 downto 0):=a(3 downto 0)*b(3 downto 0);if s>="11001000" then bai:="0010";s:=s-"11001000";elsif s>="01100100" then bai:="0001";s:=s-"01100100";else bai:="0000";end if;if s>="01011010" then shiwei:="1001";s:=s-"01011010";gewei:=s(3 downto 0);--90以上 elsif s>="01010000" then shiwei:="1000";s:=s-"01010000";gewei:=s(3 downto 0);--80以上 elsif s>="01000110" then shiwei:="0111";s:=s-"01000110";gewei:=s(3 downto 0); --70以上 elsif s>="00111100" then shiwei:="0110";s:=s-"00111100";gewei:=s(3 downto 0);--60以上 elsif s>="00110010" then shiwei:="0101";s:=s-"00110010";gewei:=s(3 downto 0);--50以上 elsif s>="00101000" then shiwei:="0100";s:=s-"00101000";gewei:=s(3 downto 0);--40以上 elsif s>="00011110" then shiwei:="0011";s:=s-"00011110";gewei:=s(3 downto 0);--30以上 elsif s>="00010100" then shiwei:="0010";s:=s-"00010100";gewei:=s(3 downto 0);--20以上 elsif s>="00001010" then shiwei:="0001";s:=s-"00001010";gewei:=s(3 downto 0);--10以上 else gewei:=s(3 downto 0);shiwei:="0000";end if;case bai iswhen "0001" => led_data2<="11111001";when "0010" => led_data2<="10100100";when others => led_data2<="11111111";end case;case shiwei iswhen "0000" => led_data1<="11000000";when "0001" => led_data1<="11111001";when "0010" => led_data1<="10100100";when "0011" => led_data1<="10110000";when "0100" => led_data1<="10011001";when "0101" => led_data1<="10010010";when "0110" => led_data1<="10000010";when "0111" => led_data1<="11111000";when "1000" => led_data1<="10000000";when "1001" => led_data1<="10010000";when others => led_data1<="11111111";end case;case gewei iswhen "0000" => led_data0<="11000000";when "0001" => led_data0<="11111001";when "0010" => led_data0<="10100100";when "0011" => led_data0<="10110000";when "0100" => led_data0<="10011001";when "0101" => led_data0<="10010010";when "0110" => led_data0<="10000010";when "0111" => led_data0<="11111000";when "1000" => led_data0<="10000000";when "1001" => led_data0<="10010000";when others => led_data0<="11111111";end case;end process;process(clk)variable cnt:integer range 0 to 20000; --1KHZ扫描显示时钟 beginif clk'event and clk='1' then cnt:=cnt+1;if cnt<10000 then displayclk<='1';elsif cnt<20000 then displayclk<='0';else cnt:=0;displayclk<='0';end if;end if;end process;process (displayclk) --显示两位variable cnt2: std_logic_vector(1 downto 0);beginif displayclk'event and displayclk='1' then cnt2:=cnt2+1;if cnt2="01" then seg_sel<="001";led_data<=led_data0;elsif cnt2="010" then seg_sel<="010";led_data<=led_data1;elsif cnt2="11" then cnt2:="00"; seg_sel<="100";led_data<=led_data2;end if;end if;end process;end rtl;二、仿真设计输入文件经maxplus软件开发系统编译、处理,由功能仿真器进行模拟,获得仿真波形如图6所示。
eda技术实验报告
EDA技术实验报告1. 背景介绍EDA(Exploratory Data Analysis)是指探索性数据分析,是数据科学和机器学习中一项重要的任务。
通过EDA技术,我们可以对数据集进行可视化和统计分析,从而深入了解数据的特征和结构,为后续的数据处理和建模提供指导。
2. 实验目的本实验旨在通过使用EDA技术来分析一个给定的数据集,并从中获取有价值的信息。
通过实践,我们将深入了解EDA技术的应用和优势。
3. 实验步骤步骤1:导入数据首先,我们需要将实验所需的数据导入到Python的数据分析库中。
我们可以使用pandas库读取数据集,并将其存储为DataFrame对象,以便后续的分析和处理。
import pandas as pd# 读取数据集data = pd.read_csv('data.csv')步骤2:数据概览在进行数据分析之前,我们先要对数据进行整体的了解。
我们可以通过以下几个步骤来获取数据的概览信息:1.查看数据的前几行,了解数据的结构和格式。
data.head()2.查看数据的基本统计信息,包括均值、标准差、最小值、最大值等。
data.describe()3.检查数据中是否存在缺失值或异常值。
data.isnull().sum()步骤3:数据可视化EDA技术的核心之一是数据可视化。
通过可视化数据,我们可以更直观地理解数据的分布和关系。
下面是几种常用的数据可视化方法:1.直方图:用于展示数值型数据的分布情况,可以帮助我们了解数据的集中趋势和离散程度。
data['column'].plot.hist()2.散点图:用于展示两个数值型变量之间的关系,可以帮助我们发现数据的相关性。
data.plot.scatter(x='column1', y='column2')3.条形图:用于展示类别型数据的分布情况,可以帮助我们比较不同类别之间的差异。
EDA实验报告(全)
目录实验一全加器的设计 (1)一实验目的 (1)二实验要求 (1)三实验步骤: (1)四实验结果: (2)五实验注意: (2)六实验心得: (2)实验二模可变计数器的设计 (3)一实验要求 (3)二实验步骤 (3)三、实验心得: (6)实验三序列信号发生器与检测器设计 (7)一、实验目的 (7)二、设计要求 (7)三、主要仪器设备 (7)四、实验原理 (7)五、实验步骤 (8)六、实验心得 (13)实验四交通灯控制器设计 (14)一、实验目的 (14)二、设计要求 (14)三、主要仪器设备 (14)四、实验思路 (14)五、实验步骤 (15)六、实验现象及验证 (22)七、实验心得 (23)实验五多功能数字钟设计 (24)一、实验目的 (24)二、设计要求 (24)三、主要仪器设备 (24)四、实验思路 (24)五、实验步骤 (25)六、实验现象及验证 (31)七、实验心得 (31)实验六出租车计价器设计 (32)一、实验目的 (32)二、实验任务及要求 (32)三、主要仪器设备 (32)四、实验思路 (32)五、实验步骤 (33)六、实验现象及验证 (39)七、实验心得 (39)南昌大学实验报告学生姓名:xx 学号:61004100xx 专业班级:通信101实验类型:□验证□综合□设计□创新实验日期:2012-9-17 实验成绩:实验一全加器的设计一实验目的以一位二进制全加器为例熟悉利用QuartusII的原理图输入方法和文本输入法设计简单组合电路;学习多层次工程的设计方法。
二实验要求⑴用文本方法实现半加器,再采用层次设计法用原理图输入完成全加器的设计;⑵给出此项设计的仿真波形;⑶用发光LED指示显示结果。
三实验步骤:1.(1)建立工作库文件夹,建立半加器工程h_adder,输入半加器VHDL代码并存盘。
library ieee;use ieee.std_logic_1164.all;entity h_adder isport ( a, b :in std_logic;co,so :out std_logic);end entity h_adder;architecture fh1 of h_adder isbeginso<=not(a xor (not b));co<=a and b;end architecture fh1;编译后转换得到半加器的元件符号h_adder(2)在同一工作库文件夹下,建立全加器工程fa,采用层次设计法调用元件半加器h_adder和或门or2完成全加器的原理图文件。
EDA实验报告(12份).pdf
实验一组合电路的设计1. 实验目的:熟悉MAX + plus II 的VHDL 文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。
2. 实验内容:设计一个2选1多路选择器,并进行仿真测试,给出仿真波形。
3. 实验程序如下:library ieee;use ieee.std_logic_1164.all; entity mux21a isport(a,b,s:in std_logic;y:out std_logic); end entity mux21a; architecture one of mux21a is beginy<=a when s='0' else b ; end architecture one ;4. 仿真波形(如图1-1所示)图1-1 2选1多路选择器仿真波形5. 试验总结:从仿真波形可以看出此2选1多路选择器是当s为低电平时,y输出为b, 当s为高电平时,y输出为a(y<=a when s='0' else b ;),完成2路选择输出。
实验二时序电路的设计1. 实验目的:熟悉MAX + plus II VHDL文本设计过程,学习简单的时序电路设计、仿真和测试。
2. 实验验内容:设计一个锁存器,并进行仿真测试,给出仿真波形。
3. 实验程序如下:library ieee;use ieee.std_logic_1164.all;entity suocun7 isport(clk: in std_logic;en: in std_logic;D: in std_logic_vector(7 downto 0);B:out std_logic_vector(7 downto 0)); end suocun7;architecture one of suocun7 issignal K: std_logic_vector(7 downto 0); beginprocess(clk,en,D)beginif clk'event and clk='1' thenif en ='0'thenK<=D;end if;end if;end process;B<=K;end one;4.仿真波形(如图2-1所示)图2-1 8位锁存器仿真波形此程序完成的是一个8位锁存器,当时钟上升沿到来(clk'event and clk='1')、使能端为低电平(en ='0')时,输出为时钟上升沿时的前一个数,从仿真波形看,实现了此功能。
EDA实验报告(四选一、四位比较器、加法器、计数器、巴克码发生器)
EDA实验报告(四选一、四位比较器、加法器、计数器、巴克码发生器)EDA实验报告实验14选1数据选择器的设计一、实验目的1.学习EDA软件的基本操作。
2.学习使用原理图进行设计输入。
3.初步掌握器件设计输入、编译、仿真和编程的过程。
4.学习实验开发系统的使用方法。
二、实验仪器与器材1.EDA开发软件一套2.微机一台3.实验开发系统一台4.打印机一台三、实验说明本实验通过使用基本门电路完成4选1数据选择器的设计,初步掌握EDA设计方法中的设计输入、编译、综合、仿真和编程的过程。
实验结果可通过实验开发系统验证,在实验开发系统上选择高、低电平开关作为输入,选择发光二极管显示输出电平值。
本实验使用Quartus II 软件作为设计工具,要求熟悉Quartus II 软件的使用环境和基本操作,如设计输入、编译和适配的过程等。
实验中的设计文件要求用原理图方法输入,实验时,注意原理图编辑器的使用方法。
例如,元件、连线、网络名的放置方法和放大、缩小、存盘、退出等命令的使用。
学会管脚锁定以及编程下载的方法等。
四、实验要求1.完成4选1数据选择器的原理图输入并进行编译;2.对设计的电路进行仿真验证;3.编程下载并在实验开发系统上验证设计结果。
五、实验结果4选1数据选择器的原理图:仿真波形图:管脚分配:实验2 四位比较器一、实验目的1.设计四位二进制码比较器,并在实验开发系统上验证。
2.学习层次化设计方法。
二、实验仪器与器材1.EDA 开发软件 一套 2.微机 一台 3.实验开发系统 一台 4.打印机 一台 5.其它器件与材料 若干 三、实验说明本实验实现两个4位二进制码的比较器,输入为两个4位二进制码0123A A A A 和0123B B B B ,输出为M(A=B ),G (A>B )和L (A<B )(如图所示)。
用高低电平开关作为输入,发光二极管作为输出,具体管脚安排可根据试验系统的实际情况自行定义。
EDA实习报告1
贵州师范大学学生实习报告科目:EDA实习专业: 电气工程及其自动化班级: 10电气**: ***学号: ************实验项目名称:数字电子钟的设计实验项目性质:普通试验所属课程名称:VHDL程序设计一、实验目的1 学习VHDL语言的一些基本特点。
2 掌握VHDL程序的基本结构。
3掌握VHDL程序设计方法。
4 要能够用vhdl语言读懂并编写eda程序,对eda设计的总体框架能有较好的把握,掌握各模块的调用方式。
二、实验内容和要求设计一个数字时钟,显示时(2位),分(2位),秒(2位),具体要求是:具有时分秒计数显示功能,以24小时循环计时;数码管动态显示时,分,秒;具有清零功能。
在软件工具平台上,进行VHDL语言的各模块编程输入、编译实现和仿真验证。
三、实验主要仪器设备和材料计算机,开发环境MAX-PLUSII,ZY11EDA实验系统,VHDL语言。
四、实验方法、步骤及结果测试1、设计思路:数字钟的主体是计数器,它记录并显示接收到的秒脉冲个数,其中秒和分位60进制计数器,小时为24进制计数器,分别产生3位BCD码。
BCD码经译码,驱动后接数码显示电路。
根据实验要求,将设计分为5个主要部分,时功能模块、分功能模块、秒功能模块、扫描仪功能模块和7段LED功能模块。
在时、分、秒模块中,包括复位和预置数,其主要思路如下:秒钟的模块:设计一个60进制的计数器,以clk为其时钟信号,每60个clk后产生一个进位信号CF给分钟模块,作为分钟进程的响应信号。
秒钟模块VHDL程序见附录1:仿真波形如下:封装如下图:分钟的模块:同理于秒钟的模块,设计一个60进制的计数器,以CFM为其时钟信号,每60个CFM后产生一个进位信号CFM给小时模块,作为小时模块进程的响应信号。
分钟模块VHDL程序见附录二:仿真波形如下:封装如下图:小时的模块:为24进制计数器,在分的进位信号CFM的激发下计数,从0到23的时候产生一个信号CFH,全部清0,重新开始计时。
EDA实验报告含结果图
EDA电子课程实验报告专业:班级:姓名:学号:实验一四人表决器一实验目的1、熟悉Quartus II软件的使用。
2、熟悉EDA-IV实验箱。
3、熟悉EDA开发的基本流程。
二硬件需求1、RC-EDA-IV型实验箱一台;2、RC-EDA-IV型实验箱配套USB-Blaster下载器一个;3、PC机一台。
三实验原理所谓表决器就是对于一个行为,由多个人投票,如果同意的票数过半,就认为此行为可行;否则如果否决的票数过半,则认为此行为无效。
四人表决器顾名思义就是由四个人来投票,当同意的票数大于或者等于3人时,则认为同意;反之,当否决的票数大于或者等于2人时,则认为不同意。
实验中用4个拨挡开关来表示4个人,当对应的拨挡开关输入为‘1’时,表示此人同意;否则若拨挡开关输入为‘0’时,则表示此人反对。
表决的结果用一个LED表示,若表决的结果为同意,则LED被点亮;否则,如果表决的结果为反对,则LED不会被点亮。
四实验内容VHDL程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;--------------------------------------------------------------------entity EXP3 isport(k1,K2,K3,K4 : in std_logic;ledag : out std_logic_vector(3 downto 0);m_Result : out std_logic);end EXP3;--------------------------------------------------------------------architecture behave of EXP3 issignal K_Num : std_logic_vector(2 downto 0); signal K1_Num,K2_Num: std_logic_vector(2 downto 0); signal K3_Num,K4_Num: std_logic_vector(2 downto 0);beginprocess(K1,K2,K3,K4)beginK1_Num<='0'&'0'&K1;K2_Num<='0'&'0'&K2;K3_Num<='0'&'0'&K3;K4_Num<='0'&'0'&K4;end process;process(K1_Num,K2_Num,K3_Num,K4_Num,)beginK_Num<=K1_Num+K2_Num+K3_Num+K4_Num;end process;process(K_Num) beginif(K_Num>2) thenm_Result<='1';elsem_Result<='0';end if;end process;end behave;实验电路实验二格雷码转换一实验目的1、了解格雷码变换的原理。
EDA实验报告
海南师范大学物理与电子工程学院实验报告( ---- 学年第一学期)课程名称:专业班级:学号:姓名:实验一:原理图输入法设计与仿真实验时间:六、实验心得实验二七人表决器的设计3、引脚匹配实验三 显示电路设计一、实验目的1、学习7段数码显示译码器设计;2、学习VHDL 的多层设计方法。
二、实验仪器设备1、PC 机一台2、GW48-PK2系列SOPC/EDA 实验开发系统 三、实验原理1、七段数码显示工作原理(共阴极接法)7 段数码是纯组合电路,通常的小规模专用IC ,如74 或4000系列的器件只能作十进制BCD 码译码,然而数字系统中的数据处理和运算都是2 进制的,所以输出表达都是16 进制的,为了满足16 进制数的译码显示,最方便的方法就是利用译码程序在FPGA/CPLD 中来实现。
作为7 段译码器,输出信号LED7S 的7 位分别接数码管的7 个段,高位在左,低位在右。
例如当LED7S 输出为“1101101”时,数码管的7 个段:g 、f 、e 、d 、c 、b 、a 分别接1、1、0、1、1、0、1;接有高电平的段发亮,于是数码管显示“5”。
注意,这里没有考虑表示小数点的发光管,如果要考虑,需要增加段h 。
2、显示代码概念 显示代码a b cdefg四、实验内容1、编写7段译码器VHDL 源程序。
2、在Quartus Ⅱ软件上编译和仿真。
3、锁定管脚,建议选择实验电路模式6,显示译码输出用数码8 显示译码输出(PIO46-PIO40),键8、键7、键6 和键5 四位控制输入。
4编程下载与硬件验证。
5、记录系统仿真和硬件验证结果。
五、实验结果:2、波形仿真图:4、 引脚锁定:六、实验心得: 其实本实验的显示我们在模电里面就学习过了,也用集成块进行过实验,本实验用程序加硬件完成。
真所谓条条道路通罗马!实验四 四位全加器一、实验目的通过实验让学生熟悉Quartus Ⅱ的VHDL 文本设计流程全过程,掌握组合逻辑电路的文本输入设计法,通过对设计电路的仿真和硬件验证,让学生进一步了解加法器的功能。
eda实验报告完整版
eda实验报告完整版EDA实验报告一、文献综述EDA,全称为Exploratory Data Analysis,是一种数据探索性分析方法。
EDA通过多种可视化工具和数据分析技术快速探索数据集的特征和结构,从而发现其中的规律和异常,确定数据的可靠性和种类。
EDA的主要目的在于对数据进行全面的分析和理解,为后续的数据处理和建模提供参考。
EDA作为数据预处理的重要步骤,在数据分析和建模中占据着重要的地位。
目前,随着数据收集、存储和分析技术的快速发展,EDA正在成为数据分析中不可缺少的部分。
在大数据时代,EDA的发展已经超越了其传统的数据探索性分析功能,成为了快速调试和优化模型的重要手段。
二、实验目的本次实验旨在掌握EDA技术方法和可视化工具,在实际数据集中进行数据预处理和探索性分析。
主要目标包括:1.掌握常用的EDA方法和可视化工具。
2.通过对实际数据集处理和分析,了解数据的特征和结构。
3.确定数据集的质量、可靠性和种类。
4.为后续的数据处理和建模提供参考。
三、实验流程1.数据集的加载和清洗本次实验选用的数据集为Iris数据集,包含了鸢尾花的三个品种(Setosa、Versicolour、Virginica)的四个特征(sepal length、sepal width、petal length、petal width)共150个样本。
由于Iris数据集已经经过处理,因此不需要进行特殊的预处理。
为了更好地探索Iris数据集,我们将其存储为dataframe格式,以方便进行数据的各类统计和可视化。
2.数据特征的可视化在数据特征的可视化中,我们使用了多种可视化工具包括:ggplot2和ggpubr。
下面是我们在R语言环境下所使用的代码。
# 加载ggplot2和ggpubrlibrary(ggplot2)library(ggpubr)#加载Iris数据集data("iris")df = iris# 1.绘制直方图hist <- ggplot(df, aes(x = Sepal.Length)) +geom_histogram(fill = "blue", alpha = .5, bins = 30) +ggtitle("Distribution of Sepal.Length")# 2.绘制密度图density <- ggplot(df, aes(x = Sepal.Width, fill = Species)) +geom_density(alpha = .5) +scale_fill_manual(values = c("#00AFBB", "#E7B800", "#FC4E07")) +ggtitle("Density plot of Sepal.Width")# 5.绘制箱线图boxplot <- ggplot(df, aes(x = Species, y = Sepal.Length, fill = Species)) + geom_boxplot() +ggtitle("Boxplot of Sepal.Length by Species")上述代码会生成6个图表,分别为直方图、密度图、散点图、热力图、箱线图和柱状图。
EDA实验七八实验报告(1)
实验七序列检测器的VHDL设计(1)实验目的:用状态机实现序列检测器的设计,了解一般状态机的设计与应用。
(2)实验原理:序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出 1,否则输出 0。
由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。
在检测过程中,任何一位不相等都将回到初始状态重新开始检测。
书上P168例5-11 描述的电路完成对序列数”11100101”的检测,当这一串序列数高位在前(左移)串行进入检测器后,若此数与预置的密码数相同,则输出”A”,否则仍然输出”B”。
(3)实验内容 1:用VHDL状态机设计一个8位序列信号检测器。
实验程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SCHK ISPORT (DIN,CLK,CLR: IN STD_LOGIC;AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ENTITY SCHK;ARCHITECTURE ONE OF SCHK ISSIGNAL Q : INTEGER RANGE 0 TO 8;SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIND<="11100101";PROCESS(CLK,CLR)BEGINIF CLR='1' THEN Q<=0;ELSIF CLK'EVENT AND CLK='1' THENCASE Q ISWHEN 0=> IF DIN=D(7) THEN Q<=1; ELSE Q<=0; END IF;WHEN 1=> IF DIN=D(6) THEN Q<=2; ELSE Q<=0; END IF;WHEN 2=> IF DIN=D(5) THEN Q<=3; ELSE Q<=0; END IF;WHEN 3=> IF DIN=D(4) THEN Q<=4; ELSE Q<=0; END IF;WHEN 4=> IF DIN=D(3) THEN Q<=5; ELSE Q<=0; END IF;WHEN 5=> IF DIN=D(2) THEN Q<=6; ELSE Q<=0; END IF;WHEN 6=> IF DIN=D(1) THEN Q<=7; ELSE Q<=0; END IF;WHEN 7=> IF DIN=D(0) THEN Q<=8; ELSE Q<=0; END IF;WHEN OTHERS=> Q<=0;END CASE;END IF;END PROCESS;PROCESS(Q)BEGINIF Q=8 THEN AB<="1010";ELSE AB<="1011";END IF;END PROCESS;END ARCHITECTURE ONE;实验步骤如下:1 将源程序以SCHK.vhd的形式存入D盘名为liulin的文件夹中2 全程编译3 时序仿真4 引脚锁定和下载引脚锁定如下:CLR-PIN34;CLK-PIN32;DIN- PIN33;AB[0]- PIN77、 AB[1]- PIN78、AB[2]- PIN83、 AB[3]- PIN84;5 实际测试时序仿真波形如下图:实验分析:选择电路模式 No.8 。
eda实验报告
EDA技术与 VHDL 实验报告电气工程系电子信息工程实验一: 1 位全加器设计实验目的:I1131.学习 QuartusII9.1 集成开发环境的使用方法以及如何建立工程和文件;2.用原理图输入设计法和VHDL 文本输入设计法设计1 位全加器;3.通过电路仿真和硬件验证,进一步了解1 位全加器的功能I113实验内容:用原理图输入设计法和VHDL 文本输入设计法分别设计1 位全加器,并下载到 CH4 实验箱上运行。
实验原理: 1 位全加器可以由两个半加器和一个或门连接而成, 因而可根据半加器的电路 (如图 3-1 所示)或真值表写出或门和半加器的 VHDL 描述。
然后根据图 3-2 写出全加器的顶层描述。
co a b so co0 0 0 0 aand20 1 1 0bnot xnor2so1 0 1 0111图 3-1半加器 h_adder 电路图及其真值表u1dh_adder a or2aainh_adder ccoutf_addercoutain A coAco f bbinsumbin BsoeBsou3sumcincinu2图 3-2全加器 f_adder 电路图及其实体模块实验步骤:1.打开实验箱电源; 2.输入移位寄存器 VHDL 程序;3.点击图标,进行分析和综合;4. 建立波形文件,进行功能仿真; 5.按接线图配置 FPGA 引脚; 6.点击图标 ,进行编译;7.下载 ****.sof 配置文件到 EP3C16Q240C8中;1 半加器的 vhdl 描述有两种,我用的是下面这种,布尔函数描述法 :( 1)布尔函数描述方法的VHDL 源程序如下:LIBRARY IEEE; --半加器描述 (1):布尔方程描述方法USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder ISPORT (a, b : IN STD_LOGIC;co, so : OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE fh1 OF h_adder isBEGINso <= NOT(a XOR (NOT b)) ; co <= a AND b ;END ARCHITECTURE fh1;( 2)或门逻辑描述:LIBRARY IEEE ; --或门逻辑描述USE IEEE.STD_LOGIC_1164.ALL;ENTITY or2a ISPORT (a, b :IN STD_LOGIC;c : OUT STD_LOGIC );END ENTITY or2a;ARCHITECTURE one OF or2a ISBEGINc <= a OR b ;END ARCHITECTURE one ;( 3) 1 位二进制全加器顶层设计描述:LIBRARY IEEE; --1 位二进制全加器顶层设计描述USE IEEE.STD_LOGIC_1164.ALL;ENTITY f_adder ISPORT (ain, bin, cin : IN STD_LOGIC;cout , sum: OUT STD_LOGIC );END ENTITY f_adder;ARCHITECTURE fd1 OF f_adder ISCOMPONENT h_adder--调用半加器声明语句PORT ( 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; --定义 3 个信号作为内部的连接线。
EDA的实验报告
杭州电子科技大学实验报告实验课程名称实实班姓学指导教验验序内号容级名号师eda技术 1 分频器与频率计设计 123 吕文 123 黄某二○一四年 4月 18 日一、实验的目的与要求实验名称:分频器与频率计设计实验目的:1、初识verilog hdl语言熟练verilog 的语法2、学习quartus调用modelsim进行仿真3、掌握用fpga实现简易的分频器与频率计的原理与方法实验要求:1、设计一个可控分频器,输入20mhz或 12mhz 时钟(可选择其中一种),输出100hz~10khz,输出100hz ~ 10khz,输出频率数控可调(按键或者使用in-system sources and probes),输出波形占空比为50%,接蜂鸣器;2、设计一个简易频率计,输入为方波,测量频率的范围100hz ~ 9999hz ,测量精度<1%,频率计输出可以接数码管或者使用in-system sources and probes观察3、分频器输出接频率计的输入二、实验原理分频器的原理:把输入的信号作为计数脉冲,由于计数器的输出端口是按一定规律输出脉冲的,所以对不同的端口输出的信号脉冲,就可以看作是对输入信号的”分频“。
频率计是对信号的频率进行测量并显示测量结果。
原理就是在1秒钟内对时钟计数,得到的数字就是频率大小。
频率计的设计是用一个标准的时钟20mhz来做参照,以1s钟为周期,为20000000个周期,同时定义一个计数的变量q ,当输入的端口出现上升沿的时候,变量加1,那么在一秒钟内cout的数值即为,该波形的频率。
最后将分频器的输出端口接入频率计的输入端口,用频率计来测量波形的频率大小,通过比较实际的频率fre1与测出来的频率大小fre2,就知道了该频率计的误差。
三、实验内容实验步骤 1、大概的把框架建起来,把思路想好2、先设计一个符合要求的分频器3、进行仿真,看效果3、再设计一个符合要求的频率计4、用modelsim进行仿真5、把这两部分连接起来,最后进行仿真得到结果6、得到频率计的测频误差本实验分频器的时钟是20mhz,分频出来的是100hz~10khz的波形,那么就定义一个变量当做分频比[17:0] div ,可以用按键来控制div的大小,继而实现分频出来的大小。
EDA实验报告
中国地质大学(武汉)EDA试验报告姓名:班号:__ ____ __学号:院系:机械与电子信息学院老师:专业:_ 通信工程___ ___目录1 软件及VHDL语言的简单介绍 (1)1.1 可编程器件与Quartus II使用 (1)1.2 VHDL语言简介 (3)2 实验一3/8 译码器和半加器的实现 (4)2.1 3/8 译码器 (4)2.2 半加器 (5)3 实验二 BCD七段显示译码实验 (6)4 实验三分频器的设计实现 (8)5 实验四动态扫描数码显示器 (10)6 实验五多功能数字钟的实现 (12)7实验感想 (20)软件及VHDL 语言的简单介绍一)可编程器件与Quartus II 使用1、总体思想2、具体操作步骤一 新建一个项目建立工编写设计文指定设计约文本输入图形输入器件选择管脚分编译仿 真编程 配分析 综建立波形文件输入仿真节PS 模式 JTAG 模式步骤二采用VHDL语言编写程序二)VHDL语言的简单介绍1、VHDL的由来VHDL语言的英文全名是Very High Speed Integrated Circuit Hardware Description Language 即超高速集成电路硬件描述语言。
它是70年代和80年代初,由美国国防部为他们的超高速集成电路VHSIC计划提出的硬件描述语言,它支持硬件的设计、综合、验证和测试。
1986年3月,IEEE开始致力于VHDL的标准化工作,讨论VHDL语言标准。
IEEE于1987年12月公布了VHDL的标准版本(IEEE STD 1076/1987);1993年VHDL重新修订,形成新的标准即IEEE STD 1076-1993,后来有相继颁布了IEEE STD 1076-2002和IEEE STD 1076-2008标准。
2、VHDL的优点1)用于设计复杂的、多层次的设计。
支持设计库和设计的重复使用。
2)与硬件独立,一个设计可用于不同硬件结构,而且设计时不必了解过多的硬件细节。
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位全加器进行时序仿真。
数电实验eda工具软件的使用实验报告
数电实验eda工具软件的使用实验报告数电实验eda工具软件的使用实验报告篇一:E DA工具软件的使用实验报告实验报告一、实验名称:EDA工具软件的使用二、实验目的:初步掌握软件的使用方法;初步掌握设计电路的图形输入法。
三、实验任务:利用图形输入法,输入、仿真、简单的逻辑电路,以掌握软件的使用方法。
四、实验设备与元器件:1.计算机2.Quartu sⅡ软件五、实验要求:1. 采用与、或、非门,设计异或门,仿真其功能并与理论值比较;2. 采用与、或、非门,设计组合电路F,仿真其功能并与理论值比较。
六、实验设计说明:1.异或门逻辑表达式为: F=A?B=A+B2.组合电路的逻辑表达式为:F=AC?BC?B(AC?AC) 七、实验内容和步骤:1.异或门:真值表:*QuartusⅡ软件设计电路:在QuartusⅡ软件里建立工程—B lck Diagra m/Schemati c File 文件后按异或门逻辑表达式设计好电路实验电路图:按上图设计好电路后,通过编译无错后再进行仿真。
仿真图:由图知仿真结果延迟了约11ns,其结果与列出的真值表相同。
所以该实验电路是正确的。
2.组合电路:真值表:在Quart usⅡ软件里建立工程—Blck Dia gram/Schem atic File文件后按组合电路逻辑表达式设计好电路。
组合电路图:按上图设计好电路后,通过编译无错后再进行仿真。
仿真图:由图知仿真结果延迟了约10ns,其结果与列出的真值表相同。
所以该实验电路是正确的。
八、实验总结:通过本次实验已经初步掌握了QuartusⅡ软件的使用方法,并掌握了如何利用Qua rtusⅡ软件进行利用图形输入法输入和仿真简单的逻辑电路。
篇二:数字电路与ED A实践实验报告实验名称逻辑代数基础与逻辑门电路仿真实验课程名称数字电路与E DA实践实验时间201X年XX 月XX日(第2-5周)实验名称组合逻辑电路仿真实验课程名称数字电路与EDA实践实验时间 201X年XX月XX日(第6-7周)实验名称触发器仿真实验课程名称数字电路与EDA实践实验时间201X年XX月X X日(第8-9周)实验名称时序逻辑电路仿真实验课程名称数字电路与EDA实践实验时间 201X年XX月XX日(第10-11周)实验名称脉冲波形的产生与整形电路仿真实验课程名称数字电路与EDA实践实验时间 201X年XX月X X日(第12-13周)篇三:E DA实验报告《数字电路与系统设计》E DA实验报告班级:021014学号:021012** 姓名:张** 西安电子科技大学电子工程学院双路并行交通灯实验设计一、实验功能介绍本系统是根据实际交通情况,利用veri lg语言设计,并在B asys2 FPGA开发板上实现的双路并行交通灯。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学院:机电学院班级: 072081-24学号:********** 组员: ******** 指导教师:********基础实验实验一组合逻辑设计一、实验目的:1.通过一个简单的3-8译码器的设计,让学生掌握组合逻辑电路的设计方法。
2.掌握组合逻辑电路的静态测试方法。
3.初步了解MAXPLUSII原理图输入设计的全过程。
二、实验的硬件要求:1、主芯片:EP1K10TC100—32、时钟源3、八位七段数码显示管4、四位拨码开关。
5、输入:DIP拨码开关3位。
6、输出:LED灯。
三、实验器材:1.超想-3000TB综合实验仪1台2.HK51TB仿真板 1块四、实验内容:1、用拨码开关产生8421BCD码,用CPLD产生字形编码电路和扫描驱动电路,然后进行仿真,观察波形,正确后进行设计实现,适配化分。
调节时钟频率,感受“扫描”的过程,并观察字符亮度和显示刷新的效果。
2、编一个简单的从0~F轮换显示十六进制的电路。
五、实验原理:三八译码器三输入,八输出。
当输入信号按二进制方式的表示为N时,输出端从零标记到八。
因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位有效的情况下,能表示所有的输入组合。
四位拨码开关提供8421BCD码,经译码电路后成为7段数码管的字形显示驱动信号。
(A…G)扫描电路通过可调时钟输出片选地址SEL[2..0]。
由SEL[2..0]和A..G决定了8位中的哪一位显示和显示什么字形.SEL[2..0]变化的快慢决定了扫描频率的快慢。
1、参考电路(时钟频率>40HZ,如图2—4—1)图1—5—12、参考电路(时钟频率<2HZ,如图2—4—2)图1—5—2六、实验连线:输入信号:D3,D2,D1,D0所对应的管脚同四位拨码开关相连;清零信号RESET 所对应的管脚同按键开关相连;时钟CLK 所对应的管脚同实验箱上的时钟源相连;输出信号:代表扫描片选地址信号SEL2,SEL1,SEL0的管脚同四位扫描驱动地址的低3位相连,最高位地址接“0”(也可悬空);代表7段字码驱动信号A,B,C,D,E,F,G的管脚分别同扫描数码管的段输入a,b,c,d,e,f,g相连。
七、实验步骤:1.进入WINDOWS操作系统,打开MAXPLUSII。
2.设计输入。
3.保存原理图。
4.用相关软件对程序进行管脚的定义、编译、仿真、下载,完成整个实验的设计。
八、实验程序图七、实验结果:拨动三个拨码输入开关,对应的LED指示灯点亮,实现译码功能,即实现了三个开关的任意组合。
应用实验实验二梁祝音乐演奏实验一、实验目的:1.了解普通扬声器的工作原理。
2.使用FPGA产生不同的音乐频率。
3.进一步体验FPGA的灵活性。
二、实验硬件要求:1.375KHz信号源。
2.FPGA EP1K10TC100—3主芯片。
3.扬声器。
三、实验原理:本实验是完成一小段音乐程序的开发,然后再用扬声器进行试听。
下面主要介绍一下完成本实验的几个主要部分的工作原理。
1、音符的产生:音符的产生是利用计数器对输入的时钟信号进行分频,然后输出不同的频率来控制扬声器发不同的声音。
计数器必须是模可变的计数器,也就是其初始计数值可变,这样便可以对其进行初始化,使其从不同的初始值开始计数,实现对输入时钟信号的不同分频。
2、节拍的产生:节拍也是利用计数器来实现,如果某一个音符需要维持的时间比较长,那么就可以在此计数器从计数值A到计数值B之间都维持该音符,很显然,A和B之间的间隔越大,那么该音符维持的时间也就越长。
3、乐谱的存储:乐谱是一个固定的组合电路,根据不同的输入值,然后输出一个固定的值,该值就是音符产生计数器的分频的初始值。
适当的选择这些计数器和组合电路,便可完成不同的乐曲和不同节奏。
四、实验内容及步骤:本实验要完成的任务是设计一个驱动扬声器产生梁祝音乐的程序,设计步骤如下:1、编写音乐输出的VHDL代码。
2、用MaxPlusII对其进行编译仿真。
3、在仿真确定无误后,选择芯片ACEX1K10TC100—3。
4、给芯片进行管脚绑定,在此进行编译。
5、根据自己帮点的管脚,在实验箱上对扬声器接口和FPGA之间进行正确连线。
6、给目标板下载代码,观看实验结果。
五、实验连线:Clk:时钟输入信号,接375KHz的时钟源。
Spk:输出,接扬声器部分的输入端。
六、实验VHDL程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;----------------------------entity music isport( clk:in std_logic;spk:buffer std_logic);end music;---------------------architecture behave of music issignal tone : std_logic_vector(10 downto 0);signal tone_count : std_logic_vector(10 downto 0);signal tone_index : integer range 0 to 15;signal clk10_count : std_logic_vector(17 downto 0);signal time : integer range 0 to 150;signal clk10 : std_logic;beginprocess(clk) --generate 10hz clock signalbeginif(clk'event and clk='1') thenclk10_count<=clk10_count+1;if(clk10_count=16#3fff#) thenclk10<=not clk10;end if;end if;end process;process(clk10)beginif(clk10'event and clk10='1') thenif(time=150) thentime<=0;elsetime<=time+1;end if;end if;end process;process(clk10)beginif(clk10'event and clk10='1') thencase time iswhen 0=>tone_index<=3;when 1=>tone_index<=3;when 2=>tone_index<=3;when 3=>tone_index<=3;--when 4=>tone_index<=5;when 6=>tone_index<=5;when 7=>tone_index<=6;-- when 8=>tone_index<=8;when 9=>tone_index<=8;when 10=>tone_index<=8;when 11=>tone_index<=9;-- when 12=>tone_index<=6;when 13=>tone_index<=8;when 14=>tone_index<=5;when 15=>tone_index<=5;-- when 16=>tone_index<=12; when 17=>tone_index<=12; when 18=>tone_index<=12; when 19=>tone_index<=15;-- when 20=>tone_index<=13; when 21=>tone_index<=12; when 22=>tone_index<=10; when 23=>tone_index<=12;-- when 24=>tone_index<=9;when 25=>tone_index<=9;when 26=>tone_index<=9;when 27=>tone_index<=9;-- when 28=>tone_index<=9;when 29=>tone_index<=9;when 30=>tone_index<=0;when 31=>tone_index<=0;-- when 32=>tone_index<=9;when 33=>tone_index<=9;when 34=>tone_index<=9;when 35=>tone_index<=10;-- when 36=>tone_index<=7;when 37=>tone_index<=7;when 38=>tone_index<=6;when 39=>tone_index<=6;-- when 40=>tone_index<=5;when 41=>tone_index<=5;when 42=>tone_index<=5;when 43=>tone_index<=6;-- when 44=>tone_index<=8;when 45=>tone_index<=8;when 46=>tone_index<=9;when 47=>tone_index<=9;-- when 48=>tone_index<=3;when 49=>tone_index<=3;when 50=>tone_index<=8;when 51=>tone_index<=8;-- when 52=>tone_index<=6;when 53=>tone_index<=5;when 54=>tone_index<=6;when 55=>tone_index<=8;--when 57=>tone_index<=5;when 58=>tone_index<=5;when 59=>tone_index<=5;-- when 60=>tone_index<=5;when 61=>tone_index<=5;when 62=>tone_index<=0;when 63=>tone_index<=0;---- when 64=>tone_index<=10;when 65=>tone_index<=10;when 66=>tone_index<=10;when 67=>tone_index<=12;-- when 68=>tone_index<=7;when 69=>tone_index<=7;when 70=>tone_index<=9;when 71=>tone_index<=9;-- when 72=>tone_index<=6;when 73=>tone_index<=8;when 74=>tone_index<=5;when 75=>tone_index<=5;-- when 76=>tone_index<=5;when 77=>tone_index<=5;when 78=>tone_index<=5;when 79=>tone_index<=5;-- when 80=>tone_index<=5;when 81=>tone_index<=0;when 82=>tone_index<=0;when 83=>tone_index<=3;-- when 84=>tone_index<=5;when 85=>tone_index<=3;when 86=>tone_index<=5;when 87=>tone_index<=5;-- when 88=>tone_index<=6;when 89=>tone_index<=7;when 90=>tone_index<=9;when 91=>tone_index<=6;-- when 92=>tone_index<=6;when 93=>tone_index<=6;when 94=>tone_index<=6;when 95=>tone_index<=6;-- when 96=>tone_index<=6;when 97=>tone_index<=5;when 98=>tone_index<=6;when 99=>tone_index<=8;-- when 100=>tone_index<=8;when 101=>tone_index<=8;when 102=>tone_index<=9;when 103=>tone_index<=12;-- when 104=>tone_index<=12; when 105=>tone_index<=12; when 106=>tone_index<=10;when 107=>tone_index<=9;--when 108=>tone_index<=9;when 109=>tone_index<=10;when 110=>tone_index<=9;when 111=>tone_index<=8;--when 112=>tone_index<=8;when 113=>tone_index<=6;when 114=>tone_index<=5;when 115=>tone_index<=3;--when 116=>tone_index<=3;when 117=>tone_index<=3;when 118=>tone_index<=3;when 119=>tone_index<=8;--when 120=>tone_index<=8;when 121=>tone_index<=8;when 122=>tone_index<=8;when 123=>tone_index<=6;--when 124=>tone_index<=8;when 125=>tone_index<=6;when 126=>tone_index<=5;when 127=>tone_index<=3;--when 128=>tone_index<=5;when 129=>tone_index<=6;when 130=>tone_index<=8;when 131=>tone_index<=5;--when 132=>tone_index<=5;when 133=>tone_index<=5;when 134=>tone_index<=5;when 135=>tone_index<=5;--when 136=>tone_index<=5;when 137=>tone_index<=5;when 138=>tone_index<=0;when 139=>tone_index<=0;--when others=>tone_index<=0;end case;end if;end process;process(tone_index)begincase tone_index iswhen 0=>tone<="11111111111"; --no output when 1=>tone<="01100000101"; --773when 2=>tone<="01110010000"; --912when 3=>tone<="10000001100"; --1036when 5=>tone<="10010101101"; --1197when 6=>tone<="10100001010"; --1290when 7=>tone<="10101011100"; --1372when 8=>tone<="10110000010"; --1410when 9=>tone<="10111001000"; --1480when 10=>tone<="11000000110"; --1542when 12=>tone<="11001010110"; --1622when 13=>tone<="11010000100"; --1668when 15=>tone<="11011000000"; --1728when others=>tone<="11111111111"; --others:no outputend case;end process;process(clk) --control the frequence of the speakerbeginif(clk'event and clk='1') thenif(tone_count=16#7ff#) thentone_count<=tone;if(tone<2047) thenspk<=not spk;end if;elsetone_count<=tone_count+1;end if;end if;end process;end behave;七、实验结果接6M时钟频率,蜂鸣器奏响比较动听的《梁祝》音乐,如用其他频率,音乐会走调失真。