地大机电EDA实验报告.docx
- 文档编号:4629973
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:27
- 大小:573.58KB
地大机电EDA实验报告.docx
《地大机电EDA实验报告.docx》由会员分享,可在线阅读,更多相关《地大机电EDA实验报告.docx(27页珍藏版)》请在冰豆网上搜索。
地大机电EDA实验报告
基础实验
实验一组合逻辑设计
一、实验目的:
1.通过一个简单的3-8译码器的设计,让学生掌握组合逻辑电路的设计方法。
2.掌握组合逻辑电路的静态测试方法。
3.初步了解MAXPLUSII原理图输入设计的全过程。
二、实验的硬件要求:
1、主芯片:
EP1K10TC100—3
2、时钟源
3、八位七段数码显示管
4、四位拨码开关。
5、输入:
DIP拨码开关3位。
6、输出:
LED灯。
三、实验器材:
1.超想-3000TB综合实验仪1台
2.HK51TB仿真板1块
四、实验内容:
1、用拨码开关产生8421BCD码,用CPLD产生字形编码电路和扫描驱动电路,然后进行仿真,观察波形,正确后进行设计实现,适配化分。
调节时钟频率,感受“扫描”的过程,并观察字符亮度和显示刷新的效果。
2、编一个简单的从0~F轮换显示十六进制的电路。
五、实验原理:
三八译码器三输入,八输出。
当输入信号按二进制方式的表示为N时,输出端从零标记到八。
因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位有效的情况下,能表示所有的输入组合。
3-8译码器真值表
输入
输出
A2A1A0
Y7Y6Y5Y4Y3Y2Y1Y0
000
001
010
011
100
101
110
111
00000001
00000010
00000100
00001000
00010000
00100000
01000000
10000000
四位拨码开关提供8421BCD码,经译码电路后成为7段数码管的字形显示驱动信号。
(A…G)扫描电路通过可调时钟输出片选地址SEL[2..0]。
由SEL[2..0]和A..G决定了8位中的哪一位显示和显示什么字形.SEL[2..0]变化的快慢决定了扫描频率的快慢。
1、参考电路(时钟频率>40HZ,如图2—4—1)
图1—5—1
2、
参考电路(时钟频率<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.FPGAEP1K10TC100—3主芯片。
3.扬声器。
三、实验原理:
本实验是完成一小段音乐程序的开发,然后再用扬声器进行试听。
下面主要介绍一下完成本实验的几个主要部分的工作原理。
1、音符的产生:
音符的产生是利用计数器对输入的时钟信号进行分频,然后输出不同的频率来控制扬声器发不同的声音。
计数器必须是模可变的计数器,也就是其初始计数值可变,这样便可以对其进行初始化,使其从不同的初始值开始计数,实现对输入时钟信号的不同分频。
2、节拍的产生:
节拍也是利用计数器来实现,如果某一个音符需要维持的时间比较长,那么就可以在此计数器从计数值A到计数值B之间都维持该音符,很显然,A和B之间的间隔越大,那么该音符维持的时间也就越长。
3、乐谱的存储:
乐谱是一个固定的组合电路,根据不同的输入值,然后输出一个固定的值,该值就是音符产生计数器的分频的初始值。
适当的选择这些计数器和组合电路,便可完成不同的乐曲和不同节奏。
四、实验内容及步骤:
本实验要完成的任务是设计一个驱动扬声器产生梁祝音乐的程序,设计步骤如下:
1、编写音乐输出的VHDL代码。
2、用MaxPlusII对其进行编译仿真。
3、在仿真确定无误后,选择芯片ACEX1K10TC100—3。
4、给芯片进行管脚绑定,在此进行编译。
5、根据自己帮点的管脚,在实验箱上对扬声器接口和FPGA之间进行正确连线。
6、给目标板下载代码,观看实验结果。
五、实验连线:
Clk:
时钟输入信号,接375KHz的时钟源。
Spk:
输出,接扬声器部分的输入端。
六、实验VHDL程序:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
----------------------------
entitymusicis
port(clk:
instd_logic;
spk:
bufferstd_logic);
endmusic;
---------------------
architecturebehaveofmusicis
signaltone:
std_logic_vector(10downto0);
signaltone_count:
std_logic_vector(10downto0);
signaltone_index:
integerrange0to15;
signalclk10_count:
std_logic_vector(17downto0);
signaltime:
integerrange0to150;
signalclk10:
std_logic;
begin
process(clk)--generate10hzclocksignal
begin
if(clk'eventandclk='1')then
clk10_count<=clk10_count+1;
if(clk10_count=16#3fff#)then
clk10<=notclk10;
endif;
endif;
endprocess;
process(clk10)
begin
if(clk10'eventandclk10='1')then
if(time=150)then
time<=0;
else
time<=time+1;
endif;
endif;
endprocess;
process(clk10)
begin
if(clk10'eventandclk10='1')then
casetimeis
when0=>tone_index<=3;
when1=>tone_index<=3;
when2=>tone_index<=3;
when3=>tone_index<=3;--
when4=>tone_index<=5;
when5=>tone_index<=5;
when6=>tone_index<=5;
when7=>tone_index<=6;--
when8=>tone_index<=8;
when9=>tone_index<=8;
when10=>tone_index<=8;
when11=>tone_index<=9;--
when12=>tone_index<=6;
when13=>tone_index<=8;
when14=>tone_index<=5;
when15=>tone_index<=5;--
when16=>tone_index<=12;
when17=>tone_index<=12;
when18=>tone_index<=12;
when19=>tone_index<=15;--
when20=>tone_index<=13;
when21=>tone_index<=12;
when22=>tone_index<=10;
when23=>tone_index<=12;--
when24=>tone_index<=9;
when25=>tone_index<=9;
when26=>tone_index<=9;
when27=>tone_index<=9;--
when28=>tone_index<=9;
when29=>tone_index<=9;
when30=>tone_index<=0;
when31=>tone_index<=0;--
when32=>tone_index<=9;
when33=>tone_index<=9;
when34=>tone_index<=9;
when35=>tone_index<=10;--
when36=>tone_index<=7;
when37=>tone_index<=7;
when38=>tone_index<=6;
when39=>tone_index<=6;--
when40=>tone_index<=5;
when41=>tone_index<=5;
when42=>tone_index<=5;
when43=>tone_index<=6;--
when44=>tone_index<=8;
when45=>tone_index<=8;
when46=>tone_index<=9;
when47=>tone_index<=9;--
when48=>tone_index<=3;
when49=>tone_index<=3;
when50=>tone_index<=8;
when51=>tone_index<=8;--
when52=>tone_index<=6;
when53=>tone_index<=5;
when54=>tone_index<=6;
when55=>tone_index<=8;--
when56=>tone_index<=5;
when57=>tone_index<=5;
when58=>tone_index<=5;
when59=>tone_index<=5;--
when60=>tone_index<=5;
when61=>tone_index<=5;
when62=>tone_index<=0;
when63=>tone_index<=0;----
when64=>tone_index<=10;
when65=>tone_index<=10;
when66=>tone_index<=10;
when67=>tone_index<=12;--
when68=>tone_index<=7;
when69=>tone_index<=7;
when70=>tone_index<=9;
when71=>tone_index<=9;--
when72=>tone_index<=6;
when73=>tone_index<=8;
when74=>tone_index<=5;
when75=>tone_index<=5;--
when76=>tone_index<=5;
when77=>tone_index<=5;
when78=>tone_index<=5;
when79=>tone_index<=5;--
when80=>tone_index<=5;
when81=>tone_index<=0;
when82=>tone_index<=0;
when83=>tone_index<=3;--
when84=>tone_index<=5;
when85=>tone_index<=3;
when86=>tone_index<=5;
when87=>tone_index<=5;--
when88=>tone_index<=6;
when89=>tone_index<=7;
when90=>tone_index<=9;
when91=>tone_index<=6;--
when92=>tone_index<=6;
when93=>tone_index<=6;
when94=>tone_index<=6;
when95=>tone_index<=6;--
when96=>tone_index<=6;
when97=>tone_index<=5;
when98=>tone_index<=6;
when99=>tone_index<=8;--
when100=>tone_index<=8;
when101=>tone_index<=8;
when102=>tone_index<=9;
when103=>tone_index<=12;--
when104=>tone_index<=12;
when105=>tone_index<=12;
when106=>tone_index<=10;
when107=>tone_index<=9;--
when108=>tone_index<=9;
when109=>tone_index<=10;
when110=>tone_index<=9;
when111=>tone_index<=8;--
when112=>tone_index<=8;
when113=>tone_index<=6;
when114=>tone_index<=5;
when115=>tone_index<=3;--
when116=>tone_index<=3;
when117=>tone_index<=3;
when118=>tone_index<=3;
when119=>tone_index<=8;--
when120=>tone_index<=8;
when121=>tone_index<=8;
when122=>tone_index<=8;
when123=>tone_index<=6;--
when124=>tone_index<=8;
when125=>tone_index<=6;
when126=>tone_index<=5;
when127=>tone_index<=3;--
when128=>tone_index<=5;
when129=>tone_index<=6;
when130=>tone_index<=8;
when131=>tone_index<=5;--
when132=>tone_index<=5;
when133=>tone_index<=5;
when134=>tone_index<=5;
when135=>tone_index<=5;--
when136=>tone_index<=5;
when137=>tone_index<=5;
when138=>tone_index<=0;
when139=>tone_index<=0;--
whenothers=>tone_index<=0;
endcase;
endif;
endprocess;
process(tone_index)
begin
casetone_indexis
when0=>tone<="11111111111";--nooutput
when1=>tone<="01100000101";--773
when2=>tone<="01110010000";--912
when3=>tone<="10000001100";--1036
when5=>tone<="10010101101";--1197
when6=>tone<="10100001010";--1290
when7=>tone<="10101011100";--1372
when8=>tone<="10110000010";--1410
when9=>tone<="10111001000";--1480
when10=>tone<="11000000110";--1542
when12=>tone<="11001010110";--1622
when13=>tone<="11010000100";--1668
when15=>tone<="11011000000";--1728
whenothers=>tone<="11111111111";--others:
nooutput
endcase;
endprocess;
process(clk)--controlthefrequenceofthespeaker
begin
if(clk'eventandclk='1')then
if(tone_count=16#7ff#)then
tone_count<=tone;
if(tone<2047)then
spk<=notspk;
endif;
else
tone_count<=tone_count+1;
endif;
endif;
endprocess;
endbehave;
七、实验结果
接6M时钟频率,蜂鸣器奏响比较动听的《梁祝》音乐,如用其他频率,音乐会走调失真。
实验八步进电机控制实验
一、实验目的
1、了解步进电机的工作原理。
2、掌握用FPGA产生驱动步进电机的时序。
3、掌握用FPGA来控制步进电机转动的整个过程。
二、硬件要求
1、步进电机。
2、主芯片FPGAEP1K10TC100—3。
3、8个按键和一个拨挡开关。
4、可变时钟源。
三、实验原理
步进电机是工业过程控制及仪表中常用的控制元件之一,例如在机械装置中可以用丝杆把角度变为直线位移,也可以用步进电机带动螺旋电位器,调节电压或电源,从而实现对执行机械的控制。
步进电机可以直接用数字信号驱动,使用非常方便。
步进电机还具有快速启停、精确步进和定位等特点,因而在数控机床、绘图仪、打印机以及光学仪器中得到广泛的应用。
步进电机是工业控制及仪表中常用的控制元件之一,例如在机械装置中可以精确控制机械装置的旋转角度、移动距离等。
步进电机可以直接用数字信号来驱动,使用非常方便。
另外步进电机还具有快速起停、精确步进和定位的特点。
步进电机实际上是一个数据/角度转换器,三相步进电机的结构原理如下图所示:
三相步进电机的结构示意图
从图中可以看出,电机的定子有六个等分的磁极,A、A’、B、B’、C、C’,相邻的两个磁极之间夹角为60°,相对的两个磁极组成一组(A—A’,B—B’,C—C’),当某一绕组有电流通过时,该绕组相应的两个磁极形成N极和S极,每个磁极上各有五个均分布的矩形小齿,电机的转子上有40个矩形小齿均匀地分布在圆周上,相邻两个齿之间夹角为9°。
⑴当某一相绕组通电时,对应的磁极就产生磁场,并与转子转动一定的角度,使转子和定子的齿相互对齐。
由此可见,错齿是促使步进电机旋转的原因。
例如在三相三拍控制方式中,若A相通电,B、C相都不通电,在磁场作用下使转子齿和A相的定子齿对齐,我们以此作为初始状态。
设与A相磁极中心线对齐的转子的齿为0号齿,由于B相磁极与A相磁极相差120°不是9°的整数倍(120÷9=132/3),所以此时转子齿没有与B相定子的齿对应,只是第13号小齿靠近B相磁极的中心线,与中心线相差3°,如果此时突然变为B相通电,A、C相不通电,则B相磁极迫使13号转子齿与之对齐,转子就转动3°,这样使电机转子一步。
如果按照A—AB—B—BC—C—CA—A次序通电则为正转。
通常用三相六拍环形脉冲分配器产生步进脉冲。
⑵运转速度的控制。
若改变ABC三相绕组高低电平的宽度,就会导致通电和断电的变化速率变化,使电机转速改变,所以调节脉冲的周期就可以控制步进电机的运转速度。
⑶旋转的角度控制。
因为输入一个CP脉冲使步进电机三相绕组状态变化一次,并相应地旋转一个角度,所以步进电机旋转的角度由输入的CP脉冲数确定。
本实验箱所使用步进电机为4相步进电机,最小旋转角度为1.8度,起正向转动控制时序如下所示,每一个脉冲控制其转过1.8度。
反向转动控制时序如下:
四、实验内容及步骤
本实验需要完成的任务是编写VHDL代码来驱动步进电机动作,通过拨动开关使其正转、反转;通过按下相应的按键开关使其旋转相应的角度。
实验步骤如下:
1、编写驱动步进电机旋转的VHDL代码。
2、用MaxPlusII对其进行编译仿真。
3、在仿真确定无误后,选择芯片ACEX1KEP1K10TC100-3。
4、给芯片进行管脚绑定,在此进行编译。
5、根据自己绑定的管脚,在实验箱上对步进电机和FPGA之间进行正确连线。
6、给目标板下载代码,按动相应的按键,观看实验结果与实验内容是否相符。
五、实验连线
如果是调用的本书提供的VHDL代码,则实验连线如下:
Clk:
FPGA工作所需时钟信号,输入为256Hz。
key1_8、key5_4、key9、key18、key45、key90、key180、key360:
分别代表旋转1.8度、5.4度、9度、18度、45度、90度、180度和260度,分别与8个按键相连,按下相应的按键可以是步进电机转过相应的角度。
Keyorder:
旋转方向控制信号与一个拨动开关相连,高电平时正转;低电平时反转。
Astep、bstep、cstep、dstep:
分别与步进电机模块的A、B、C和D相连。
六、原理与模块介绍
6.1步进电机实现三相三拍和正反转功能
该部分实现步进电机的正反转和三相三拍功能。
原理图为图2.1所示。
用两个7474双D触发器加逻辑门实现。
每当复位端有低电平脉冲输入,该电路自动置入初始相位AB(110)。
正转通电顺序为:
AB→BC→CA→AB→…反转通电顺序为:
AB→CA→BC→AB→…
图8—6—1
6.2步进电机实现三相六拍和正反转功能
该部分实现步进电机的正反转和三相六
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机电 EDA 实验 报告