哈工大数电课程设计设.docx
- 文档编号:16903357
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:20
- 大小:949.19KB
哈工大数电课程设计设.docx
《哈工大数电课程设计设.docx》由会员分享,可在线阅读,更多相关《哈工大数电课程设计设.docx(20页珍藏版)》请在冰点文库上搜索。
哈工大数电课程设计设
HarbinInstituteofTechnology
课程设计说明书(论文)
课程名称:
电子技术课程设计
设计题目:
基于EEPROM的可编程波形发生器
院系:
电气工程及其自动化
班级:
1206161
设计者:
张旭
学号:
1120610831
指导教师:
康磊
设计时间:
2014年12月4日
哈尔滨工业大学
哈尔滨工业大学课程设计任务书
姓名:
张旭院(系):
电气工程及其自动化学院
专业:
电气工程班号:
1206161
任务起至日期:
2014年12月1日至2014年12月14日
课程设计题目:
基于EEPROM的可编程波形发生器
已知技术参数和设计要求:
(1)波形发生器能够产生方波、三角波、锯齿波和正弦波4种波形;
(2)输出波形周期T=1s;
(3)4种波形可选择输出。
工作量:
(1)完成电路设计、器件选取、电路搭建、电路联调、实验测试等工作;
(2)两周内完成电路验收,并提交课程设计报告纸质版、电子版各1份。
工作计划安排:
2014年12月1日——2014年12月2日完成电路各部分和拓展部分的设计与验证
2014年12月3日调试硬件电路以及FPGA的编程
2014年12月4日调试、验收、答辩
同组设计者及分工:
张旭:
硬件电路搭建,MATLAB做波形曲线并参与完成FPGA部分
代问天:
参与硬件电路搭建,参数计算,理论分析以及主要完成FPGA程序及调试
张超:
硬件电路搭建,各个参数计算,理论分析以及仿真验证
指导教师签字___________________
年月日
教研室主任意见:
教研室主任签字___________________
年月日
*注:
此任务书由课程设计指导教师填写。
基于EEPROM的可编程波形发生器
摘要:
在计算机控制、电子测量、通讯与电视等系统中,常常要用到各种模拟连续波形,如锯齿波、三角波、正弦波等。
本系统设计以555定时器构成多谐振荡器,产生脉冲;用FPGA构建256进制计数器和ROM,ROM存有产生波形的数据用于产生方波、三角波、锯齿波和正弦波四种波形;输出波形周期T=1s,输出波形的偏移量在-2.3V至+1.7V范围内可调输出波形的峰峰值在10V左右;四种波形可选择输出,分别输出锯齿波、三角波、方波和正弦波。
本系统使用BASYS2开发板,开发板上提供了按键和数码管,并且按键已经经过电容消抖,并用FPGA构建一个4进制计数器。
将上述两部分结合可以构成波形选择电路。
LM324运放电路采用电位器调节,可消除波形失真,并实现波形偏移量可调。
关键词:
EEPROM;FPGA;BASYS2;波形发生器
1选择原因
1.1555时钟电路
555定时器是一种用途广泛的模拟数字混合集成电路。
它可以构成单稳态触发器、多谐振荡器、压控振荡器等多种应用电路。
从555定时器的功能表可以看出几个特点:
1.有两个阈值电平,分别是电源电压的1/3和2/3;
2.输出从低到高,从高到低有回差;
3.输出端和放电端的状态一致,要通都通,要断都断;
4.输出与两触发端是反相关系。
555定时器构成多谐振荡器
555定时器构成的多谐振荡器如图所示。
它是将两个触发端合并在一起,放电端接于两电阻之间。
利用电容器的充放电来代替外加触发信号,所以,电容器上的电压信号应该在两个阈值之间按指数规律转换。
充电回路是RA、RB和C,此时相当输入是低电平,输出是高电平。
当电容器充电达到2Vcc/3时,即输入达到高电平时,电路的状态发生翻转,输出为低电平,电容器开始放电。
当电容器放电达到Vcc/3时,电路的状态又开始翻转,如此不断循环。
电容器之所以能够放电,是由于有放电端7脚的作用,因7脚的状态与输出端一致,7脚为低电平电容器即放电。
1.2D/A转换器件
自然界中存在的物理量大都是模拟量,如温度、时间、角度、速度等。
随着数字技术的迅速发展,尤其是计算机的广泛应用,用数字电路处理模拟信号的情况非常普遍。
D/A转换器是利用电阻网络和模拟开关,将二进制数D转换为与之成比例的模拟量。
常用的解码网络有权电阻解码网络和倒T形电阻解码网络。
权电阻解码网络
D/A转换器是由电阻解码网络、电子开关和运算放大器组成。
Sn-1~S0是n个电子开关,受输入代码dn-1~d0控制,当该位的值为“1”时,开关将电阻接至参考电压源VREF;当该位为“0”时,开关将电阻接地。
D/A转换器是利用电阻网络和模拟开关,将二进制数D转换为与之成比例的模拟量。
电阻解码网络的优点是所用的电阻数少,缺点是阻值分散,集成电路制作困难。
集成D/A转换器DAC0832
DAC0832的典型应用
其引脚功能为:
直通工作方式:
WR1、WR2、XFER及CS接低电平,ILE接高电平。
即不用写信号控制,外输入数据直通内部8位D/A转换器的数据输入端。
单缓冲工作方式:
WR2、XFER接低电平,使8位DAC寄存器处于直通状态,输入数据经8位输入寄存器缓冲控制后直接进入D/A转换器。
双缓冲工作方式:
两个寄存器均处于受控状态,输入数据要经过两个寄存器缓冲控制后才进入D/A转换器。
这种工作方式可以用来实现多片D/A转换器的同步输出。
转换精度:
分辨率—当输入数字量的最低位(LSB)发生变化引起的输出电压的变化量。
常用输入数字量的位数表示分辨率
转换误差—转换器实际能达到的转换精度。
转换误差用LSB的倍数表示。
转换误差分静态误差和动态误差。
转换速度:
建立时间tset—它是在输入数字量各位由全0变为全1,或由全1变为全0,输出电压达到某一规定值所需要的时间
转换速率SR—即输入数字量的各位由全0变为全1,或由全1变为0时,输出电压uo的变化率。
这个参数与运算放大器的压摆率类似。
1.3BASYS2开发板
波形发生电路的主要部分选择由FPGA构建,因为FPGA是一种新型的高密度PLD,采用CMOS-SRAM工艺制作,其内部由许多独立的可编程逻辑模块组成,逻辑块之间可以灵活的相互连接。
因此使用FPGA可以很大程度的减少外部连线,加强电路的可靠性。
本次设计所使用的BASYS2开发板一个电路设计实现平台,任何人都可以通过它来搭建一个真正的数字电路。
Basys2是围绕着一个XilinxSpartan-3EFPGA芯片和一个AtmelAT90USBUSB控制器搭建的,它提供了完整、随时可以使用的硬件平台,并且它适合于从基本逻辑器件到复杂控制器件的各种主机电路。
Basys2板上集成了大量的I/O设备和FPGA所需的支持电路,让您能够构建无数的设计而不需要其他器件。
开发板参数:
●XilinxSpartan3EFPGA,10万或25万门
●FPGA特性18位乘法器,72位高速双端口BlockRAM,以及500MHz+运算能力
●USB2.0高速接口提供FPGA配置和数据传输(相关Adept2.0软件可以免费下载)
●XilinxPlatformFlashROM可以无限次存储FPGA配置
●用户可配置晶振(25,50,100MHz),另附可连接第二个时钟晶振的插座
●三个内置稳压器(1.2V,2.5V,和3.3V),允许使用3.5V-5.5V的外部电源供电
●8个用户可编程LED指示灯,4个七段数码管显示器,4个按键开关,8个滑动开关,1个PS/2接口和1个8位VGA显示接口
●4个6针用户扩展接口,可以用来连接DigilentPMOD附属电路板
●需要Adept2.0或更新版本软件来进行操作
Spartan3E接线原理图:
1.4系统总体框图
2.电路参数计算与FPGA程序
2.1多谐振荡器参数计算
多谐振荡器由555定时器件构成,其原理图如下:
555定时器产生的时钟信号周期T=0.7*(Ra+2Rb)C。
根据AT28C16中烧制的程序可知,该时钟周期T应为输出波形周期的1/128,即T=1/128(s)。
选取电容C=200nF,电阻Rb=20K,电阻Ra=15K+Rc(Rc为5K变阻器)。
C5为去耦电容,选取C5=10nF。
2.2输出运放电路参数计算
输出运放电路采用TL084芯片,其原理图如下:
由公式
得
参数选择合理,但是,当
时,
V,波形发生底部失真。
要想消除失真,需在
处串接变位器进行调节。
2.3FPGA的VHDL程序
2.3.1顶层设计程序代码
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityCandRis
Port(rst:
instd_logic;
key:
instd_logic;
clk:
instd_logic;
RomOut:
outstd_logic_vector(7downto0);
Duan:
outstd_logic_vector(3downto0);
Wei:
outstd_logic_vector(6downto0));
endCandR;
architectureBehavioralofCandRis
COMPONENTTwobai56
PORT(
clk2:
INstd_logic;
clr2:
INstd_logic;
clk2out:
OUTstd_logic_vector(7downto0)
);
ENDCOMPONENT;
COMPONENTChoose
PORT(
Key:
INstd_logic;
Duan:
OUTstd_logic_vector(3downto0);
Wei:
OUTstd_logic_vector(6downto0);
Addr:
OUTstd_logic_vector(1downto0)
);
ENDCOMPONENT;
COMPONENTBXrom
PORT(
a:
INSTD_LOGIC_VECTOR(9DOWNTO0);
spo:
OUTSTD_LOGIC_VECTOR(7DOWNTO0)
);
ENDCOMPONENT;
signalhaddr:
std_logic_vector(1downto0);
signalladdr:
std_logic_vector(7downto0);
begin
Inst_Twobai56:
Twobai56PORTMAP(
clk2=>clk,
clr2=>rst,
clk2out=>laddr
);
Inst_Choose:
ChoosePORTMAP(
Key=>key,
Duan=>Duan,
Wei=>Wei,
Addr=>haddr
);
Inst_rom:
BXromPORTMAP(
a(7downto0)=>laddr,
a(9downto8)=>haddr,
spo=>Romout
);
endBehavioral;
顶层设计实现的电路图:
上图中Inst_Twobai56是256进制计数器,Inst_Choose是4进制计数器及显示译码电路,Inst_rom是由FPGA构建的ROM。
2.3.2256进制计数器程序代码
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
useIEEE.STD_LOGIC_arith.ALL;
entityTwobai56is
Port(clk2:
instd_logic;
clr2:
instd_logic;
clk2out:
outstd_logic_vector(7downto0)
);
endTwobai56;
architectureEightJinzhiofTwobai56is
signaltemp:
std_logic_vector(7downto0);
begin
process(clk2,clr2)
begin
if(clr2='1')then
temp<="00000000";
else
if(clk2'eventandclk2='1')then
if(temp="11111110")then
temp<="00000000";
else
temp<=temp+1;
endif;
endif;
endif;
endprocess;
clk2out<=temp(7downto0);
endEightJinzhi;
256进制计数器的实现电路:
2.3.3按键及显示程序代码
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityChooseis
Port(Key:
instd_logic;
Duan:
Outstd_logic_vector(3downto0);
Wei:
Outstd_logic_vector(6downto0);
Addr:
Outstd_logic_vector(1downto0));
endChoose;
architectureCOSofChooseis
signalQ:
std_logic_vector(1downto0);
begin
Duan<="0111";
process(key)
begin
if(key'eventandkey='1')then
Q<=Q+1;
endif;
endprocess;
Addr<=Q;
process(Q)
begin
caseQis
when"00"=>Wei<="0000001";
when"01"=>Wei<="1011110";
when"10"=>Wei<="0010010";
when"11"=>Wei<="0000110";
whenothers=>Wei<="0000000";
endcase;
endprocess;
endCOS;
按键及显示程序的实现电路:
2.3.4ROM部分:
本次设计中使用使用的ROM通过调用ISE软件中的CORE,直接生成一个ROM。
事先通过MATLAB取号每一种波形所对应的数据,并且写入一个.coe文件中,在生成ROM的时候直接导入即可。
调用CORE生成ROM的过程如下:
使用MTALAB生成每一种波形所需的数据的程序如下:
以三角波为例:
t=0:
0.25/124:
0.25
y=512*t+128
round(y)
plot(t,y)
t=0.25:
0.5/249:
0.75
y=-512*t+384
round(y)
plot(t,y)
t=0.75:
0.25/124:
1
y=512*t-384
round(y)
t=0:
1/499:
1
y=512*t
y=256*t
round(y)
3系统测试及结果分析
3.1测试使用的仪器(如表1所示)
表1测试使用的仪器设备
序号
名称、型号、规格
数量
备注
1
FLUKE17B万用表
1
美国福禄克公司
2
AgilentTechnologies示波器
1
带宽1GHz
3.2测试数据
本系统主要测试参数如下表2所示
表2系统主要参数
序列
波形
主要参数
周期T
(ms)
峰峰值Vpp
(V)
0
正弦波
890~1050
10.4
1
三角波
10.3
2
锯齿波
10.4
3
方波
10.4
4实验结论
4.1结论
本系统功能齐全,能选择输出4路波形并显示波形代号,输出的波形周期和偏移量以及峰峰值均可调
4.2实验结果
正弦波:
三角波:
锯齿波:
方波:
4.3出现的问题及解决方法
1.输出正弦波时出现各个点离散,不连续的现象,有的时候会出现一部分波形消失使得波形整体缺失。
经检查,原因有一下几点:
(1)将数据从MATLAB取点后写入TXT文档后,通过查找替换将数据与数据之间的空格转换成“,”的时候有一部分数据被遗漏掉。
使得ROM存入的数据不完整。
(2)D/A转换器与FPGA输出口连接用的线接触不好,使得波形有的点不连续,甚至出现下陷的现象。
(3)D/A转换器所用的参考电压源不是太稳定。
解决方法:
(1)检查数据,更改数据间的格式后从新写入。
(2)替换D/A转换器与FPGA间的连线,使之接触良好。
5.心得体会
(1)通过本次的数字电子课程设计,对我来说,最大的收获是在短时间里,学习并初步掌握了FPGA的使用,进一步熟悉了Verilog编程语言。
同时,也进一步的加深了对MATLAB操作的理解。
(2)本次课设,让我熟练掌握了555定时器,TL084,及其相关应用电路的设计与使用。
加深了对硬件电路调试方法的掌握。
(3)此次的试验,一开始是通过在面包板上搭硬件电路的方式进行的,后来发现这样会有三个问题,第一由于需要使用的线太多,导致系统的可靠性降低。
其次,领导的器件中有一部分器件损坏。
第三,使用面包板搭电路容易受到干扰。
为了提高工作效率,同时提高系统的可靠性,因此使用FPGA进行设计。
通过本次实验,感受到集成电路的便利与可靠。
(4)这一次的课设,让我认识到了团队合作的重要性,感谢团队中的每一个成员。
最后真诚感谢认真指导我们实验的康磊老师!
参考文献
[1]胡振华.VHDL与FPGA设计[M].中国铁道出版社,2003.
[2]廉玉欣.电子技术基础实验教程[M].机械工业出版社,2010.
[3]宁改媞金印彬刘涛.数字电子技术与接口技术实验教程[M].西安电子科技大学出版社,2013.
[4]杨春玲王淑娟.数字电子技术基础[M].高等教育出版社,2011.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈工大 课程设计