实验四 用定时器实现数字振荡器
- 格式:doc
- 大小:49.00 KB
- 文档页数:5
实验题目:用555定时器设计一个时钟信号源,频率为f=1KHz,占空比为60%。
实验报告:一、实验相关信息1、实验日期:2、实验地点:二、实验内容用555定时器设计一个时钟信号源,频率为f=1KHz,占空比为60%。
三、实验目的1、了解555定时器的工作原理和电路结构;2、掌握555定时器的典型应用。
三、实验设备、元器件1、实验仪器:(写清型号)2、实验元器件:四、理论计算(1)555多谐震荡器电路结构图1 多谐振荡器(2)工作波形(3)工作过程简述接通电源后,电容C 被充电,νc 上升,当νc 上升到 Vcc 32时,触发器被复位,同时放电T 导通,此时 νo 为低电平,电容C 通过R 2 和T 放电,使νc 下降,当νc 下降到Vcc 31时,触发器又被复位,νo 为高电平。
电容C 放电所需时间为C R C R t PL 227.02ln ≈= (1)当电容C 放电结束时,T 截止,Vcc 将通过R 1、R 2向电容C 充电,νc 由Vcc 31上升到Vcc 32所需时间为C R R C R R t PH )(7.02ln )(2121+≈+= (2)当νc 上升到Vcc 32时,触发器由发生翻转,如此周而服始,在输出端就得到一个周期性的方波,其频率为C R R t t f PH PL )2(43.1121+≈+=(3) %100)2((%)2121X R R R R t t t q PH PL PH++=+= (4) (4)占空比可调电路结构对于图1电路结构占空比固定不变,要得到占空比可调的周期方波,对其电路改进,如图2所示。
由(4)式可知,占空比始终大于50%,要得到占空比小于50%的方波,只要在输出端加一个反向器即可。
图2 占空比可调的方波发生器五、元件参数计算与选择已知占空比为60%,由(4)式得R 2=2R 1根据(6)式,若电容C 取nF 51 ,Ω===+-K fC R R 6.2810*05.0*10*143.143.126321Ω=K R 7.51 Ω=5.112R加上可调电阻,其实际参数为Ω=K R 1.51 Ω=112R Ω=K R w 1六、计算机仿真(1) 电路结构(2)波形图七、硬件实现电路(1)实际电路结构(2)波形测试用示波器观察和测试V0端的输出波形,读取周期值、正脉冲宽度,计算出周期方波信号的频率和占空比。
汇编源程序====================================================================== ======*/;/* Copyright (C) 2004 YINXING TECHNOLOGY CO., LTD */;/* All Rights Reserved. */ ;/* ----------------------------------------------------------------------------*/;/*======================================================================.title "for test INT service program ...(25 us) ".mmregs 定义存储器影响寄存器,这样就可以用AR0,PMST等助记符替换实际的存储器地址.global_c_int00,_tint,vector标明一个或多个全局符号OFF_INTIMER .set 04Ch ; TIMER的向量初始化入口地址VECTOR+OFF_INTIMERINIT_A .set 079bch ; A/2=0.9510498INIT_B .set 0c000h ; B/2=-0.5INIT_C .set 013c7h ; C/2=0.1545105.bss y0,1 ;为结果y0分配一个存储单元.bss y1,1.bss y2,1.bss temp,1.bss AA,1.bss BB,1.bss CC,1.text ;定义可可执行代码段_c_int00:ld #0,dp;设置DP页指针ssbx intm ; 关闭所有中断st #1fffh,spld #vector, a ; 读出中断向量地址and #0FF80h, a ;保留高9位(IPTR:中断向量指针andm #007Fh, pmst ;保留pmst的低7位or pmst, astlm a, pmst ; 设置IPTRstm #10h,TCR ; 初始化定时器TCR为定时器控制寄存器stm #2499,PRD ; f=100M/(2499+1)=40kHz PRD 为计数器周期寄存器stm #20h,TCR ; 重新装入TIM和PSC,然后启动定时器ldm IMR,a ; 重新返回中断屏蔽寄存器or #08h,a ; 启动定时器中断stlm a,IMR ; 设置中断屏蔽寄存器ld #temp,dp ; 设置DP页指针ssbx FRCT ; prepare for fraction mpy FRCT为ST1中的小数方式位;(Ssbx 状态寄存器复位,即对状态寄存器ST0,ST1特定位置1)st #INIT_A,AA ; init AA,BB,CC 即初始化AA BB CCst #INIT_B,BB ;将常数B装入变量BBst #INIT_C,CC ;pshd CC ;将变量CC压入堆栈popd y2 ; init y2,y2=CCld AA,T ; T=AA装载AA到T寄存器mpy y2,a ; y2*AA放入a中sth a,y1 ; y2*AA -> y1(将A寄存器的高十六位放入变量y1)stm #0h,TCR ; 定时器复位noprsbx intm ;复位所有的中断(状态寄存器复位STN (SBIT)=0)again:nopb againnopnopnopnopnopnop;-------------------------------------------------------------; interrupt for INT_TIMER ! 中断服务程序;-------------------------------------------------------------_tint:ld#BB,DPld BB,T ; T=BBmpy y2,a ; a=y2*BBltd y1 ; T=y1,y2=y1mac AA,a ; a=a+y1*AAsth a,1,y1 ; new cos data -> y1sth a,1,y0 ; new cos data -> y0nop ; set breakpoint in CCS !!!int1_end:noprete.end连接命令文件/*====================================================================== ======*//* Copyright (C) 2004 YINXING TECHNOLOGY CO., LTD *//* All Rights Reserved. */ /* ----------------------------------------------------------------------------*//*====================================================================== ======*/MEMORY;描述系统的硬件资源,用来定义用户设计的系统中所包含的的各种形式的存储器{PAGE 1:INT_D : ORIGIN=80h, LENGTH=1F80hPAGE 0:EXT_P : ORIGIN=2000h, LENGTH=2000h}SECTIONS ;描述段如何定位到家当的硬件资源上,将输出段定位到所定义的存储器中{.text : > EXT_P PAGE 0.int_table : > (EXT_P ALIGN (128) PAGE (0)).data : > INT_D PAGE 1}中断向量表:;/*====================================================================== ======*/;/* Copyright (C) 2004 YINXING TECHNOLOGY CO., LTD;/* All Rights Reserved. */ ;/* ----------------------------------------------------------------------------*/;/*====================================================================== ======*/.mmregs ;.ref _ret ;.ref 在当前段中使用,在其他段中定义.ref _c_int00.ref _tint.global vector.sect ".int_table" ;.建立包含代码和数据的定义段;--------------------------------------------------------------------; interrupte vector table !;--------------------------------------------------------------------vector:rs b _c_int00 ;复位nopnopnmi b __ret ;非屏蔽中断nopnopsint17 b __ret ;软件中断sint17nopnopsint18 b __retnopnopsint19 b __retnopnopsint20 b __ret.word 0,0sint21 b __ret.word 0,0sint22 .word 01000h.word 0,0,0sint23 .word 0ff80h /*TMS320C54x中,中断向量地址由PMST寄存器中的9 .word 0,0,0 位向量地址指针IPTR和左移2位后的中断向量序号组sint24 .word 01000h 成,复位时,IPTR全为1,因此中断向量地址为FF80H.*/ .word 0,0,0.word 0,0,0sint26 .word 01000h ;word用来设置一个或多个16位带符号整型常数.word 0,0,0sint27 .word 0ff80h.word 0,0,0sint28 .word 01000h.word 0,0,0sint29 .word 0ff80h.word 0,0,0sint30 .word 01000h.word 0,0,0int0 b __ret ;外部中断0,软中断0nopnopint1 b __ret ;外部中断1,软中断1nopnopint2 b __ret ;外部中断2,软中断2nopnoptint b _tint ;定时中断,软中断3nopnopbrint0 b __ret ;McBSP(串行口)0接收中断nopnopbxint0 b __ret ;McBSP(串行口)0发送中断nopnoptrint b __retnopnopdmac1 b __ret ;McBSP2发送中断(默认)/DMA通道中断,软中断7 nopnopint3 b __ret ;外部中断3,软中断8nopnophpint b __ret ;HPI中断,软中断9nopnopq26 .word 0ff80h.word 0,0,0.word 0,0,0dmac4 b __retnopnopdmac5 b __retnopnopq30 .word 0ff80h.word 0,0,0q31 .word 01000h.word 0,0,0;--------------------------------------------------------------------------; end of interrupte vector table !;-------------------------------------------------------------------------__ret rete ;开中断,从中断快速返回说明:中断向量表是用来装载不同类型的中断服务程序的入口!。
综合性、设计性实验报告姓名姜泽政学号200908001217专业计算机科学与技术班级2009级02 班实验课程名称数字逻辑指导教师及职称李文讲师开课学期2011 至2012 学年上学期上课时间2011年12 月12 日湖南科技学院教务处编印一、实验要求及方案设计实验名称:振荡、分频、计数、译码、显示电路实验时间:2011-12-12小组合作:是○否●小组成员:无1、实验目的:1)学会使用555定时器构成多谐振荡器的方法及电路测试。
2)巩固集成触发器的逻辑功能,学会应用触发器做分频电路。
3)学会任意进制计数器设计方法,提高电子电路综合分析和设计能力。
4)学会使用显示译码器将计数器输出的8421BCD码转换成七段显示码。
5)掌握七段显示器的显示原理及电路连接。
2、实验设备及材料:(注意:请自行设计选择触发器、计数器、显示译码器的类型、电阻电容)硬件设备:数字逻辑实验箱实验耗材:555定时器、触发器J—K触发器集成芯片两片、计数器74LS163(或者74LS161)一片、显示译码器74LS48一片、七段显示数码管、电阻两个、电容两个、导线若干。
实验工具:数字万用表、数字示波器3、实验内容:使用常用的中规模集成电路设计一个以1秒钟为间隔循环显示0-9数字的电子电路,该电路应包括振荡模块、分频模块、计数模块、译码模块、显示模块,用实物独立组装、调试。
4、实验方法步骤及注意事项:(注意:此部分为本实验的关键部分,请自行填写,不得雷同!)① 实验步骤(请参考实验指导书总结归纳之后再认真填写)1,划分好模块,设计各模块电路。
2,按照各模块电路用实物独立组装、调试,调试过程中遇到的问题,找出原因,分析解决。
3,用示波器同时观察多谐振荡器的输出波形与分频器的输出波形,是否起到四分频的作用。
4,先将计数模块按照高低位接四个发光二级管,观察灯熄灭情况,是否符合二进制0—9从0000到1001的变换情况。
5,观察显示器的记数结果,是否为期望实验结果,如果不是检查电路,各引脚是否正确接线。
用定时器实现数字振荡器
李方健
【期刊名称】《山西电子技术》
【年(卷),期】2008(0)5
【摘要】简要介绍了利用数字振荡器产生正弦信号的方法.常规的方法是将某个频率的正弦/余弦值预先计算出来后制成一个表,DSP工作时仅作查表运算即可.本文利用定时器产生一个2kHz的正弦信号,定时器被设置成每50μS产生一次中断(等效于采样速率为20kHz),利用该中断,在中断服务程序中用叠代算法计算出一个sin 值,并利用CCS的图形显示功能查看波形.中断矢量表用汇编语言编辑,主程序和中断服务程序使用C语言编写.
【总页数】4页(P24-27)
【作者】李方健
【作者单位】重庆电子工程职业学院,重庆,401331
【正文语种】中文
【中图分类】TN752
【相关文献】
1.数字控制振荡器(NCO)的FPGA实现 [J], 李飞
2.一种基于DSP的数字振荡器的实现方式 [J], 李方健;曾浩
3.基于DSP的数字振荡器的设计与实现 [J], 黄福莹;陈华;徐金隆
4.测试台中自制数字式定时器的实现与应用 [J], 李桂新;蒋敏玉
5.基于FPGA的数字控制振荡器的设计与实现 [J], 彭兆军
因版权原因,仅展示原文概要,查看原文内容请购买。
一、实验原理
本实验采用递归的差分方程方法计算正弦和余弦值,其数字振荡器的实现原理与实验5(c )相同。
其实现公式为:
y[n]=2cos α×y[n-1]-y[n-2]
式中: 02s
f f πα⋅=为角度的计算步长,f 0是正弦信号的频率,f s 是D/A 转换速率。
利用上面的递推公式计算正弦或余弦值y[n]需要已知cos α和正弦/余弦的前两个初始值y[0]和y[1]。
在产生周期性的正弦信号时,必须以一定的D/A 转换速率f s 将各个样点值送往D/A 转换器。
正弦信号每个周期的样点数N 由正弦信号的频率f 0及D/A 转换速率f s 决定,即
s
0f N f =
例如,当利用递归的差分方程产生正弦信号时,若设定D/A 转换速率f s =16000Hz ,则产生f 0=1000Hz 的正弦波信号时,存在
s 016000161000
f N f === ,此时 02220.392716s f f N πππα⋅====
首先在程序中计算出cos α及初始值y[0]和y[1]。
cos α=0.9238795 ;
y[0]=sin0=0 ;
y[1]=sin α=0.382683 ;
n ≧2以后的y[n]的值,都可以通过前面的递推公式递归计算得出。
图1 实验运行结果。
555定时器构成的多谐振荡器555定时器是一种模拟电路和数字电路相结合的中规模集成器件,它性能优良,适用范围很广,外部加接少量的阻容元件可以很方便地组成单稳态触发器和多谐振荡器,以及不需外接元件就可组成施密特触发器。
因此集成555定时被广泛应用于脉冲波形的产生与变换、测量与控制等方面。
本实验根据555定时器的功能强以及其适用范围广的特点,设计实验研究它的内部特性和简单应用。
一、原理1、555定时器内部结构555定时器是一种模拟电路和数字电路相结合的中规模集成电路,其内部结构如图(A)及管脚排列如图(B)所示。
它由分压器、比较器、基本R--S触发器和放电三极管等部分组成。
分压器由三个5的等值电阻串联而成。
分压器为比较器、提供参考电压,比较器的参考电压为23ccV,加在同相输入端,比较器的参考电压为ccV,加在反相输入端。
比较器由两个结构相同的集成运放、组成。
高电平触发信号加在的反相输入端,与同相输入端的参考电压比较后,其结果作为基本R--S触发器端的输入信号;低电平触发信号加在的同相输入端,与反相输入端的参考电压比较后,其结果作为基本R—S触发器端的输入信号。
基本R--S触发器的输出状态受比较器、的输出端控制。
2、多谐振荡器工作原理由555定时器组成的多谐振荡器如图(C)所示,其中R1、R2和电容C为外接元件。
其工作波如图(D)所示。
设电容的初始电压c U =0,t =0时接通电源,由于电容电压不能突变,所以高、低触发端TH V =TL V =0<VCC,比较器A1输出为高电平,A2输出为低电平,即,(1表示高电位,0表示低电位),触发器置1,定时器输出此时,定时器内部放电三极管截止,电源cc V 经,2R 向电容C充电,逐渐升高。
当上升到13cc V 时,输出由0翻转为1,这时,触发顺保持状态不变。
所以0<t<期间,定时器输出为高电平1。
时刻,上升到23cc V ,比较器的输出由1变为0,这时,,触发器复0,定时器输出。
数字电路实验(06)555定时器及其应⽤:多谐振荡器⼀.实验要求1.1.实验⽬的1. 熟悉多谐振荡器的实现流程;2. 掌握555定时器的使⽤⽅法;3. 掌握泰克⽰波器TBS1102的使⽤。
1.2.实验器材1. VCC2. Ground3. 普通电阻4. 普通电容5. 555定时器6. 泰克⽰波器TBS11021.3.实验原理555时基电路是⼀种将模拟功能与逻辑功能巧妙结合在同⼀硅⽚上的组合集成电路。
555定时器构成的多谐振荡器能⾃⾏产⽣矩形脉冲的输出,是脉冲产⽣(形成)电路,它是⼀种⽆稳电路。
1. 多谐振荡器电路组成在电路接通电源的瞬间,由于电容C来不及充电,电容电压Vc=0V,所以555定时器的输出状态为1,输出Vo为⾼电平。
同时,集电极输出端对地断开,电源Vcc对电容C充电,电路进⼊暂稳态I。
当电容电压Vc充到2/3Vcc时,输出Vo为低电平,同时集电极输出对地短路,电容电压随之通过集电极输出端放电,电路进⼊暂稳态II。
此后,电路周⽽复始地产⽣周期性的输出脉冲。
2. 振荡频率的估算电容充电时间T1。
电容充电时,时间常数τ1=(R1+R2)C,起始值Vc(0+)=1/3Vcc,最终值Vc(∞)= Vcc,转换值Vc(T1)=2/3Vcc,带⼊过渡过程计算公式进⾏计算,计算公式为:电容放电时间T2。
电容放电时,时间常数τ2=R2C,起始值Vc(0+)=2/3Vcc,终值Vc(∞)= 0,转换值Vc(T2)=1/3Vcc,代⼊RC过渡过程计算公式进⾏计算,计算公式为:T2=0.7R2C电路振荡周期T,计算公式为:T=T1+T2=0.7(R1+2R2)C电路振荡频率f,计算公式为:输出波形占空⽐q=T1/T,即脉冲宽度与脉冲周期之⽐,称为占空⽐。
计算公式为:q= T1/T=0.7(R1+R2)C/(0.7(R1+2R2)C)=( R1+R2)/( R1+2R2)⽤555定时器构成多谐振荡器的原理图如图1所⽰。
实验十七DSP实现数字振荡器一、实验目的l、掌握数字振荡器的设计过程;2、了解数字振荡器的原理和特性;3、熟悉设计数字振荡器的几种方法--递归法、泰勒展开法等。
二、实验内容1、给定参数,设计出振荡器;2、观察设计的振荡器波形。
三、实验原理以及源代码分析最常见的振荡器如正弦波、余弦波既可以由CCS程序本身产生,也可以由其它工具如MA TLAB、TC等先产生数据文件(.dat),然后由DSP主程序导入,用于调制解调滤波等程序应用中。
由DSP本身产生正、余弦波也有多种方式,如递归法,泰勒公式展开法等,也可以直接在CCS中用C语言调用库函数double sin(double x)和double cos(double x)用一个循环语句产生正余弦波序列,因此,要产生振荡波有多种方法可供选择,选择哪一种还要看具体应用的要求。
下面概要介绍汇编语言实现的泰勒法和递归法程序:1、泰勒法:此程序的主要思想是通过定时器每隔一定时间产生中断,迫使主程序进入中断服务程序,这儿是“B sine_isr”,sine_isr子程序产生一个正弦波抽样值,放到sinwave缓冲区。
值得注意的是,本程序利用泰勒级数展开的方法首先在sin_initial和cos_initial子程序中获得正、余弦波的头两个初始值,为了达到程序的实时性,在接下来的过程中,不再用泰勒级数计算其它正弦波抽样值,而用三角递归公式计算新的正弦波值:sin_n_theta=2*cos_theta*(sin_n-1_theta)-(sin_n-2_theta),这样就大大减少了处理器的运算量,从而加快了计算速度。
另外,taylor.asm是主文件,需要在工程中设置entry point为此文件START作为入口。
;*******************************************************;CLKOUT=100MHz,Fs=16kHz,fd=10kHz;theta=2*pi*fd/Fs=0.39269908=0x3243;pi/2=1.57079632,pi/4=0.785398163=0x6487;sin_n_theta=2*cos_theta*(sin_n-1_theta)-(sin_n-2_theta);*******************************************************.mmregs.def start.global sine_isr,sin_init,cos_init.global theta.bss sinwave,256Y0 .usect "y",1Y1 .usect "y",1Y2 .usect "y",1Y_COS .usect "y",1PERIOD .set 8000hK_THETA .set 0x 2162.textstart: B timervector: .align 0x80.space 4*16*19 ;定时中断入口地址B sine_isrNOPNOP.space 4*16*12 ;保留其他中断入口地址timer:LD #0, DPSSBX SXMSSBX FRCTLD #vector, AAND #0FF80h, AANDM #007Fh, PMSTOR PMST, ASTLM A, PMST ;设置IPTRSTM #sinwave,AR5RPTZ A,#255STL A,*AR5+STM #sinwave,AR5STM #Y0,AR1ST #0,*AR5+ST #0,*AR1+LD #K_THETA,ACALL sin_initSTL A,*AR5+STL A,*AR1+LD #K_THETA,ACALL cos_initSTM #Y_COS,AR3STL A,*AR3STM #PERIOD, PRDSTM #0010h, TCR ;TDDR=0STM #0020h, TCR ;TRB=1STM #0FFFFh, IFR ;清除所有中断STM #8h, IMR ;打开时钟中断RSBX INTM ;开中断NOPNOPB $******************************************** 时钟中断处理程序*******************************************sine_isr:STM #Y2,AR2STM #Y1,AR3MVDD *AR3,*AR2STM #Y_COS,AR4LD *AR3-,TMPY *AR4-,ASFTA A,-15,ASUB *AR3+,ASTL A,*AR3-STL A,*AR5+MVDD *AR2,*AR3RETE.end文件taysin.asm,用来计算sin(θ)值。
EDA技术--555定时器接成多谐振荡器仿真实验EDA技术院系:班级:姓名:学号:555定时器接成多谐振荡器仿真实验555定时器是一种常见的集数字与模拟功能于一体的集成电路。
通常只要外接少量的外围元件就可以很方便地构成多谐振荡器电路。
构成多谐振荡器,组成信号产生电路;U1LM555CM GND 1DIS 7OUT3RST 4VCC8THR 6CON5TRI 2GND ——1脚,接地; TRI ——2脚,触发输入; OUT ——3脚,输出;RES ——4脚,复位(低电平有效);CON——5脚,控制电压(不用时一般通过一个0.01F 的电容接地);THR——6脚,阈值输入;DIS——7脚,放电端;VCC——8脚,+电源分析下图用555定时器接成的多谐振荡器。
求出输出电压的波形和震荡频率。
脉冲发生器电路Multisim 7构建的脉冲发生器电路Multisim 7构建的脉冲发生器电路用Multisim 7中的示波器观察脉冲发生器电路的波形555定时器构成多谐振荡器(1) 接通电源时,设电容的初始电压0=c V ,此时TR V \TH V 均小于1/3Vcc ,放电截止,输出端电压为高电平,Vcc 通过1R 和2R 对C 充电,Vc 按照指数规律逐步上升。
(2) 当Vc 上升到2/3Vcc 时,放电管导通,输出端电压为低电平,电容C 通过2R 放电,Vc 按照指数规律逐步下降。
(3) 当Vc 下降到1/3Vcc 时,放电管截止,输出端电压由低电平翻转为高电平,电容C 又开始充电。
当电容C 充到Vc=2/3Vcc 时,又开始放电,如此周而复始,在输出端即可产生矩形波信号。
555定时器功能表DR '1I V 2I V O V DT CC V 32>CC V 31>CC V 32<CC V 31>CC V 32<CC V 31<CC V 32>CC V 31<电路电压波形振荡周期12T T T =+。
实验四 555定时器及其应用一、实验目的1、了解555定时器的结构和工作原理;2、学习用555定时器组成几种常用的应用电路;3、掌握几种常用应用电路的相关参数的计算和测量方法。
二、实验原理1、555定时器引脚排列如图4-1所示,各引脚功能如下: 1脚——(GND )接地端2脚——(TR')触发输入端,低电平有效 3脚——(OUT )输出端4脚——(R ’)复位端(不用时接V CC )5脚——(CO )电压控制端,不用时常在此脚与地之间接一0.01μF 补偿电容 6脚——(TH )阈值端,高电平触发7脚——(DIS )放电端8脚——(V CC )电源端2、555定时器的功能 ⑴复位:R'=0时,电路复位,输出为0;⑵高触发电平:在2脚TR ’的电压大于1/3V CC 的前提下,当阈值端T H >2/3V CC 时,内部放电管导通,输出OUT 为0;⑶低触发电平:在6脚TH 的电压小于2/3V CC 的前提下,当TR ’(2脚)电压小于1/3V CC 时,内部放电管截止,输出OUT 为1;⑷状态维持原状:在6脚TH 的电压小于2/3V CC ,又2脚TR ’的电压大于1/3V CC 时,电路状态维持原状。
表4-1 555定时器的功能状态表GND TR ’ OUT R ’ 图4-1 555引脚3、由555定时器构成多谐振荡器 ⑴多谐振荡器电路由555定时器构成多谐振荡器的电路如图4-2所示。
⑶振荡波形振荡波形如图4-3所示。
4、由555定时器构成单稳态触发器 ⑴单稳态触发器电路由555定时器构成单稳态触发器如图4-4所示。
图中R 、C 为定时元件,V i 为触发输入电压,没有触发时应为高电平。
⑵输出脉冲宽度:T W ≈1.1RC ⑶单稳态触发器工作波形单稳态触发器工作波形如图4-5所示。
V CC图4-2 多谐振荡器⑵振荡频率C)R 2R (43.1T T 1f 2121+=+=占空比:21212112R R R R T T T q ++=+=图4-4 单稳态触发器三、实验内容1、用555定时器设计一个多谐振荡器,要求频率为1KHz ,占空比为65%,输出电压幅值为TTL 电平,给定电容为0.1μF 。
实验0 实验设备安装才CCS调试环境实验目的:按照实验讲义操作步骤,打开CCS软件,熟悉软件工作环境,了解整个工作环境内容,有助于提高以后实验的操作性和正确性。
实验步骤:以演示实验一为例:1.使用配送的并口电缆线连接好计算机并口与实验箱并口,打开实验箱电源;2.启动CCS,点击主菜单“Project->Open”在目录“C5000QuickStart\sinewave\”下打开工程文件sinewave.pjt,然后点击主菜单“Project->Build”编译,然后点击主菜单“File->Load Program”装载debug目录下的程序sinewave.out;3.打开源文件exer3.asm,在注释行“set breakpoint in CCS !!!”语句的NOP处单击右键弹出菜单,选择“Toggle breakpoint”加入红色的断点,如下图所示;4.点击主菜单“View->Graph->Time/Frequency…”,屏幕会出现图形窗口设置对话框5.双击Start Address,将其改为y0;双击Acquisition Buffer Size,将其改为1;DSP Data Type设置成16-bit signed integer,如下图所示;6.点击主菜单“Windows->Tile Horizontally”,排列好窗口,便于观察7.点击主菜单“Debug->Animate”或按F12键动画运行程序,即可观察到实验结果:心得体会:通过对演示实验的练习,让自己更进一步对CCS软件的运行环境、编译过程、装载过程、属性设置、动画演示、实验结果的观察有一个醒目的了解和熟悉的操作方法。
熟悉了DSP实验箱基本模块。
让我对DSP课程产生了浓厚的学习兴趣,课程学习和实验操作结合为一体的学习体系,使我更好的领悟到DSP课程的实用性和趣味性。
实验二基本算数运算2.1 实验目的和要求加、减、乘、除是数字信号处理中最基本的算术运算。
555定时器构成的多谐振荡器电路实验报告实验目的:通过555定时器构成的多谐振荡器电路实验,掌握555定时器的基本原理、性能特点和应用方法,了解多谐振荡器电路的工作原理及其在实际电路中的应用。
实验原理:1. 555定时器555定时器是一种集成电路,由三个5kΩ电阻、两个比较器、一个RS触发器和一个输出级组成。
它可以产生单稳态脉冲、方波和三角波等不同形式的周期信号。
2. 多谐振荡器电路多谐振荡器电路是由多个LC谐振回路组成的,每个LC回路都有不同的共振频率。
当输入信号与其中一个LC回路的共振频率相同时,该回路将产生共振现象,并输出相应频率的信号。
实验步骤:1. 将555定时器插入面包板中,并连接上VCC和GND。
2. 将R1、R2和C1连接到555定时器引脚6、2和5上,并连接到GND。
3. 将C2连接到引脚5和GND之间,并与L1串联。
4. 将L2并联在L1上,并将它们与C3串联。
5. 连接万用表,调整电阻值和电容值,使得输出信号频率在100Hz-1kHz之间。
6. 测量输出波形的幅度和频率,并记录数据。
实验结果:通过实验,我们成功构建了一个555定时器构成的多谐振荡器电路,并成功测量了输出信号的频率和幅度。
实验数据如下:输出信号频率:500Hz输出信号幅度:3V实验分析:通过实验可以看出,555定时器构成的多谐振荡器电路可以产生不同频率的周期信号,并且具有较高的稳定性和精度。
在实际应用中,多谐振荡器电路常用于音响设备、无线电通讯、调制解调器等领域。
结论:通过本次实验,我们深入了解了555定时器的基本原理、性能特点和应用方法,并掌握了多谐振荡器电路的工作原理及其在实际电路中的应用。
同时,我们也学会了如何构建一个基于555定时器的多谐振荡器电路,并成功测量了其输出信号频率和幅度。
实验二用定时器实现数字振荡器一、实验目的1.在数字信号处理中,会经常使用到正弦/余弦信号。
通常的方法是将某个频率的正弦/余弦值预先计算出来后制成一个表,DSP工作时仅作查表运算即可。
在本实验中将介绍另一种获得正弦/余弦信号的方法,即利用数字振荡器用叠代方法产生正弦信号。
2.本实验除了学习数字振荡器的DSP实现原理外,同时还学习C6000定时器(在本实验中使用的是TMS320C6713)使用以及中断服务程序编写。
3.熟悉CCS集成软件开发环境,集成汇编、C、VC++;二、实验步骤1. 启动CCS,打开工程文件,文件名为Timer.pjt。
该工程文件含有C源程序commonISR.c、Timer.c、InitCSL.c,汇编源程序vector.asm和连接定位Timer.cmd文件,其中,vector.asm包含中断向量表,commonISR.c包含中断服务程序,而InitCSL.c就是用CSL对片上外设进行初始化,在这里是对Timer进行初始化。
有选择地修改程序代码。
2. 选择Project菜单中的Build Options选项,或使用鼠标右键单击工程文件名(如Timer.pjt)并选择Options来修改或添加编译、连接中使用的参数。
例如,选择Compiler窗口,在Preprocessor中的“Include Search Path”可以写入包括头文件的路径。
选择Linker窗口,在Basic中的“Include Libraries”可以写入包括对库文件的路径,其中就包括C的标准库rts6700.lib,该文件应该在CCS安装目录中。
例如,若CCS安装在d:\ti下,则rts6700.lib 应该在d:\ti\c6000\cgtools\lib下。
“Output Filename”栏中写入输出OUT文件的名字,如Timer.out,同时你还可以设置生成的MAP文件名。
3.完成编译、连接,正确生成OUT文件。
实验四 用按时器实现数字振荡器1 实验目的在数字信号处置中,会常常利用到正弦/余弦信号。
通常的方式是讲某个频率的正弦/余弦值余弦计算出来后制成一个表,DSP 工作时仅作查表运算即可。
在本实验中将介绍另一种取得正弦/余弦信号的方式,即利用数字振荡器用叠代方式产生正弦信号。
本实验除学习数字振荡器的DSP 实现原理外,同时还学习C54X 按时器利用和中断效劳程序编写。
另外,在本实验中咱们将利用汇编语言和C 语言别离完成源程序的编写。
2 实验要求本实验利用按时器产生了一个2kHz 的正弦信号,按时器被设置成每25uS 产生一次中断,(等效于采样速度未40k )利用该中断,在该中断效劳程序顶用叠代算法计算出一个SNT 值,并利用CCS 的图形显示功能查看波形。
3 实验原理(1)数字振荡器原理设一个传递函数为阵线序列sinkwT ,其z 变换为111BzAz 1Cz )z (H -----=其中,A =2coswT ,B =-1,C=sinwT 。
设初始条件为0,求出上式的反Z 变换得: y[k]=Ay[k-1]+By[k-2]+Cx[k-1]这是个二阶差分方程,其单位冲击响应即为sinkwT 。
利用单位冲击函数x[k-1]的性质,即仅当k=1时,x[k-1]=1,代入上式得:k=0 y[0]=Ay[-1]+By[-2]+0=0k=1 y[1]=Ay[0]+By[-2]+c=ck=2 y[2]=Ay[1]+By[0]+0=Ay[1]k=3 y[3]=Ay[2]+By[1]k=n y[n]=Ay[n-1]+By[n-2]在k ﹥2以后,y[k]能用y[k -1]和y[k-2]算出,这是一个递归得方式。
依照上面得说明,咱们能够开始数字振荡器得设计。
设该振荡器得频率为2kHz,采样率为40kHz (通过按时器设置,每隔25us 中断一次,即产生一个y[n])那么递归得差分方程系数为:A =2coswT=2cos(2×PI ×2000/40000)=2×0.B=-1C=sinwT=sin(2×PI ×2000/40000)=0.79BC 22A 15=⨯ C00022B 15=⨯ 13C722C 15=⨯ 为了便于定点DSP 处置,咱们将所有系数除以2,然后用16为定点格式表示为:这即是本实验中查生2kHz 阵线信号的三个系数。
实验四用定时器实现数字振荡器1.实验目的在数字信号处理中,会经常使用到正弦/余弦信号。
通常的方法是将某个频率的正弦/余弦值预先计算出来后制成一个表,DSP工作时仅作查表运算即可。
在本实验中将介绍另一种获得正弦/余弦信号的方法,即利用数字振荡器用叠代方法产生正弦信号。
本实验除了学习数字振荡器的DSP实现原理外,同时还学习C54X定时器使用以及中断服务程序编写。
另外,在本实验中我们将使用汇编语言和C语言分别完成源程序的编写。
2.实验要求本实验利用定时器产生一个2kHz的正弦信号。
定时器被设置成每25uS产生一次中断(等效于采样速率为40K)。
利用该中断,在中断服务程序中用叠代算法计算出一个SIN值,并利用CCS的图形显示功能查看波形。
3.实验原理数字振荡器原理设一个传递函数为正弦序列sinkωT,其z变换为H(z)=EMBED Equation.3EMBED Equation.3v儭丌a=2cosÉ, B=-1, C=sinÉ其中,A=2cosωT, B=-1, C=sinωT。
设初始条件为0,求出上式的反Z变换得:y[k]=Ay[k-1]+By[k-2]+Cx[k-1]这是一个二阶差分方程,其单位冲击响应即为sinkωT。
利用单位冲击函数x[k-1]的性质,即仅当k=1时,x[k-1]=1,代入上式得:k=0 y[0] = Ay[-1] + By[-2] + 0 = 0k=1 y[1] = Ay[0] + By[-2] + c = ck=2 y[2] = Ay[1] + By[0] + 0 = Ay[1]k=3 y[3] = Ay[2] + By[1]...k=n y[n]= Ay[n-1] + By[n-2]在k>2以后,y[k]能用y[k-1]和y[k-2]算出,这是一个递归的差分方程。
根据上面的说明,我们可以开始数字振荡器的设计。
设该振荡器的频率为2kHz,采样率为40kHz (通过定时器设置,每隔25us中断一次,即产生一个y[n]),则递归的差分方程系数为:A=2cosωT=2cos (2 x PI x 2000 / 40000)=2 x 0.95105652 x4 1e6f0B=-1C=sinωT=sin (2 x PI x 2000 / 40000)=0.30901699 x4 =9e4b为了便于定点DSP处理,我们将所有的系数除以2,然后用16位定点格式表示为:a f378 c 4f25这便是本实验中产生2KHz正弦信号的三个系数。
在本实验中,主程序在初始化时先计算出y[1]和y[2],然后开放定时器中断。
以后每次进入定时器中断服务程序时,利用前面的y[1]和y[2],计算出新的有y[0],通过CCS提供的图形显示工具,我们将在图形窗口中看到一个正弦信号波形。
下面是初始化和中断服务程序代码片段:初始化y[1]和y[2]:ssbx FRCT ;置FRCT=1,准备进行小数乘法运算st #INIT_A,AA ;将常数A装入变量AAst #INIT_B,BB ;将常数B装入变量BBst #INIT_C,CC ;将常数C装入变量CCpshd CC ;将变量CC压入堆栈popd y2 ;初始化y2=CCld AA, T ;装AA到T寄存器mpy y2,a ;y2乘系数A,结果放入A寄存器sth a,y1 ;将A寄存器的高16位存入变量Y1中断服务程序片段:ld BB,T ;将系数B装入T寄存器mpy y2,a ;y2乘系数B,结果放入A寄存器ltd y1 ;将y1装入T寄存器,同时复制到y2mac AA,a ;完成新正弦数据的计算,a寄存器中为;y1*AA+y2*BBsth a,1,y1 ;将新数据存入y1,因所有系数都除过2,所以在保;存结果时转移一位,恢复数据正常大小。
sth a,1,y0 ;将新正弦数据存入y0(2)C54X的定时器操作C54X的片内定时器利用CLKOUT时钟计数,用户使用三个寄存器(TIM,PRD,TCR)来控制定时器,参见表4-1。
在表4-2中列出了定时器控制寄存器的各个比特位的具体定义。
‘VC5402的另一个定时器(定时器1)的控制寄存器分别为:0x30(TIM1),0x31(PRD1),0x32(TCR1)。
表4-1 ‘VC5402定时器0的相关寄存器寄存器地址名称用途0024hTIM定时器寄存器,每计数一次自动减10025hPRD定时器周期寄存器,当TIM减为0后,CPU自动将PRD的值装入TIM0026hTCR定时器控制寄存器表4-2 定时器控制寄存器(TCR)bit概要比特名称功能15-12 Ý余甠û诺凶攺丰11 Soft å诔歹牍伎丱0M位鄈呿伨痥亳冚定寶敨嘨坿伨痿丟眃賕诶斄皶爁怂」Soft=0 S忛轥凿丟眃賕诶攌レ寶敨囋穳卜偢毥嵜伂」Soft=1 S御議敨嚫裏儺丰15-12 保留读出时为011 Soft 该比特位与10位配合使用以决定定时器在使用仿真调试时的状态。
Soft=0 当进入仿真调试时,定时器立即停止工作。
Soft=1 当计数器被减为0后,停止工作。
10 Free 该比特位与11位配合使用以决定定时器在使用仿真调试时的状态。
Free=0 根据11比特位决定定时器状态。
Free=1 忽略11比特位,定时器不受影响。
9-6 PSC 定时器预置计数器。
当PSC减为0后,CPU自动将TDDR装入,然后TIM开始减1。
5 TRB 定时器复位。
当TRB=1时,CPU将PRD寄存器的值装入TIM寄存器,将TDDR的值装入PSC4 TSS 定时器停止状态。
当系统复位时,TSS被清除,定时器立刻开始工作。
TSS=0 表示启动定时器TSS=1 表示停止定时器0-3 TDDR 定时器扩展周期。
当PSC减到0后,CPU自动将TDDR的值装入PSC,然后TIM减1。
所以整个定时器的周期寄存器可以有20个比特(PRD+TDDR)。
从上面的介绍可以看到定时器实际上可以有20个比特的周期寄存器。
它对CLKOUT信号计数,先将PSC减1,直到PSC为0,然后用TDDR重新装入PSC,同时将TIM减1,直到TIM减为0。
这时CPU 发出TINT中断,同时在TOUT引脚输出一个脉冲信号,脉冲宽度为CLKOUT一致。
然后用PRD重新装入TIM,重复下去直到系统或定时器复位。
因而定时器中断的频率由下面的公式决定:TINT的频率=EMBED Equation.3EMBED Equation.3v儭乴ch蠺祃LKOUT其中tc表示CLKOUT的周期。
定时器当前的值可以通过读取TIM寄存器和TCR寄存器的PSC比特位得到。
下面是本实验中初始化定时器的程序片段:stm #10h,TCR ;停止定时器stm #2499,PRD ;设置PRD寄存器值为2499,TINT中断频率为;Foutclk /(2499+1)= 100MHz/2500 = 40 KHzstm #20h,TCR ;重新装入TIM和PSC,然后启动定时器(3)C54X中断的使用在C54X中用户可以通过中断屏蔽寄存器IMR来决定开放或关闭一个中断请求。
图4-1给出了C5402的IMR寄存器的各个比特位的定义。
þ嘴-1图4-1 ‘C5402的IMR寄存器其中,HPINT表示HPI接口中断,INT3-INT0为外部引脚产生的中断,TXINT和TRINT为TDM串口的发送和接收中断,BXINT0和BRINT0为BSP串口的发送和接收中断,TINT0为定时器0中断。
在中断屏蔽寄存器IMR中,1表示允许CPU响应对应的中断,0表示禁止。
当然要CPU响应中断,ST1寄存器中的INTM还应该为0(允许所有的中断)。
当DSP响应中断时,PC指针指向中断向量表中对应中断的地址,进入中断服务子程序。
中断向量表是C54X存放中断服务程序的一段内存区域,大小为80H。
在中断向量表中,每一个中断占用4个字的空间,一般情况是将一条跳转或延时跳转指令存放于此。
当然,如果中断服务程序很短(小于或等于4个字),可以直接放入该向量表。
中断向量表的位置可以通过修改基地址来改变,其基地址由PMST 寄存器中的IPTR(15-7 bits)决定。
表4-3给出了中断向量表的各中断的偏移说明。
例如C54x复位后其IPTR全为1,所以中断向量表起始位置在0FF80H,因而复位后程序从0FF80H开始运行。
本实验的初始化程序读取中断向量表的启始地址,然后设置PMST的高9位,以便DSP能正确响应中断,代码如下:ld #0,dp ;设置DP页指针ssbx intm ;关闭所有中断ld #vector, a ;读出中断向量(地址vector在中断向量表程序中定义)and #0FF80h, a ;保留高9位(IPTR)andm #007Fh, pmst ;保留PMST的低7位or pmst, a ;stlm a, pmst ;设置PMST(其中包括IPTR)h蠴-3 54X表4-3 54X的中断向量表4.实验内容本实验需要使用C54X汇编语言或C语言实现数字振荡器,并通过CCS提供的图形显示窗口观察输出信号波形以及频谱。
实验分下面几步完成:(1). 根据确定数字振荡器的频率,确定系数。
数字振荡器系数的确定在前面已经说明,这里不再赘述。
(2). 启动CCS,新建工程文件,如文件名为sinewave.mak。
选择Project菜单中的Add File to Project 选项,将汇编源程序exer3.asm、vec_table.asm和连接定位sinewave.cmd文件依次添加到工程文件中。
注意,你可以在添加文件对话框中选择显示不同的文件类型来加快文件选择速度。
你也可以使用鼠标右键单击工程文件名(如sinewave.mak)并选择Add Files项来添加需要的文件。
其中,exer3.asm 包括初始化代码和中断服务程序,而vec_talbe.asm包含中断向量表。
(3). 选择Project菜单中的Options选项,或使用鼠标右键单击工程文件名(如sinewave.mak)并选择Options项来修改或添加编译、连接中使用的参数。
例如,选择Assembler窗口,选择“Enable Symbolic Debug Infomation”以便使用汇编源代码级调试(你可以在汇编源程序设置断点等等)。
选择Linker 窗口,在“Output Filename”栏中写入输出OUT文件的名字,如sine.out,你还可以设置生成的MAP 文件名。
(4). 完成编译、连接,正确生成OUT文件。
然后使用File菜单的“Load Program”选项,将生成的OUT文件(如sine.out)装入DSP的片内存储器。