首页 > 实用范文 > 其他范文
北邮通原硬件实验报告(全文5篇)
编辑:星海浩瀚 识别码:130-959641 其他范文 发布时间: 2024-03-24 09:44:28 来源:网络

第一篇:北邮通原硬件实验报告

信息与通信工程学院 通信原理硬件实验报告

班 级:

姓 姓 名:

学 学 号:

序 序 号:

日 日

期:

目录 必做部分 目录..................................................................................................................................................2 实验一:双边带 抑制载波调幅(DSB-SCAM)

..........................................................................4 一、实验目的...........................................................................................................................4 二、实验原理...........................................................................................................................4 三、实验框图...........................................................................................................................6 四、实验步骤...........................................................................................................................7 五实验结果与分析..8 六、思考题...........................................................................................................................11 七、问题及解决方法.............................................................................................................13 实验二:具有离散大载波的双边带调幅(AM)

......................................................................14 一、实验目的.........................................................................................................................14 二、实验原理.........................................................................................................................14 三、实验框图.........................................................................................................................15 四、实验步骤.........................................................................................................................16 五、实验结果与分析.............................................................................................................17 六、思考题.............................................................................................................................20 七、问题及解决方法.............................................................................................................20 实验三:调频(FM)

..................................................................................................................22 一、实验目的.........................................................................................................................22 二、实验原理.........................................................................................................................22 三、实验框图.........................................................................................................................23 四、实验步骤.........................................................................................................................24 五、实验结果与分析.............................................................................................................25 六、思考题.............................................................................................................................27 七、问题及解决方法.............................................................................................................28 实验六:眼图................................................................................................................................29 一、实验目的.........................................................................................................................29 二、实验原理.........................................................................................................................29 三、实验框图.........................................................................................................................29 四、实验步骤.........................................................................................................................30 五、实验结果与分析.............................................................................................................30 六、问题及解决方法.............................................................................................................31 实验七:采样、判决....................................................................................................................32 一、实验目的.........................................................................................................................32 二、实验原理.........................................................................................................................32 三、实验框图.........................................................................................................................32 四、实验步骤.........................................................................................................................33 五、实验结果与分析.............................................................................................................34 六、思考题.............................................................................................................................35

七、问题及解决方法 .............................................................................................................35 实验八:二进制通断键控(OOK)

...........................................................................................35 一、实验目的.........................................................................................................................36 二、实验原理.........................................................................................................................36 三、实验框图.........................................................................................................................36 四、实验步骤.........................................................................................................................37 五、实验结果与分析.............................................................................................................38 六、思考题.............................................................................................................................39 七、问题及解决方法.............................................................................................................40 实验十二:低通信号的采样与重建.............................................................................................41 一、实验目的.........................................................................................................................41 二、实验原理.........................................................................................................................41 三、实验框图.........................................................................................................................41 四、实验步骤.........................................................................................................................42 五、实验结果与分析.............................................................................................................42 六、思考题.............................................................................................................................44 七、问题及解决方法.............................................................................................................45

选做部分

实验九:二进制移频键控(2FSK)

...........................................................................................46 一、实验目的.........................................................................................................................46 二、实验原理.........................................................................................................................46 三、实验框图.........................................................................................................................47 四、实验步骤.........................................................................................................................47 六、问题及解决方法.............................................................................................................50 实验十一:信号星座....................................................................................................................51 一、实验目的.........................................................................................................................51 二、实验原理.........................................................................................................................51 三、实验框图.........................................................................................................................51 四、实验步骤.........................................................................................................................51 五、实验结果与分析.............................................................................................................52 六、思考题.............................................................................................................................55 七、问题及解决方法.............................................................................................................56

实验一:双边带抑制载波调幅(DSB-SCAM))

一、实验目的 1、了解 DSB-SC AM 信号的产生以及相干解调的原理和实现方法。

2、了解 DSB-SC AM 信号波形以及振幅频谱特点,并掌握其测量方法。

3、了解在发送 DSB-SC AM 信号加导频分量的条件下,收端用锁相环提取载波的原理及其实现方法。

4、掌握锁相环的同步带和捕捉带的测量方法,掌握锁相环提取载波的调试方法。

二、实验原理 DSB 信号的时域表达式为()()cosDSB cs t m t t   频域表达式为 1()[()()]2DSB c cS M M          其波形和频谱如下图所示

将均值为零的模拟基带信号 m(t)与正弦载波 c(t)相乘得到 DSB—SC AM 信号,其频谱不包含离散的载波分量。

DSB—SC AM 信号的解调只能采用相干解调。为了能在接收端获取载波,一种方法是在发送端加导频。收端可用锁相环来提取导频信号作为恢复载波。此锁相环必须是窄带锁相,仅用来跟踪导频信号。

在锁相环锁定时,VCO 输出信号 与输入的导频信号 错误!未找到引用源。的频率相同,但二者的相位差为 错误!未找到引用源。度,其中 错误!未找到引用源。很小。锁相环中乘法器的两个输入信号分别为发来的信号 s(t)与锁相环中 VCO 的输出信号,二者相乘得到

在锁相环中的 LPF 带宽窄,能通过 错误!未找到引用源。分量,滤除 m(t)的频率分量及四倍频载频分量,因为 错误!未找到引用源。很小,所以 错误!未找到引用源。约等于 错误!。

未找到引用源。LPF 的输出以负反馈的方式控制 VCO,使其保持在锁相状态。锁定后的 VCO 输出信号 错误!未找到引用源。经 90 度移相后,以 错误!未找到引用源。作为相干解调的恢复载波,它与输入的导频信号同频,几乎同相。

相干解调是将发来的信号 s(t)与恢复载波相乘,再经过低通滤波后输出模拟基带信号,经过低通滤波可以滤除四倍载频分量,而 是直流分量,可以通过隔直流电路滤除,于是输出为 错误!。

未找到引用源。

三、实验框图 1、DSB-SC AM 信号的产生

2、DSB-SC AM 信号的相干解调及载波提取

3、测量 VCO 的压控灵敏度

四、实验步骤 1、DSB—AC 信号的产生(1)将音频振荡器输出的模拟音频信号及住振荡器输出的 100KHZ 模拟载频信号分别用连线联结至乘法器的两个输入端。

(2)用示波器观看音频振荡器输出信号的信号波形的幅度和激荡平率,调整为 10KHZ。

(3)用示波器观看主震荡输出波形。

(4)用示波器观看乘法器的输出波形及其频谱。

(5)将已调信号和导频分量加到加法器的两个输入端,调整加法器上的参数 G 和 g,使其与实际相符。观看输出波形及其频谱。具体调整方法如下: a.首先调整增益 G:将加法器的 B 输入接地端接地,A 输入端接已调信号,用示波器观看加法器 A 输入端的信号幅度与加法器输出信号幅度。调节旋钮 G,使得加法器输出幅度与输入一致,说明此时 G=1 b.再调整增益 g:加法器 A 输入端仍接已调信号,B 输入端接导频信号。用频谱仪观看加法器输出信号的振幅频谱,调节增益 g 旋钮,使导频信号振幅频谱的幅度为已调信号的边带频谱幅度的 0.8 倍。此导频信号功率约为已调信号功率的 0.32 倍。

2、DSB—AC 信号的相干解调及其载波提取(1)锁相环的调试:

a.调整 VCO 的中心频率 f0 在 100KHZ b.将直流电压输入 VCO,改变其值从-2——2V,观察 VCO 的频率及其线性工作范围 c.调节 VCO 的压控灵敏度到合适范围。

d.检测 LPF 是否正常工作。

e.反复测量锁相环的同步带和捕捉带,使其尽量准确。

(2)恢复载波 a.将电路按照原理图连接好,用示波器观察锁相环中的 LPF 的输出信号是否

为直流信号,以此判定是否锁定。

b.贯穿导频信号和 VCO 的输出是否同步,调节移相器使其相依到达 90 度。

c.观察恢复载波的频谱振幅。

(3)相干解调 a.将已调信号和恢复的载波接入解调乘法器的两个输入端。

b.观察解调后的输出波形。

c.改变音频振荡器的频率,观察解调输出波形的变化。

五、实验结果与分析(1)dsb-sc am 信号的产生

1、音频振荡器输出调制信号

由图可看出音频信号的频率 f 为 10.05kHz,振幅约为 1.46V。

乘法器输出 dsb-sc 信号波形

主震荡频率为 100kHz,可以从图上看出,乘法器输出信号包络为调制信号,频率与载波频率相同为 100kHz。输出振幅约为 1.4V,与调制信号振幅相同。音频信号零点位置存在相位翻转。

3、乘法器输出频谱

由图可看出,dsb-sc am 信号在 100kHz 处并无频谱分量,仅在左右各偏移 10kHz 处存在信号,与理论分析一致。

4、已调信号波形

5、调整加法器中的 G,g

由图,调整 G=1,同理调节 g,是导频信号振幅频谱的幅度为已调信号频谱的边带频谱幅度的 0.8 倍。

6、带导频的调幅信号

由图可以计算出,导频信号功率约为已调信号的 0.8*0.8/2=0.32 倍。

7、改变发端音频振荡器的频率后的调制信号及解调信号

由图可知,改变发端音频振荡器的频率,解调输出信号也随之改变,无法还原调制波形。

六、思考题 2.2.4 思考题

1、实验中载波提取的锁相环中的 LPF 能不能用 TIMS 系统中的“TUNEABLE LPF”? 答:不能,因为 RC LPF 中的 3DB 带宽是 2.8kHz,而 TUNEABLE LPF 中 WIDE一项中带宽的滤波范围是 2kHz-12kHz,所以不能使用。

2、若本实验中的音频信号为 1kHz,请问实验系统所提供的 PLL 能否用来提取载波?为什么? 答:不能,因为锁相环的截止频率为 2.8kHz,如果音频信号为 1kHz 则锁相环会跟踪音频信号,造成信号失真。

3、若发端不加导频,收端提取载波还有其他方法吗?请画出框图 答:如图所示

2.2.3 思考题、说明 DSB-SC AM 信号波形的特点 答:DSB-SC 为双边带调幅,时域当载波与 m(t)同时改变极性时出现反相点,而反相点不影响性能。经幅度调制后,基带信号的频谱被搬移到了载频 fc 处。若模拟基带信号带宽为 W,则调幅信号带宽为 2W,因为在频域中输出此调幅信号s(t)的信道带宽 B=2W。

AM 信号为具有离散大载波的双边带幅度调制信号,它是在 DSB-SB 信号的基础上加一离散的大载波分量,因此传输效率有所下降。AM 信号因为解调时要使用包络检波所以要保证|m(t)|≤1,使 AM 信号的包络 Ac[1+m(t)]总为正数。

2、画出已调信号加导频的振幅频谱,算出导频信号功率与已调信号功率之比。

平方律部件 2fc BPF 二分频 输 入 已调信号 e(t)载波输出

答:由图可知,导频信号的频谱幅度是 A1=125mV,边频信号的频谱幅度是A2=160mV,所以导频信号功率与已调信号功率的百分比=A12/2/A22

=30.52%,接近理论值 32%,误差主要来源于读数误差。

七、问题及解决方法 本次实验是整个实验过程中的第一个实验,老师讲完基本要求之后我们就开始实验了。示波器已经用了好多次了,算是熟悉了。本节是 DSB-SC AM 信号的产生以及想干解调原理。刚开始接触 TIMS 实验系统部分,感觉很神奇。虽然实验中都是有电路连接图可以参考的,但是,理解还是最基本的。这个实验还是很简单的,虽然老师说可以不要频谱图,但是我们也做出了一个正确的频谱图。

实验二:具有离散大载波的双边带调幅((AM)

一、实验目的 1、了解 AM 信号的产生原理和实现方法。

2、了解 AM 信号波形和振幅频谱的特点,并掌握调幅系数的测量方法。

3、了解 AM 信号的非相干解调原理和实现方法。

二、实验原理 1、AM 信号的产生 对于单音频信号()sin(2)m mm t A f t   进行 AM 调制的结果为()(sin(2))sin2(1 sin(2))sin2AM c m m c c m cs t A A A f t f t A A a f t f t         其中调幅系数mAaA,要求1 a 以免过调引起包络失真。

由maxA和minA分别表示 AM 信号波形包络最大值和最小值,则 AM 信号的调幅系数为 max minmax minA AaA A 如图所示为 AM 调制的过程和频谱示意图。

2、AM 信号的解调 AM 信号由于具有离散大载波,故可以采用载波提取相干解调的方法。其实现类似于实验一中的 DSB-SC AM 信号加导频的载波提取和相干解调的方法。

AM 的主要优点是可以利用包络检波器进行非相干解调,可以使得接收设备更加简单。

三、实验框图 1、AM 信号的产生

2、AM 信号的非相干解调

四、实验步骤 1、AM 信号的产生(1)按图进行各模块之间的连接。

(2)音频振荡器输出为 5KHz,主振荡器输出为 100KHz,乘法器输入耦合开关置于 DC 状态。

(3)分别调整加法器的增益 G 以 g 均为 1。

(4)逐步增大可变直流电压,使得加法器输出波形是正的。

(5)观察乘法器输出波形是否为 AM 波形。

(6)测量 AM 信号的调幅系数 a 值,调整可变直流电压,使 a=0.8。

(7)测量 a=0.8 的 AM 信号振幅频谱。

2、AM 信号的非相干解调(1)输入的 AM 信号的调幅系数 a=0.8。

(2)用示波器观察整流器的输出波形。

(3)用示波器观察低通滤波器的输出波形。

(4)改变输入 AM 信号的调幅系数,观察包络检波器输出波形是否随之改变。

(5)改变发端调制信号的频率,观察包络检波输出波形的变化。

五、实验结果与分析 1、调制信号(加直流)

由图可看出,调制信号频率为 5kHz,而载波频率为 100kHz。另外调制信号加上直流电压后,加法器输出波形为正值。

2、调整加法器增益 由图可看出加法器输入输出幅值相等,即增益 G=1。

3、调整加法器增益 g=1

由图可看出加法器输入输出幅值相等,即增益 g=1。

4、将加法器输出调为正

由图可知,乘法器输出包络与调制信号幅值变化相同,且其中调幅系数a=0.8。

两个通道显示的调制前后信号幅度波形

6、当 a=0.8 时,解调输出波形

由图可以看出,虽然信号的解调输出很小,而且噪声干扰很严重,但信号的基本形状没有改变。保留了原有的信号的信息 7、当 a=1 时,解调输出波形

可以看出,当 a=1 时,信号过调制,出现失真情况。

六、思考题 1、在什么情况下,会产生 AM 信号的过调现象? 答:当调制系数大于 1 时,会产生过调现象,此时幅度最小值不是实际最小值,实际最小值应为负值。

2、对于 a=0.8 的 AM 信号,请计算载频功率与边带功率之比值。

答:AM 信号公式为()[1 sin(2)]sin(2)AM c m cS t A a f t f t     则可得其边带功率为:2()44cbA aP   载波功率为:2()22ccAP   所以比值为:=3.125 3、是否可用包络检波器对 DSB-SC AM 信号进行解调?请解释原因。

答:不可以。因为已调信号的包络与 m(t)不同,并不代表调制信号,有负值部分,且在与 t 轴的交点处有相位翻转。而包络应该为正幅度。

七、问题及解决方法 本次实验的主要内容是 AM 信号产生和解调。刚开始不能得到正确的图像,后来发现是忘记把耦合开关置于 DC 状态。虽然说实验结果总会有误差,一定的理论分析还是很关键的,如果实验数据跟理论差别很大的时候,一定要好好检查一下,说不定就是自己的哪一个步骤出错了。实验中,一定要细心,小错误要尽量避免。

实验三:调频(FM)

一、实验目的 1、了解用 VCO 作调频器的原理及实验方法。

2、测量 FM 信号的波形图及振幅频率。

3、了解利用锁相环作 FM 解调的原理及实现方法。

二、实验原理 1、FM 信号的产生 单音频信号

()cos(2)mm t a f t   经 FM 调制后的表达式

其中

调制指数

由卡松公式可知 FM 信号的带宽为

FM 信号的产生框图如下图所示。

VCO 的输入为()m t,当输入电压为 0 时,VCO 输入频率为cf;当输入模拟基带信号的电压变化时,VCO 的振荡频率作相应的变化。

2、锁相环解调 FM 信号 锁相环解调的原理框图如下图所示。

()sin2 sin2fm mmaKt f t f tf     fmaKf ()cos[2()]FM c cs t A f t t    2(1)mB f   

VCO 的压控电压()v t同基带信号()m t成正比,所以()m t就是 FM 解调的输出信号。锁相环解调 FM 信号有两个关键点,一是开环增益足够大,二是环路滤波器的带宽要与基带信号带宽相同。

三、实验框图 1、FM 信号的产生

2、FM 信号的锁相环解调

四、实验步骤 1、FM 信号的产生(1)

单步调试 VCO a.将 VCO 模块的印刷电路板上的拨动开关置于 VCO 模式。将 VCO 板块前面板上的频率选择开关置于“HI”状态。然后,将 VCO 模块插入系统机架的插槽内。

b.将可变直流电压模块的输出端与 VCO 模块的 Vin 端相连接,示波器接于 VCO输出端:

•直流电压为零时,调节 VCO 模块的 f0 旋钮,使 VCO 的中心频率为 100 赫兹。

•在-2V 至于+2 范围内改变直流电压,测量 VCO 的频率及线性工作范围。

•调节 VCO 模块的 GAIN 旋钮,使得直流电压在+/-2V 范围内变化时,VCO 的频率在+/-5HZ 内变化。

(2)将音频振荡器的频率调到 2Hz,作为调制信号输入于 VCO 的 Vin 输入端。

(3)测量图 2.4.4 中各点信号波形。

(4)测量 FM 信号的振幅频谱。

2、FM 信号的解调(1)单步调试 VCO a.将 VCO 模块置于“VCO”, 前面板上的频率选择开关置于“HI”状态.b.将可变直流电压模块的输出端与VCO模块的Vin端相连接。当直流电压为零时,调节 VCO 的 f0 旋钮,使 VCO 的中心频率为 100kHz。当可变直流电压为+/-1V 时,调节 VCO 的 GAIN 旋钮,使 VCO 的频率偏移为+/-10kHz。

(2)将锁相环闭环连接,将另一个 VCO 作信源,接入于锁相环,测试锁相环的同步带及捕捉带。

(3)将已调好的 FM 信号输入与锁相环,用示波器观察解调信号。若锁相环已锁定,则在锁相环低通滤波器的输出信号应是直流分量叠加模拟基带信号。

(4)改变发端的调制信号频率,观察 FM 解调的输出波形变化。

五、实验结果 与分析

1、VCO 输入直流电压为 0 时,f0=100kHz

2、音频信号

3、FM 输出信号

由上两图可看出,调制信号一个周期为 0.5ms,频率为 2kHz。当调制信号到达正峰值时,调频信号最为密集;反之,在到达负峰值时,调频信号最为稀疏。

4、FM 输出信号频谱

上图可看出,FM 输出信号频谱并不规整,带宽约为 15kHz。

5、FM 解调波形

由上图所示,由于滤波等原因,波形频率正常,峰值出现一定失真。

6、改变调制信号频率 20kHz 带来失真

由以上两图可看出,改变调制信号频率仍可以成功解调出原始信号。但当调制信号频率增大时,解调输出幅值降低,噪声干扰较大,继续增大调制信号频率可能无法解出原始信号。此外,20kHz 不在锁相环的同步带内,此时用锁相环解调会使锁相环进入失锁状态,无法正确解调出原信号。

六、思考题 1、本实验的 FM 信号调制指数β是多少?FM 信号的带宽是多少?

答:

52.522(1)14f kHzf kHzW f kHz    

2、用 VCO 产生 FM 信号的优点是可以产生大频偏的 FM 信号,缺点是 VCO 中心频率稳定程度差。为了解决 FM 大频偏以及中心频率稳定度之间的矛盾,可采用什么方案来产生 FM 信号? 答:为了使中心频率稳定,可以使用锁相环形成反馈,使得它仅用确保 VCO 中心频率的稳定性及准确度与晶振一致。

3、对于本实验具体所用的锁相环及相关模块,若发端调制信号频率为 10kHz,请问实验三中的锁相环能否解调出原调制信号?为什么? 答:不能,因为 10KHz 不在锁相环的同步带内,此时用锁相环解调会使锁相环进入失锁状态,无法正确解调出原信号。

4、用于调频解调的锁相环与用于载波提取的锁相环有何不同之处? 答:在调频解调中使用的滤波器为低通滤波器,滤波器输出接至示波器和 VCO,即锁相环调后的显示信号为低通滤波器的输出信号;在时钟提取中使用的滤波器为环路滤波器,滤波器输出仅接至 VCO 中,而锁相环输出信号应为 VCO 的输出信号而不是低通滤波器的输出信号。

七、问题及解决方法

本次实验算是比较难的一个实验了。在做单独调测 VCO 的时候,总是不能是电压在+2V 和-2V 之间变化,变化总是在 500mV 内,困扰我们很久,后来发现是示波器显示的地方设置成交流电了。解决这个问题之后,在锁相环那一块,也遇到了瓶颈,总是输出乱信号,调节了好久都没有办法,最后在老师的帮助下,加了一缓冲放大器,终于解决了问题!

实验六:眼图 一、实验目的 了解数字传输系统中“眼图”的观察方法及其作用。

二、实验原理

实际通信系统中,数字信号经过非理想的传输系统产生畸变,总是在不同程度上存在码间干扰的,系统性能很难进行定量的分析,常常甚至得不到近似结果。而眼图可以直观地估价系统码间干扰和噪声的影响,是常用的测试手段。从眼图的张开程度,可以观察码间干扰和加性噪声对接收基带信号波形的影响,从而对系统性能作出定性的判断。

三、实验框图

四、实验步骤 1、将可调低通滤波器模块开关置于 NORM 位置。

2、将主信号发生器的 8.33kHz TTL 电平的方波输入与线路编码器的 M.CLK 端,经四分频后,由 B.CLK 端输出 2.083kHz 的时钟信号。

3、将序列发生器模块的印刷电路板上的双列直插开关选择“10”,产生长为 256的序列码。

4、用双踪示波器同时观察可调低通滤波器的输出波形和 2.083kHz 的时钟信号。并调节可调低通滤波器的 TUNE 旋钮及 GAIN 旋钮,以得到合适的限带基带信号波形,观察眼图。

五、实验结果与分析 1、时钟信号

如图,时钟信号为由 B.CLK 输出的方波信号。以及眼图信号的合成。

2、眼图

由图可看出,CH1 为经过序列发生器产生的序列信号波形叠加所产生的眼图,CH2 为 2.083kHz 时钟信号。

图中“眼睛”闭合的速率,即眼图斜边的斜率,表示系统对定时误差灵敏的程度,斜边愈陡,对定位误差愈敏感。在取样时刻上,图中噪声容限为 4V,判决门限为 0V。

六、问题及解决方法

眼图是我们前面几个实验中最有趣的实验。刚开始看不到眼睛,调节了好久的 gain 和 f 旋钮都不行。后来慢慢一点点的调节,终于出现了完美的眼图。在实验中,耐心也是很必须的,因为噪声干扰等等,实验中可能不是一下子就得到我们想要的结果。其中从眼图的张开程度,可以观察码间干扰和加性噪声对接受基带信号波形的影响,从而能对系统性能做出定性的判断。

实验七:采样、判决 一、实验目的 1、了解采样、判决在数字通信系统中的作用及其实现方法。

2、自主设计从限带基带信号中提取时钟、并对限带信号进行采样、判决、恢复数据的实验方案,完成实验任务。

二、实验原理

在数字通信系统中的接收端,设法从接受滤波器输出的基带信号中提取时钟,用以对接受滤波器输出的基带信号在眼图睁开最大处进行周期性的瞬时采样,然后将各采样值分别与最佳判决门限进行比较做出判决、输出数据。

三、实验框图

1、采样、判决系统框图

2、时钟提取电路

四、实验步骤 1、请自主设计图 2.8.1 中的提取时钟的实验方案,完成恢复时钟(TTL 电平)的实验任务。

请注意:调节恢复时钟的相移,使恢复时钟的相位与发来的数字基带信号的时钟相位一致(请将移相器模块印刷电路板上的拨动开关拨到“LO”位置)。

2、按照图 2.8.1 所示,将恢复时钟输入于判决模块的 B.CLK 时钟输入端(TTL电平)。将可调低通滤波器输出的基带信号输入于判决模块,并将判决模块印刷电路板上的波形选择开关 SW1 拨到 NRZ-L 位置(双极性不归零码),SW2 开关拨到“内部”位置。

3、用双踪示波器同时观察眼图及采样脉冲。调节判决模块前面板上的判决点旋钮,使得在眼图睁开最大处进行采样、判决。对于 NRZ-L 码的最佳判决电平是零,判决输出的是 TTL 电平的数字信号。

五、实验结果与分析 1、采样与眼图的关系

由上图可看出,在基带信号与时钟对比图中时钟上升沿处于眼睛张开最大处,为理想的采样时刻。

2、经过低通滤波器的信号和判决信号

由图上可以看出,在最佳采样时刻的采样可以较好还原信号。

3、原信号与解调后信号对比

如图,判决信号与原信号基本一致,仅仅存在一定时延,从工程上看已经达到目的。

六、思考题

对于滚降系数为  =1 的升余弦滚降的眼图,请示意画出眼图,标出最佳取样时刻和最佳判决门限。

答:如上图,0 为最佳判决门限,眼睛长大最大时为最佳取样时刻。

七、问题及解决方法 采样判决算是这么多实验中最简单的了,在上次实验的基础上,我们已经得到了很完美的眼图,这次调眼图的时候,比上次容易了点。调出眼图之后,基本上都可以了。

实验八:二进制通断键控(OOK)

一、实验目的 1、了解 OOK 信号的产生及其实现方法。

2、了解 OOK 信号波形和功率谱的特点及其测量方法。

3、了解 OOK 信号的解调及其实现方法。

二、实验原理 二进制通断键控(OOK)方式是以单极性不归零码序列来控制正弦载波的导通与关闭。如图所示。

OOK 信号的解调方式有相干解调和非相干解调两种。本实验采用非相干解调。其原理图如图所示。

三、实验框图 1、OOK 信号的产生

2、OOK 信号的非相干解调

四、实验步骤 1、OOK 信号的产生(1)用示波器观察图 2.9.4 中的各点信号波形。

(2)并用频谱仪测量图 2.9.4 各点的功率谱(将序列发生器模块印刷电路板上的双列直插开关拨到“11”,使码长为 202_)。

2、OOK 信号的非相干解调(1)用示波器观察 2.9.5 中各点的波形。

(2)自主完成时钟提取、采样、判决的实验任务(需要注意的是,恢复时钟的相位要与发 来信号的时钟相位一致)。

五、实验结果与分析 1、4 分频后 2.083kHz 时钟

由图可知,此时钟为单极性不归零码,幅值约为 3.9V。

2、OOK 信号以及解调输出

由图可以清晰看出 OOK 信号与码序列的对比,输出为 1 时,OOK 信号有输出,反之则为 0。

由图可知,输出波形与原信号相比,仅存在一定的幅度衰减以及时延。

六、思考题 对 OOK 信号的相干解调,如何进行载波提取?请画出原理框图及实验框图。

答:从接收到的 OOK 信号提取离散的载频分量,恢复载波。框图如下

七、问题及解决方法 本次实验在时钟提取部分遇到了问题。在上一个实验的基础上,我们产生了还算完美的 OOK 信号,但是在加上时钟提取后就是出不来波形。我和我的同组同学张妮竞男对实验电路连接等等方面做了十多次的检查,到最后还是只能接受到噪声。最后的解决办法是将 2.083kHz 的 TTL 电平拿过来直接做提取的时钟。发现其他做同学也无法提取时钟,还是不晓得哪里出了问题。

实验十二:低通信号的采样与重建 一、实验目的 1、了解低通信号的采样及其信号重建的原理和实现方法。

2、测量各信号波形及振幅频谱。

二、实验原理 频带受限于

的模拟基带信号,可以唯一地被采样周期

的采样序列值所确定。将该样值序列通过一截止频率为Hf的 LPF,可以无失真地重建或者恢复出原基带信号。

实验原理图如上图所示,一模拟音频信号()m t通过采样器输出被采样信号()sm t,由周期采样脉冲序列()s t控制一开关的闭合与打开构成采样器。将采样信号通过一低通滤波器即可恢复原基带信号。

三、实验框图

12sHTf [0, ]Hf

四、实验步骤 1、按照图连接各模块。

2、用双踪示波器测量图中的各点信号波形,调节双脉冲发生器模块前面板上的“WIDTH”旋钮,使采样脉冲的脉冲宽度约为 10μs。

3、用频谱仪测量各信号的频谱,并加以分析。

五、实验结果与分析 1、采样冲激序列 s(t)

2、采样信号 ms(t)

由图可知,冲激序列的幅值与此时刻原始信号的幅值相等。

3、采样信号 ms(t)及其频谱

由图可知,采样信号频谱也为一冲激序列,包络为采样冲激序列频谱的包络。

六、思考题 1、若采样器的输入音频信号为 5kHz,请问本实验的 LPF 的输出信号会产生什么现象? 答:由于采样冲激序列为 8.3kHz,所以当输入音频信号为 5kHz 时,采样信号无法满足奈奎斯特抽样定理,所以会产生失真。

2、若输入于本实验采样器的信号频谱如图,(a)请画出其采样信号的振幅频谱图;(b)为了不失真恢复原基带信号,请问收端的框图作何改动?-4-3-2-1 0 1 2 3 400.20.40.60.811.21.41.61.82f/kHz|M(f)| 答:(a)采样信号的振幅频谱图为

(b)要达到不失真恢复原基带信号,就必须满足奈奎斯特抽样定理,且使得 采 样 信 号 低 频 部 分 可 被 完 全 滤 出,所 以 频 谱 需 要 满 足 截 止 频 率2 6.3 k H z f k H z  ,即调整 LPF 的截止频率 七、问题及解决方法 本次实验为低通信号的采样与重建,还算简单。本实验只要在于让我们了解低通信号的采样以及其信号重建的原理和实现方法。这次实验中的波形算是所有实验中波形最稳定的了,而且实验中电路连接好之后马上就出来波形了。

8.3 -8.3 f/KH 0 2 2 Ms(f)

实验九:二进制移频键控(2FSK)

一、实验目的 1、了解连续相位 2FSK 信号的产生及实现方法。

2、测量连续相位 2FSK 信号的波形及功率谱。

3、了解用锁相环进行的 2FSK 信号解调的原理及实现方法。

二、实验原理 2FSK 是用二进制数字基带信号去控制正弦载波频率,传号和空号载波频率分别为1f和2f。本实验产生的是相位连续 2FSK。

以双极性不归零码为调制信号,对载波进行 FM 得到连续相位 2FSK,表达式为:

2()cos[2 2()]tFSK c fs t A f t K b d      其带宽可以用卡松公式近似为 22(1)FSK f bB R    其中bR为主瓣带宽。

用 VCO 作为调频器来产生相位连续的 2FSK 框图如下图所示。

连续相位 2FSK 信号解调可以采用锁相环解调,原理框图如下图所示。

三、实验框图 1、连续相位 2FSK 信号的产生

2、连续相位 2FSK 信号的锁相环解调

四、实验步骤 1、连续相位 2FSK 信号的产生(1)单独测试 VCO 压控灵敏度。

a.首先将 VCO 模块的 Vin 输入端接地,调节 VCO 模块前面板上的 f0 旋钮,使 VCO中心频率为 100kHz。

b.将可变直流电源模块的直流电压输入于 VCO 的 Vin 端。改变直流电压值,测量VCO 的中心频率随直流电压的变化情况,调节 VCO 前面板上的 GAIN 旋钮,使 VCO

在输入直流电压为±2V 时的频偏为±2kHz,即压控灵敏度为 1kHz/V。

(2)按图连接各模块,序列发生器的时钟频率为 2.083kHz。

(3)用示波器观察图中各点的信号波形。

(4)用频谱仪测量 2FSK 信号的功率(序列发生器码长为 202_)。

2、连续相位 2FSK 信号的锁相环解调(1)单独测试 VCO 压控灵敏度。

a.首先将 VCO 模块的 Vin 输入端接地,调节 VCO 模块前面板上的 f0 旋钮,使 VCO中心频率为 100KHz。

b.将可变直流电源模块的直流电压输入于 VCO 的 Vin 端。改变直流电压值,测量VCO 的中心频率随直流电压的变化情况,调节 VCO 前面板上的 GAIN 旋钮,使 VCO在输入直流电压为+1V 时的频偏为+10KHz。

(2)将锁相环闭环连接,另外用一个 VCO 作为信源,输入于锁相环的输入端,测试锁相环的同步带及捕捉带。

(3)将已调好的连续相位 2FSK 信号输入于锁相环,观察锁相环是否已锁定,若已锁定,则锁相环的 LPF 输出是直流加上解调信号。若未锁定,则调解锁相环VCO 的 f0 旋钮,直至锁定,并使 LPF 输出的直流电平为 0。观察解调信号波形。

五、实验结果与分析 1、连续相位的 FSK 信号

中心频率 100kHz,压控灵敏度 1kHz/V

2、经过编码器后导致频率偏移

由图,在编码为 1 时,频率为 97.66kHz,编码为 0 时,频率为 102.46kHz。

4、序列信号发生器

6、未经判决的解调输出

如图分别为未经判决的解调输出和原始的信号编码,可以看出波形大致吻合。未经判决的信号虽然大致可以恢复出波形,但是存在的起伏较大,需要进一步判决。

7、采样判决输出

如图为原始的信号输入和采样判决后的输出。可以看出只是相位上存在滞后。另外,判决后的信号全部是正值。0V 表示 0,与输入的信号有所差别。

六、问题及解决方法

本次试验进行的是二进制移频键控 2FSK。由最后一个图可以看到未经判决的输出大致上跟原信号码大致吻合,但是毛刺还是很严重的,这让我们明白了采样判决的意义。因为做了很多次实验了,像那些电路连接错误以及 fo 需要放在HI 上,这些问题,现在都不会出现了。

实验十一:信号星座 一、实验目的 1、了解 MPSK 及 MQAM 的矢量表示式及其信号星座图。

2、掌握 MPSK 及 MQAM 信号星座的测试方法。

二、实验原理 在数字通信理论中,信号波形在正交信号空间的矢量表示具有重要意义。它是利用信号波形的矢量表示工具,将 M 个能量有限信号波形相应地映射为 N 维正交信号空间中的 M 个点,在 N 维正交信号空间中 M 个点的集合称为信号星座图。

常用数字调制方式中,OOK 信号和 2PSK 信号可用一维矢量描述,正交 2FSK、M>2 的 MPSK 及 MQAM 信号波形可以用二维矢量描述。

MPSK 信号的二维矢量表示为 1 2[ , ] [ , ], 1,2,3,...,c si i i s i s is s s E a E a i M    三、实验框图

四、实验步骤(1)按照图 2.12.3 连接各模块。

(2)将序列发生器模块印刷电路板上的双列直插开关拨到“11”位置,产生长为 202_ 的序列码。

(3)将多电平编码器输出的 I 支路多电平信号及 Q 支路多电平信号分别接到示波器的 X 轴及 Y 轴上,调节示波器旋钮,可看到 M=4,6,8 的 MPSK 或 MQAM 信号星座。

请注意多电平编码器模块前面板上的开关。上端开关是选择 MPSK 调制方式或者MQAM 调制方式,下端开关是选择信号星座的点数 M。

五、实验结果与分析 1、M=4 时 MPSK

2、M=8 时 MPSK

3、M=16 时 MPSK

4、M=4 时 MQAM

5、M=8 时 MQAM

6、M=16 时 MQAM

由以上 6 个图可看出实验结果与理论分析结果一致。

六、思考题 1、请画出 OOK,2PSK 和正交 2FSK 信号的星座图。

答:OOK 信号的星座图:

2PSK 信号的星座图:

正交 2FSK 信号的星座图:

F1(t)S S1 0 0 1 F1(t)S S1 0

2、在相同点数 M 下,MSPK 和 MQAM 谁具有更好的抗噪声性能? 答:在相同的点数 M 下,MQAM 信号的抗噪声性能更好,M4 的情况下 MQAM 的误符率小于 MPSK 的误符率。

七、问题及解决方法

这是最后一个实验,实验很顺利。得到的图跟理论知识完全符合,因为题比较简单,所以也没什么问题出现。理论知识总是会有点枯燥,加上实验后,感觉兴趣增加了,知识也巩固了,一直很喜欢通原硬件实验。

F1(t)F2(t)

第二篇:北邮信通院移动通信实验报告

北京邮电大学 移动通信实验报告

班级:

2010211126

专业:

信息工程

姓名:

学号:

班内序号:

一、实验目的

1、移动通信设备的认知 a)了解机柜结构

b)了解移动通信设备组成和机框结构 c)了解移动通信设备各单元的功能及连接方式

2、网管操作和 OMT 创建小区 a)了解OMC系统的基本功能和操作 b)掌握OMT如何创建小区

3、移动通信业务的建立与信令流程 a)了解TD-SCDMA系统的网络结构 b)掌握基本业务测试环境的搭建

c)掌握CS业务与普通PS业务信令流程,体验视频通话

二、实验设备

TD‐SCDMA 移动通信设备一套

三、实验内容

1、TD_SCDMA系统认识

听了老师的讲授后,我了解到了TD_SCDMA系统是时分双工的同步CDMA系统,知道了TD_SCDMA系统网络结构中的三个重要接口(Iu接口、Iub接口、Uu接口),认识了TD_SCDMA系统的物理层结构,熟悉了TD_SCDMA系统的六大关键技术以及其后续演进LTE。

2、CN开卡

开卡过程如下图所示:

3、硬件认知

1)整套移动通信设备如下:

2)RNC设备认知

TDR3000设备机框外形结构如图1和图2所示

机框主要功能如下:

支持 14 个板位,作为19〞机框通用背板使用。

满足 PICMG3.0、PICMG3.1 规范。

实现机框内以太交换双星型物理连接拓扑。

对各前插板提供板位编号(HA0~7)。

对各前插板提供 Fabric、Base、CLK、Update 数据通路。

提供对所有 FRU 单元的IPMB 总线通路。

提供‐48V 冗余供电通路。

ATCA 机框的UPDATE CHANNEL 设计规则为物理板位1 与13、2 与14、3 与11、4 与12、5 与 9、6 与10、7 与8 两两之间设计UPDATE CHANNEL。

图 1:机框背板功能分布示意图

由上图可知,ATCA 机框的UPDATE CHANNEL 设计规则为物理板位1 与13、2 与14、3 与11、4 与12、5 与9、6 与10、7 与8 两两之间设计UPDATE CHANNEL。其中蓝色连线表示具有Update Channel 连线的板位分配,物理板位7,8 固定为两块交换板,其余板位固定为功能板。

图 2:机框背板接口后视图

机框物理上是一种13U 标准的ATCA 插箱,机框背板主体尺寸为ATCA 标准定义部分: 354.8mmX426.72mm。主体之下为背板的风扇、电源接口引入部分,风扇接口包括风扇电源和IPMI 接口,背板与电源模块之间的电源接口包括两路-48V 供电和四路风扇电源输入。背板与各前插

板之间的电源接口采用分散供电方式,每个前插板有两路‐48V 供电。背板下部左右两部分中间位

置各预留1 英寸安装输入电源插座(‐48V/风扇电源)。

单板结构

单板相关描述中,采用“逻辑板(物理板)”的描述方式,其中逻辑板为从软件功能及操作维护台显示的单板;物理板为硬件单板,其单板名称印刷在在物理单板面板下方。采用该表达方式的目的,是便于使用者能随时直观地了解逻辑板与物理板的映射关系,避免不熟悉两种单板类型映射关系的用户频繁地查找单板对应关系表。TDR3000 各种单板的类型及功能如下

机框槽位布局如下:

可以使用LDT软件查看硬件是否正常,由下图可以看出,硬件连接均正常。

其中使用的各单板功能如下:

 GCPA(GMPA+SPMC+HDD)全局控制处理板完成以下功能:

 全局处理板完成 RNC 全局资源的控制与处理、以及与OMC‐R 的连接。全局控制板 支持板载2.5〞 IDE 80GB 硬盘数据存储功能;

 处理以下协议:RANAP 协议中的复位,资源复位,过载控制消息;SCCP 管理、MTP3B 管理、ALCAP 管理、M3UA 管理协议等;  两块 GCPA 以主备用方式工作;  RSPA(GMPA+SPMC)无线网络信令处理板完成以下功能:

 处理 Iu,Iub 接口的控制面协议以及传输网络高层协议,完成无线网络协议的处理,以及呼叫处理功能;

 处理的协议有:RRC 协议,RANAP 部分协议,NBAP 协议,无线资源管理;SCCP 部 分协议,ALCAP 部分协议,MTP3B 部分协议,M3UA 部分协议,SCTP 协议等;  两块 RSPA 以主备用方式工作;

 ONCA/IPUA(MNPA+GEIC)板的主要功能如下:

 ONCA/IPUA(MNPA+GEIC)配合GEIB 后插板完成4xFE/GE 接口功能。 网络处理器完成外部 IP 到内部IP 的转换、处理功能;  TCSA(MASA)板的主要功能如下:

 支持控制面 Base 交换和业务面Fabric 交换两级交换,完成业务和控制面的L2、L3 以太交换功能;

 固定使用 2 个交换板槽位,即框中的第7、8 槽位;

 同时完成整个机框的 ShMC(机框管理器)功能,同时兼容IPMC 功能,可根据不同 ATCA 机框进行灵活配置;

 提供架框号的编码配置功能;

 支持对网同步时钟的接入、分配功能;  以主备用方式工作;  RTPA(MDPA)板由单板控制模块、单板以太交换模块、DSP 处理模块、电源模块、IPMC 模块组成,主要功能如下:

 单板控制模块完成板内的各种控制管理功能;

 单板以太交换模块实现完成 RTPA(MDPA)板内的以太数据交换;

 DSP 处理模块主要由DSP 和其外围来实现,完成业务数据和协议的处理;

 电源转换模块从背板接入双路‐48V 电源,经过电源转换芯片转换后,给单板提供各 种芯片正常工作的各种电压;

 IPMC 模块主要完成单板上电的控制,以及温度、电压监控等功能。 PTPA(MNPA)板的主要功能如下:  完成 Iu‐PS 用户面协议处理功能;

 GTPU 处理板,完成IP(OA)、UDP、TCP、GTP‐U 协议模块处理;  Host 部分完成网络处理器运行状态监视、性能统计等功能。

3)Node B设备

EMB5116 基站主要分为如下几个主要组成部分:主机箱、电源单元、EMx 板卡、风机及滤网单元、功能板卡

硬件单元排布如图3所示。

图 3:1EMB5116 槽位框图

4、LMT-B 使用LMT-B软件进行网络布配,完成光纤与RRU的配置 1)单天线模式配置 配置参数见下图:

图表 4: 单天线模式配置详细参数

图表 5:单天线模式配置结果

2)分布式单天线模式配置: 配置参数见下图:

图表 6:分布式天线模式配置详细参数

图表 7:分布式天线配置结果

3)智能天线模式配置参数如下:将天线模式改为智能天线,并需要在连接天线处添加天线,其它参数与单天线相同。添加的天线信息如下:

图表 8:所添加天线信息

图表 9:智能天线模式配置详细参数

图表 10:智能天线配置结果

5、LDT信令跟踪

图 11:设备监视图

图表 12:信令跟踪结果

6、网管操作和OMT创建小区

实验步骤: 增加一个 R4 小区

选择逻辑基站—小区集—右键选择快速创建小区

第一步:

小区基本信息: 小区标识(CellId):

同一个RNC 中的CellId 配置值要求不能重复; 小区参数标识(CellParameterId):

小区参数标识ID 唯一标识了小区中的一组参数:下行同步序列SYNC‐DL、上行同步

序列SYNC‐UL sequences、扰码、midamble 码;

小区特性:

主频段时隙转换点:3(说明小区时隙为2 上4 下,一般为2 上4 下); 其他频段时隙转换点:可以与主频段不一致;

HSDPA 特性:

非HSDPA 小区(可根据需要选择:HSDPA 小区或混合DPA 小区,这里我们选择非HSDPA 小

区是因为我们要创建一个R4 小区); HSUPA 特性:

不支持HSUPA 小区(可根据需要选择支持HSUPA 小区,这里我们选择不支持HSUPA 小区

是因为我们要创建一个R4 小区);

位置区信息:

位置区代码:由RNC 全局参数决定(实验室环境与RNC 一致:比如RNC2,那么就是2);

路由区代码:由RNC 全局参数决定(实验室环境与RNC 一致:比如RNC2,那么就是2);

服务区代码:实验室环境为107; UPA 有效数:1(固定);

其他信息默认,然后选择下一步

第二步:

根据需要选择辅载波的数量;

主载波上行时隙至少要选择一个PRACH; 然后选择下一步;

第三步:

信道功率信息和UpPCH 信道功率信息选择默认即可,这些数值在创建完小区之后,根据需要 是可以修改的;

选择完成,一个R4 小区创建完毕。

四、实验总结

此次实验不仅让我更加深入的了解了TD_SCDMA系统,还认识了许多和移动通信有关的设备,体验了视频通话和手机电视等先进的移动通信技术,极大的增强了我对移动通信的兴趣。

第三篇:北邮嵌入式实验报告

北京邮电大学

嵌入式系统开发实验报告

学院:

班级: 姓名: 学号:

序号:

目录

一、实验目的..............................................................................................1

二、实验设备..............................................................................................1

三、基础实验(实验一~实验七)............................................................1

1.实验五..................................................................................................1 2.实验六..................................................................................................1 3.实验七..................................................................................................1

四、驱动程序..............................................................................................5

1.设备驱动程序的概念..........................................................................5 2.驱动程序结构......................................................................................6 3.设备注册和初始化..............................................................................7 4.设备驱动程序的开发过程..................................................................8

五、基本接口实验......................................................................................8

1.实验十二简单设备驱动程序..............................................................9 2.实验十三 CPU GPIO驱动程序设计...................................................9 3.实验十四中断实验...........................................................................10 4.实验十五数码管显示实验................................................................12 5.实验十六 LED点阵驱动程序设计...................................................19 6.实验十七 AD驱动实验....................................................................23 7.实验十八 DA驱动实验....................................................................26

六、实验中遇到的问题及解决方法........................................................30

七、实验总结及心得................................................................................31

一、实验目的

通过实验熟悉Linux环境,并掌握一些基本接口驱动的写法和用C语言编写简单的实验程序。学习LINUX开发环境的搭建,通讯配置等。并熟练掌握LINUX驱动程序的编写及开发流程。对嵌入式系统有进一步的了解。

二、实验设备

1.一套PXA270EP嵌入式实验箱

2.安装Redhat9的宿主PC机,并且配置好ARM Linux的开发环境

三、基础实验(实验一~实验七)

实验一~七为基础实验,目的是为后续实验搭建好软、硬件环境,配置好相关的协议、服务,并通过编写最简单的HelloWorld程序进行测试。由于后面的实验都要依靠前面实验的配置,故本段只着重叙述实验七的具体实现。

1.实验五

实验五为宿主PC机配置了TFTP服务。TFTP(Trivial File Transfer Protocol)是简单文件传输协议,由于特定开发环境的制约,这一服务是必须的。在配置完成后,每次重启宿主PC机时,都须先输入命令:service xinetd restart,以启动TFTP服务。

2.实验六

实验六为宿主PC机配置了NFS服务。NFS(Network File System)指网络文件系统,它实现了文件在不同的系统间使用。当我们想用远端档案时,只需调用“mount”就可以远端系统挂接在自己的档案系统之下。每次重启宿主PC机时,都须先输入命令:service nfs restart,以启动nfs服务。

3.实验七

实验七通过用c语言编写的简单程序HelloWorld,测试前面几个实验是否成功配置好环境,从超级终端可以看到HelloWorld程序的运行结果。

实验步骤如下: 1)硬件连接:

连接宿主 PC 机和一台 PXA270-RP目标板。2)打开宿主PC 机电源,进入 Linux操作系统。

3)启动RedHat 9.0 的图形界面,如下图,若您是以 root 身份登陆在文本模式下,则输入命令startx启动图形界面。进入RedHat 9.0 图形界面后,打开一个终端窗(Terminal)。

4)输入minicom然后回车,minicim设置为115200 8NI无流控。

5)打开PXA270_RP目标板电源,按目标板上的BOOT键,在minicom中应该会看到如下图:

6)在minicom终端窗口中,如图,输入下列四条命令 root ifconfig eth 192.168.0.50 up mount-o nolock 192.168.0.100:/ /mnt cd /mnt 此时,先将该窗口最小化,在后面的第 10 操作步骤中还将会回到该窗口中进行操作。

7)宿主机上打开一个终端窗口(Terminal),点击【红帽/System Tools/Terminal】启动终端窗口,输入下列 4 条命令: ① cd /home

②mkdir HW

③ cd HW

④ vi

HelloWorld.c

/*请您输入程序 7.1 程序清单*/

此时会显示一个空白的屏幕,这条命令的含义是,使用 Vi 编辑器,对一个名叫HelloWorld.c的文件进行编辑,我们看到的空白窗口是对文件进行编辑的窗口,如下图。就像在 Windows系统下面使用写字板等一样道理。

在 vi 里面先单击键盘 A 键,然后左下角会变成—INSER。输入程序的时候和其他编辑器是一样的,如下图。

当输入程序完毕后,单击键盘 Esc 键,然后按“:”(冒号)此时左下角会出现冒号然后输入“wq”最后按“Enter”确认存盘退出 vi 编辑器,如下图。

8)在上面同一个终端窗口中,输入下列 2 条命令交叉编译HelloWorld.c源程序,并查看生成的.o 目标文件,如图 7-10,图7-11: ①

arm-linux-gcc–oHelloWorldHelloWorld.c ②ls 等到再次出现提示符,代表程序已经正确编译。如果此步出现错误信息,请查看错误信息,并且重新编辑原来的 C文件,修改错误。直到正确编译。

9)重新打开第 7 步最小化的开有minicom的终端窗口,即到 PXA270-RP 目标板的mnt目录下,请您输入下列 3 条命令,运行HelloWorld编译成功的HelloWorld目标程序:

① cd home/HW

/*回到minicom中目标板的/mnt/home/HW目录下*/ ②ls ③./ HelloWorld

/*此时会看到如下图*/

四、驱动程序

1.设备驱动程序的概念

设备驱动程序实际是处理和操作硬件控制器的软件,从本质上讲,是内核中具有最高特权级的、驻留内存的、可共享的底层硬件处理例程。驱动程序是内核的一部分,是操作系统内核与硬件设备的直接接口,驱动程序屏蔽了硬件的细节,完成以下功能:

对设备初始化和释放;

对设备进行管理,包括实时参数设置,以及提供对设备的操作接口; 读取应用程序传送给设备文件的数据或者回送应用程序请求的数据; 检测和处理设备出现的错误。

Linux操作系统将所有的设备全部看成文件,并通过文件的操作界面进行操作。对用户程序而言,设备驱动程序隐藏了设备的具体细节,对各种不同设备提供了一致的接口,一般来说,是把设备映射为一个特殊的设备文件,用户程序可以像对其他文件一样对此设备文件进行操作。这意味着:

由于每一个设备至少由文件系统的一个文件代表,因而都有一个“文件名”。应用程序通常可以通过系统调用open()打开设备文件,建立起与目标设备的连接。

打开了代表着目标设备的文件,即建立起与设备的连接后,可以通过read()、write()、ioctl()等常规的文件操作对目标设备进行操作。

设备文件的属性由三部分信息组成:第一部分是文件的类型,第二部分是一个主设备号,第三部分是一个次设备号。其中类型和主设备号结合在一起惟一地确定了设备文件驱动程序及其界面,而次设备号则说明目标设备是同类设备中的第几个。

由于Linux 中将设备当做文件处理,所以对设备进行操作的调用格式与对文件的操作类似,主要包括open()、read()、write()、ioctl()、close()等。应用程序发出系统调用命令后,会从用户态转到核心态,通过内核将open()这样的系统调用转换成对物理设备的操作。

2.驱动程序结构

一个设备驱动程序模块的基本框架

在系统内部,I/O设备的存取通过一组固定的入口点来进行,入口点也可以理解为设备的句柄,就是对设备进行操作的基本函数。字符型设备驱动程序提供如下几个入口点:

open入口点。打开设备准备I/O操作。对字符设备文件进行打开操作,都会调用设备的open入口点。open子程序必须对将要进行的I/O操作做好必要的准备工作,如清除缓冲区等。如果设备是独占的,即同一时刻只能有一个程序访问此设备,则open子程序必须设置一些标志以表示设备处于忙状态。

close入口点。关闭一个设备。当最后一次使用设备完成后,调用close子程序。独占设备必须标记设备方可再次使用。

read入口点。从设备上读数据。对于有缓冲区的I/O操作,一般是从缓冲区里读数据。对字符设备文件进行读操作将调用read子程序。

write入口点。往设备上写数据。对于有缓冲区的I/O操作,一般是把数据写入缓冲区里。对字符设备文件进行写操作将调用write子程序。

ioctl入口点。执行读、写之外的操作。

select入口点。检查设备,看数据是否可读或设备是否可用于写数据。select系统调用在检查与设备文件相关的文件描述符时使用select入口点。

3.设备注册和初始化

设备的驱动程序在加载的时候首先需要调用入口函数init_module(),该函数最重要的一个工作就是向内核注册该设备,对于字符设备调用register_chrdev()完成注册。register_chrdev的定义为:intregister_chrdev(unsigned int major, const char *name, struct file_ operations *fops);其中,major是为设备驱动程序向系统申请的主设备号,如果为0,则系统为此驱动程序动态分配一个主设备号。name是设备名,fops是对各个调用的入口点说明。此函数返回0时表示成功;返回-EINVAL,表示申请的主设备号非法,主要原因是主设备号大于系统所允许的最大设备号;返回-EBUSY,表示所申请的主设备号正在被其他设备程序使用。如果动态分配主设备号成功,此函数将返回所分配的主设备号。如果register_chrdev()操作成功,设备名就会出现在/proc/dvices文件中。

Linux在/dev目录中为每个设备建立一个文件,用ls–l命令列出函数返回值,若小于0,则表示注册失败;返回0或者大于0的值表示注册成功。注册以后,Linux将设备名与主、次设备号联系起来。当有对此设备名的访问时,Linux通过请求访问的设备名得到主、次设备号,然后把此访问分发到对应的设备驱动,设备驱动再根据次设备号调用不同的函数。

当设备驱动模块从Linux内核中卸载,对应的主设备号必须被释放。字符设备在cleanup_ module()函数中调用unregister_chrdev()来完成设备的注销。unregister_chrdev()的定义为:intunregister_chrdev(unsigned int major, const char *name);包括设备注册在内,设备驱动的初始化函数主要完成的功能是有以下5项。(1)对驱动程序管理的硬件进行必要的初始化。

对硬件寄存器进行设置。比如,设置中断掩码,设置串口的工作方式、并口的数据方向等。

(2)初始化设备驱动相关的参数。

一般说来,每个设备都要定义一个设备变量,用以保存设备相关的参数。在这一步骤里对设备变量中的项进行初始化。

(3)在内核注册设备。

调用register_chrdev()函数来注册设备。(4)注册中断。

如果设备需要IRQ支持,则要使用request_irq()函数注册中断。(5)其他初始化工作。

初始化部分一般还负责给设备驱动程序申请包括内存、时钟、I/O端口等在内的系统资源,这些资源也可以在open子程序或者其他地方申请。这些资源不用时,应该释放,以利于资源的共享。

若驱动程序是内核的一部分,初始化函数则要按如下方式声明: int __initchr_driver_init(void);其中__init是必不可少的,在系统启动时会由内核调用chr_driver_init,完成驱动程序的初始化。

当驱动程序是以模块的形式编写时,则要按照如下方式声明: intinit_module(void)当运行后面介绍的insmod命令插入模块时,会调用init_module函数完成初始化工作。

4.设备驱动程序的开发过程

由于嵌入式设备由于硬件种类非常丰富,在默认的内核发布版中不一定包括所有驱动程序。所以进行嵌入式Linux系统的开发,很大的工作量是为各种设备编写驱动程序。除非系统不使用操作系统,程序直接操纵硬件。嵌入式Linux系统驱动程序开发与普通Linux开发没有区别。可以在硬件生产厂家或者Internet上寻找驱动程序,也可以根据相近的硬件驱动程序来改写,这样可以加快开发速度。实现一个嵌入式Linux设备驱动的大致流程如下。

(1)查看原理图,理解设备的工作原理。一般嵌入式处理器的生产商提供参考电路,也可以根据需要自行设计。

(2)定义设备号。设备由一个主设备号和一个次设备号来标识。主设备号惟一标识了设备类型,即设备驱动程序类型,它是块设备表或字符设备表中设备表项的索引。次设备号仅由设备驱动程序解释,区分被一个设备驱动控制下的某个独立的设备。

(3)实现初始化函数。在驱动程序中实现驱动的注册和卸载。(4)设计所要实现的文件操作,定义file_operations结构。(5)实现所需的文件操作调用,如read、write等。

(6)实现中断服务,并用request_irq向内核注册,中断并不是每个设备驱动所必需的。

(7)编译该驱动程序到内核中,或者用insmod命令加载模块。(8)测试该设备,编写应用程序,对驱动程序进行测试。

五、基本接口实验

在完成了基本实验后,我们开始着手基本接口实验。在这些实验中,我们学习如何编写设备驱动程序,及如何用测试程序检验驱动程序是否正确,并通过改写测试程序正常地对驱动程序进行相关操作。

1.实验十二 简单设备驱动程序

本次实验的任务是编写一个字符型设备驱动程序,并学习在应用程序中调用驱动。考虑到我们初次接触驱动程序的编写,对此还十分陌生,因此指导书中提供了本次实验所要用到的程序源代码。虽然这样一个字符型设备驱动程序并没有任何实际作用,但是它让我们轻松掌握了嵌入式驱动的编写过程,因为复杂繁琐的驱动,其骨架都是相同的。因此,看懂本实验的源代码,学习并模仿其编写方法,对于后续实验有着非常重要的意义。

2.实验十三 CPU GPIO驱动程序设计

在本实验中,我们要编写第一个针对实际硬件的驱动程序。我们知道,凡是操作系统控制外部设备,即使是最简单的硬件电路,也是需要驱动的。本实验涉及的外部硬件只有电阻和发光二极管。我们使用自己编写的驱动程序与应用程序控制 GPIO96的电平,通过 LED 的亮灭来判断,是否 CPU 做出了正确的响应。

补充代码(1)

//-------------------WRITE-----------------------ssize_tSIMPLE_GPIO_LED_write(struct file * file ,const char * buf, size_t count, loff_t * f_ops){ #ifdef OURS_GPIO_LED_DEBUG printk(“SIMPLE_GPIO_LED_write [--kernel--]n”);

#endif

return count;}

补充代码(2)

//-------------------OPEN------------------------ssize_tSIMPLE_GPIO_LED_open(structinode * inode ,struct file * file){ #ifdef OURS_GPIO_LED_DEBUG printk(“SIMPLE_GPIO_LED_open [--kernel--]n”);

#endif

MOD_INC_USE_COUNT;

return 0;}

补充代码(3)

//------------------structfile_operationsGPIO_LED_ctl_ops ={ open:SIMPLE_GPIO_LED_open, read:SIMPLE_GPIO_LED_read, write:SIMPLE_GPIO_LED_write, ioctl:SIMPLE_GPIO_LED_ioctl, release:SIMPLE_GPIO_LED_release, };实验作业

要求在目标板上LED闪烁产生亮7秒,灭2秒的效果 在测试程序中有这样一段代码: while(1){ ioctl(fd,LED_OFF);sleep(1);

sleep(1);while(1){ ioctl(fd,LED_OFF);sleep(2);

sleep(7);} 3.实验十四

中断实验

// 灭2秒 // 亮7秒 ioctl(fd,LED_ON);}

// 休眠1秒

ioctl(fd,LED_ON);只需将上面的代码改为如下代码即可:

在理论课中,我们学习了许多中断方面的知识,包括中断向量、中断优先级、中断过程等。在PXA270系统里,中断控制器分外部设备和 PXA270X 处理器设备产生的两个层次的中断,前者是初级的中断源,后者是次级中断源,大量的次级中断源通常被映射为一个初级中断源。

补充代码1 voidshowversion(void){ printk(“*********************************************n”);

printk(“t %s tn”, VERSION);

printk(“*********************************************nn”);

} static intSimpleINT_temp_count = 0;补充代码2 //-------------------READ------------------------ssize_tSIMPLE_INT_read(struct file * file ,char * buf, size_t count, loff_t * f_ops){

#ifdef OURS_INT_DEBUG

#endif return count;printk(“SIMPLE_INT_read [--kernel--]n”);} 补充代码3 //-------------------WRITE-----------------------ssize_tSIMPLE_INT_write(struct file * file ,const char * buf, size_t count, loff_t * f_ops){

#ifdef OURS_INT_DEBUG

} 补充代码4 //------------------structfile_operationsINT_ctl_ops ={ open: SIMPLE_INT_open, read: SIMPLE_INT_read, #endif return count;printk(“SIMPL_INT_write [--kernel--]n”);write:SIMPLE_INT_write, ioctl:SIMPLE_INT_ioctl, release:SIMPLE_INT_release, };

通过此实验,我了解了硬件中断管脚与中断号的对应关系,以及中断号与中断处理程序的对应关系,对于今后编写更为复杂的中断程序打下基础。

4.实验十五

数码管显示实验

在此实验中,我们要编写针对 74LV164 的驱动程序,并用其串并转换功能来控制八段LED数码管的显示。

补充代码1 voidshowversion(void){ printk(“*********************************************n”);

printk(“t %s tn”, VERSION);

printk(“*********************************************nn”);

} 补充代码2 //-------------------READ------------------------ssize_tSERIAL_LED_read(struct file * file ,char * buf, size_t count, loff_t * f_ops){ #ifdef OURS_HELLO_DEBUG

} 补充代码3 //-------------------WRITE-----------------------ssize_tSERIAL_LED_write(struct file * file ,const char * buf, size_t count, loff_t * f_ops)return count;printk(“SERIAL_LED_read [--kernel--]n”);#endif { #ifdef OURS_HELLO_DEBUG

} 补充代码4 //-------------------IOCTL-----------------------ssize_tSERIAL_LED_ioctl(structinode * inode ,struct file * file, unsigned intcmd, long data){ #ifdef OURS_HELLO_DEBUG

#endif

} 补充代码5 //-------------------OPEN------------------------ssize_tSERIAL_LED_open(structinode * inode ,struct file * file){ #ifdef OURS_HELLO_DEBUG

#endif

return 0;} MOD_INC_USE_COUNT;printk(“SERIAL_LED_open [--kernel--]n”);return 0;printk(“SERIAL_LED_ioctl [--kernel--]n”);return count;#endif write_byte(* buf);printk(“SERIAL_LED_write [--kernel--]n”);补充代码6 //-------------------RELEASE/CLOSE---------------ssize_tSERIAL_LED_release(structinode *inode ,struct file * file){ #ifdef OURS_HELLO_DEBUG

printk(“SERIAL_LED_release [--kernel--]n”);

#endif MOD_DEC_USE_COUNT;return 0;} 补充代码7 //------------------structfile_operationsSERIAL_LED_ops ={ open: SERIAL_LED_open,read: SERIAL_LED_read,write:SERIAL_LED_write,ioctl:SERIAL_LED_ioctl,release:SERIAL_LED_release, };补充代码8 staticint __initHW_SERIAL_LED_init(void){ int ret =-ENODEV;

ret =

devfs_register_chrdev(SERIAL_LED_MAJOR, &SERIAL_LED_ops);

showversion();if(ret < 0)“serial_led_ctl”,} {

} else { } return ret;printk(“ pxa270 serial_led_driver register success!![--kernel--]n”);printk(“ pxa270 init_module failed with %dn [--kernel--]”, ret);return ret;补充代码9 staticint __init pxa270_SERIAL_LED_init(void){ int ret =-ENODEV;

printk(“pxa270_SERIAL_LED_init [--kernel--]n”);

#endif

ret = HW_SERIAL_LED_init();if(ret)return ret;return 0;} 补充代码10 static void __exit cleanup_SERIAL_LED(void){ #ifdef OURS_HELLO_DEBUG #ifdef OURS_HELLO_DEBUG

#endif }

补充代码11 MODULE_DESCRIPTION(“serial_led driver module”);

MODULE_AUTHOR(“liduo”);

MODULE_LICENSE(“GPL”);

module_init(pxa270_SERIAL_LED_init);module_exit(cleanup_SERIAL_LED);使用测试程序看到的测试结果是数码管按0-9显示输出。实验作业要求在上述基础上,分别实现一下两个功能:

①要求您再编写一个测试程序,实现 PXA270-EP 目标板上的 LED 数码管循环显示的数字9-0。

②要求您再编写一个测试程序,实现 PXA270-EP 目标板上的 LED 数码管循环显示的数字02468。

由于在测试程序中定义了数组buf[10]分别存储了0-9是个数,因此上述功能的实现方法是,分别对测试程序做如下修改:

原测试程序: while(1){ for(count=0;count<10;count++){ data[0] = buf[count];ret=write(fd,data,1);sleep(1);} } 实现功能①: while(1){ for(count=9;count>=0;count--)} } 结果显示

// 倒序显示数字

{ data[0] = buf[count];ret=write(fd,data,1);sleep(1);devfs_unregister_chrdev(SERIAL_LED_MAJOR, “serial_led”);printk(“cleanup_SERIAL_LED [--kernel--]n”);实现功能②: while(1){ for(count=0;count<9;count=count+2)} } 结果显示

// 更改显数顺序

{ data[0] = buf[count];ret=write(fd,data,1);sleep(1);

通过更改显数的顺序,很容易实现实验作业里要求的功能。

5.实验十六 LED点阵驱动程序设计

通过本实验的操作,我们将 8X8 的点阵 LED 驱动起来并通过编写测试程序,使其能够按照您的意图进行显示。要求您还编写更多的测试程序

补充代码1 voidshowversion(void){ printk(“*********************************************n”);printk(“t %s tn”, VERSION);printk(“*********************************************nn”);

} 补充代码2 //-------------------READ------------------------ssize_tSIMPLE_LED_read(struct file * file ,char * buf, size_t count, loff_t * f_ops){ #ifdef OURS_LED_DEBUG

#endif return count;printk(“SIMPLE_LED_read [--kernel--]n”);} 补充代码3 //-------------------IOCTL-----------------------ssize_tSIMPLE_LED_ioctl(structinode * inode ,struct file * file, unsigned intcmd, long data){

#endif

} 补充代码4 //------------------structfile_operationsLED_ctl_ops ={ open: SIMPLE_LED_open, read:

SIMPLE_LED_read, write: SIMPLE_LED_write, ioctl: SIMPLE_LED_ioctl, release:SIMPLE_LED_release, };补充代码5 staticint __init pxa270_LED_CTL_init(void){ int ret =-ENODEV;

printk(“pxa270_LED_CTL_init [--kernel--]n”);

#endif

ret = HW_LED_CTL_init();if(ret)

return ret;#ifdef OURS_LED_DEBUG return 0;printk(“SIMPLE_LED_ioctl [--kernel--]n”);#ifdef OURS_LED_DEBUG return 0;} 补充代码6 static void __exit cleanup_LED_ctl(void){

#ifdef OURS_LED_DEBUG

#endif

} ①要求您再编写一个测试程序,实现按横的方向隔行顺序扫描 LED 点阵数码管。

②要求您再编写一个测试程序,实现按竖的方向顺序扫描 LED 点阵数码管。作业一,隔行扫描:

printk(“cleanup_LED_ctl [--kernel--]n”);outw(0x0000,ioremap_addr);

devfs_unregister_chrdev(SIMPLE_LED_MAJOR, “led_ary_ctl”);for(i=1;i<=8;i2++){

buf[0]=c;buf[1]=~r;// row for(j=1;j<=8;j++){

} r = 1;c = c<<1;

write(fd,buf,2);

printf(“buf[0],buf[1]: [%x,%x]n”,buf[0],buf[1]);usleep(200000);// sleep 0.2 second r=r<<1;

buf[1]=~r;// column

结果显示

作业二,竖向扫描:

for(i=1;i<=8;i++){

buf[0]=c;buf[1]=~r;// row for(j=1;j<=8;j++){

} r = 1;c = c<<1;

write(fd,buf,2);

printf(“buf[0],buf[1]: [%x,%x]n”,buf[0],buf[1]);usleep(200000);// sleep 0.2 second r=r<<1;

buf[1]=~r;// column

结果显示

6.实验十七 AD驱动实验

通过本实验的操作,我们将 AD 转换器驱动起来并通过编写测试程序,使其能够将模拟信号量按照我们的要求转换成数字信号量。为了更加清楚地理解 AD 转换器的工作过程,请您再编写一个测试程序,将 UCB_ADC_INP_AD0 换成其他通道,来观察其他 AD 通道情况。

补充代码1 voidshowversion(void){ printk(“%sn”,VERSION);} struct ucb1x00 *ad_ucb;

补充代码2 //-------------------READ------------------------staticssize_tadctl_read(struct file * file ,char *buf, size_t count, loff_t *offset){

} 补充代码3 //-------------------WRITE-----------------------ssize_tadctl_write(struct file * file ,const char *buf, size_t count, loff_t *offset){

#ifdef OURS_HELLO_DEBUG printk(“writen”);

#endif

} 补充代码4 //-------------------OPEN------------------------ssize_tadctl_open(structinode * inode ,struct file * file){

#ifdef OURS_HELLO_DEBUG printk(“openn”);

#endif

}

补充代码5 //-------------------RELEASE/CLOSE---------------ssize_tadctl_release(structinode *inode ,struct file * file){

#ifdef OURS_HELLO_DEBUG printk(“releasen”);

#endif return 0;return 0;return count;#ifdef OURS_HELLO_DEBUG printk(“readn”);#endif return count;} 补充代码6 staticstructfile_operationsadctl_ops = {

};补充代码7 //-------------------INIT------------------------staticint __initHW_AD_CTL_init(void){

return ret;}

补充代码8 staticint __init pxa270_AD_CTL_init(void){ int ret =-ENODEV;#ifdef OURS_HELLO_DEBUG int ret =-ENODEV;ret = devfs_register_chrdev(ADCTL_MAJOR, “adctl”, &adctl_ops);showversion();ad_ucb=ucb1x00_get();if(ret < 0){

} else { } adctl_dev_handle = devfs_register(NULL, “ad_ctl”, DEVFS_FL_DEFAULT, printk(“adctl driver register success!n”);printk(“fail %dn”,ret);return 0;read: ioctl: adctl_read, adctl_ioctl, write: adctl_write, open: adctl_open, release:adctl_release,ADCTL_MAJOR, 0, S_IFCHR, &adctl_ops, NULL);printk(“initn”);#endif ret=HW_AD_CTL_init();if(ret)}

补充代码9 static void __exit cleanup_AD_ctl(void){

}

7.实验十八 DA驱动实验

通过本实验的操作,我们使用示波器看到了通过DA转换而输出的波形。在此基础上,要求试写一个实现输出三角波的测试程序。

补充代码1 #include #include #include #include #include #include #include #include 补充代码2 voidshowversion(void){ printk(“*****************************n”);#ifdef OURS_HELLO_DEBUG printk(“cleanupn”);#endif devfs_unregister_chrdev(ADCTL_MAJOR,“ad_ctl”);devfs_unregister(adctl_dev_handle);return ret;return 0;

} printk(“t %st n”,VERSION);printk(“*****************************n”);static long ioremap_addr;补充代码3 //-------------------READ------------------------ssize_tSIMPLE_DA_read(struct file * file ,char * buf, size_t count, loff_t * f_ops){ #ifdef OURS_DA_DEBUG

} 补充代码4 //-------------------WRITE-----------------------ssize_tSIMPLE_DA_write(struct file * file ,const char * buf, size_t count, loff_t * f_ops){

printk(“SIMPLE_DA_write[--kernel--]n”);

#endif

return count;} 补充代码5 //-------------------IOCTL-----------------------ssize_tSIMPLE_DA_ioctl(structinode * inode ,struct file * file, unsigned intcmd, outb(buf[0],ioremap_addr);#ifdef OURS_DA_DEBUG return count;#endif printk(“SIMPLE_DA_read[--kernel--]n”);long data){ #ifdef OURS_DA_DEBUG

printk(“SIMPLE_DA_ioctl[--kernel--]n”);

#endif return 0;} 补充代码6 //-------------------OPEN------------------------ssize_tSIMPLE_DA_open(structinode * inode ,struct file * file){

#ifdef OURS_DA_DEBUG printk(“SIMPLE_DA_open [--kernel--]n”);

MOD_INC_USE_COUNT;return 0;

#endif } 补充代码7 /------------------structfile_operationsDA_ctl_ops ={

read: SIMPLE_DA_read,};

补充代码8 release:

SIMPLE_DA_release, ioctl:

SIMPLE_DA_ioctl, write:

SIMPLE_DA_write, //-------------------INIT------------------------staticint __initHW_DA_CTL_init(void){ int ret =-ENODEV;

}

补充代码9 staticint __init pxa270_DA_CTL_init(void){ int ret =-ENODEV;

printk(“pxa270_DA_CTL_init [--kernel--]n”);

#endif #ifdef OURS_DA_DEBUG } printk(“ pxa270 led_driver register success!![--kernel--]n”);{ else } return ret;printk(“ pxa270: init_module failed with %dn [--kernel--]”, ret);{ if(ret < 0)showversion();ret = devfs_register_chrdev(SIMPLE_DA_MAJOR, “da_ctl”, &DA_ctl_ops);

ret = HW_DA_CTL_init();if(ret)

return ret;return 0;} 补充代码10 static void __exit cleanup_DA_ctl(void){

#endif } 补充代码11 MODULE_DESCRIPTION(“DA_ctl driver module”);MODULE_AUTHOR(“liduo”);MODULE_LICENSE(“GPL”);module_init(pxa270_DA_CTL_init);module_exit(cleanup_DA_ctl);printk(“cleanup_DA_ctl [--kernel--]n”);#ifdef OURS_DA_DEBUG

六、实验中遇到的问题及解决方法

每一次上课重新启动后,当需要将宿主PC机的根目录挂在到PXA270-EP目标板的mnt目录下(即在超级终端中输入命令“mount –o soft,timeo=100,rsize=1024 192.168.0.100:/ /mnt”)时,常显示无法挂载。

解决方法:在超级终端下的挂载命令应该用”mount –o nolock 192.168.0.100:/ /mnt”,如果依然不能挂载需要重启NFS服务,即在PC机终端中输入命令”service nfs restart”两遍后就可以挂载,当然有时候也可能是因为网线没插好。

在每次重启机器之后都需要将PC机终端的IP地址和开发板中的系统的IP地址设定正确,不然也无法挂载。

七、实验总结及心得

本学期的所有实验均在宿主PC机与PXA270-EP目标板上进行。在实验中,我们先建立硬件实验平台,又建立主机软件开发环境,接着为实验进行各项配置,最后完成了各个实验中的多种功能。值得注意的是,前期的硬件、软件准备必须完整无误地实现,后续的实验才能顺利进行。所以,打基础的工作一定要仔细谨慎。后续实验中虽然给出了驱动程序的框架,仍需要我们自己补充完整,并开动脑筋举一反三,在原代码的基础上进行一定修改以实现新的功能。

通过这学期的实验,我逐步完成了建立实验软件开发平台,搭建实验编译软件环境,在PC上编辑、编译一个应用程序,并且在嵌入式系统上运行和调试它的过程。在实验中,不难发现,编译驱动程序大体框架都是一样的,比如里面的读函数、写函数、ioctl函数、打开、关闭以及函数模块的初始化并且在超级终端上显示出等。但所不同的是,要根据不同的实验要求修改名称,并且对其中必要的部分进行修改。

除此之外,我认为很多基础知识对实验的进行也起着非常大的作用,例如数码管的显示原理。在掌握了基础知识之后,上机的过程会显得相对简单,尤其是代码框架已经给出,我们所以需要做的就是根据需要稍作改动来得到我们想要的结果。

在实验过程中常常会遇到各种各样的问题,刚开始时我不知如何是好,只能求助于老师和同学,后来随着实验的进行,我对实验的内容和虚拟机都有了一定的了解,遇到问题时也可以静下心来思考其原因,自己尝试各种方法去解决问题。整个实验让我了解了一套完整的嵌入式系统驱动程序开发的全过程,学到的内容非常丰富,相信在学习了这些内容后,在今后的学习工作中接触到类似内容,我不会感到无从下手,而是能够有条不紊。

感谢老师的辛勤指导!

第四篇:北邮数据库实验报告

数据库实验报告

(三)姓名:学号:班级:

1.用Transact-SQL语句、数据导入、SQL Server Management Studio(企业管理器)输入的方法对所给定的8张表的数据输入到数据库中。自行决定每张表的数据导入办法,但每种方法各针对二或三张表。

 Transact-SQL语句: 导入department,student, student_course表。

insertinto department select*from openrowset

('microsoft.jep.oledb.4.0','excel 5.0;hdr=yes;database=D:课件数据库database2.xls',department$);

insertinto student select*from openrowset

('microsoft.jep.oledb.4.0','excel 5.0;hdr=yes;database=D:课件数据库database2.xls',student$);

insertinto student_course select*from openrowset

('microsoft.jep.oledb.4.0','excel 5.0;hdr=yes;database=D:课件数据库database2.xls',student_course$);

 数据导入:

操作:选中数据库studentsdb,右键-任务-导入数据。导入book, class, course表。

SQL Server Management Studio: 操作:右键需要编辑的表,选择编辑前200行。

Teacher:

Teacher_course_class:

导入结果: Book:

Class:

Course:

Department:

Student:

Student_course:

Teacher:

Teacher_course_class:

2.用Transact-SQL向Course表中插入一条记录,course_name为空,看运行的结果。

SQL语句:

INSERTINTO course VALUES('dep02_s002', null,'dep02_s002', '72', '5', '4');运行结果:

分析:course_name有not null的约束,因此这条语句不能执行。

3.用Transact-SQL修改Course表中credit为5的记录,将其credit改为7, credit小于4的改为2,看运行的结果。

SQL语句:

update course set credit=7 where credit=5;执行结果:

分析:约束C1指定了credit的范围为1至6.SQL语句:

update course set credit=2 where credit<4;执行结果:

4.删除一条学生记录,看运行结果,对运行结果进行分析。SQL语句:

deletefrom student where student_id='g9940201';执行结果:

分析:因为有参照完整性约束,不能删除。

5.用Transact-SQL完成将编号为dep04_b001的课程的选修信息插入到一个新的选课信息表中。

SQL语句:

Creattablestudent_course2(course_idchar(20), student_idchar(20)gradeint, creditint, semesterint,school_yearchar(20),primarykey(course_id,student_id));

insertintostudent_course2 select*fromstudent_course wherecourse_id='dep04_b001';执行结果:

6.用Transact-SQL完成删除单片机原理课程的选课信息,分析运行结果。

SQL语句:

deletefrom student_course where course_id in(select course_id from course

where course_name='单片机原理')执行结果: 分析:所有课程号为dep04_s003的课程被删除。

本实验中遇到的问题和解决方法:

本实验的顺利完成需要预先作很多准备工作。以下就是我在遇到缺少组件accessdatabaseengine时的解决过程的记录。

AccessDatabaseEngine的安装

accessdatabaseengine用于和office连接,导入导出数据,本实验中需要导入excel文件。安装配合office的版本,我安装的是accessdatabaseengine2017(English)版本。安装32位版本,因office2016是32位。之前误操作安装了不能使用的老旧版本accessdatabaseengine2007,通过控制面板-应用程序卸载将其卸载了。安装accessdatabaseengine依然报错,是因为microsoftofficeclicktorun阻碍sqlserver的一些功能,需要将其卸载。这是微软推出的用于减少office打开速度的应用程序,安装office2016时会自动安装上,原理是开机时将一部分内容放到内存中,因此打开文件时会更快一些。检测自己的office是通过clickto run 还是MSI安装的,可以在word中点击文件-账户,查看产品信息,如果有下图中“office更新”这个选项,则说明安装过click to run。这个程序在控制面板-应用程序中找不到,因此用删除注册表的方式卸载。快捷键“win+R”输入“regedit”打开注册表编辑器,左边HKEY_CLASSES_ROOT-Installer-Product-00006开头的选项,有四个。单击这几个选项,在右侧查看详细信息,可以看到ProductNam是Microsoft Access database engine 202_(我原来误安装的老版本)。删除之前先备份注册表。方法一:选中要删除的文件,右键-导出,保存。只保存了要删除的文件。方法二:注册表编辑器,文件-导出,保存。保存了注册表所有信息。这是因为如果误删了重要文件会导致严重后果,可能需要重装系统,留此备份是为了可以恢复系统。

备份完之后,选中要删除的文件(00006开头的四个),右键-删除即可。回到Access database engine 32位的程序安装包,安装。我无法安装64位,可能是因为office是32位。安装成功之后就可以在sqlserver中导入excel文件了。

第五篇:北邮通信原理通原实验16QAM

实验

二、16QAM调制

一、实验目的

1、学会使用SystemView观察信号的星座图与眼图,分析性能

2、学习正交幅度调制解调的基本原理。

二、实验原理

1、正交幅度调制

QAM是由两个正交载波的多电平振幅键控信号叠加而成的,因此正交幅度调制是一种频谱利用率很高的调制方式。同时利用已调信号在同一带宽内频谱正交的性质来实现两路并行的数字信息在一个信道中传输。

2、调制原理

3、解调原理

4、眼图

眼图的“眼睛”的大小代表码间串扰的情况。“眼睛”张开的越大,表示码间串扰越小;反之表示码间串扰越大。

5、星座图

我们通常把信号矢量端点的分布图称为星座图。它对于调制方式的误码率有很直观的判断。

三、实验内容

1、在system view软件中做出仿真连线图。

2、设置参数,观察调制信号波形

3、眼图设置:在SystemView中,在分析窗口单击图标,选择style,单击slice,并且设置合适的起点和终点的时间切片,然后选择信号后,得到眼图。

4、星座图设置:在SystemView中,在分析窗口中单击图标,选择style,单击scatter plot,在右侧的窗口中选择所需要观察的信号波形,确定,得到星座图。

5、设置无噪声和有噪声情况参数,对眼图和星座图进行对比分析。

四、实验结果

1、无噪声情况下,即序列均值为0,方差为0。原基带信号:

调制信号(同向)

(正交)

无噪眼图:

无噪星座图:

2、有噪声:均值为0,方差为1 眼图(有噪):

星座图(有噪):

五、结果分析

从上述实验结果图中可以看出:

1、原基带信号经过调制后,同向正交都满足。

2、在无噪情况下,眼图较清晰,眼睛睁开较大,表明码间干扰较小;

星座图能量较规整,误码率相对较低。

3、在有噪情况下,眼图较,眼睛睁开较小,表明码间干扰较大;

星座图能量杂乱,误码率较高。

4、可见,噪声对系统性能有一定影响。

六、心得体会

通过这次实验,我在通原理论的基础上又比较系统地了解了16QAM的调制与解调,在做实验仿真时总会遇到各种问题,在这种情况下就会努力找到最饥饿路径解决问题,无形间提高了我们的动手和动脑能力,并且同学之间还能相互探讨,相互促进吧。

通过实验我也知道了平时所学如果不加以实践的话等于纸上谈兵。在实验中我们对16QAM的调制解调在噪声存在与否、滤波带宽、阶数等参数进行不同设置,特别好地从不同方面、深入地理解通信的知识。

北邮通原硬件实验报告(全文5篇)
TOP