问题解释东大《数字信号的处理器原理及应用B》离线作业.docx

上传人:b****8 文档编号:10871352 上传时间:2023-02-23 格式:DOCX 页数:13 大小:21.95KB
下载 相关 举报
问题解释东大《数字信号的处理器原理及应用B》离线作业.docx_第1页
第1页 / 共13页
问题解释东大《数字信号的处理器原理及应用B》离线作业.docx_第2页
第2页 / 共13页
问题解释东大《数字信号的处理器原理及应用B》离线作业.docx_第3页
第3页 / 共13页
问题解释东大《数字信号的处理器原理及应用B》离线作业.docx_第4页
第4页 / 共13页
问题解释东大《数字信号的处理器原理及应用B》离线作业.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

问题解释东大《数字信号的处理器原理及应用B》离线作业.docx

《问题解释东大《数字信号的处理器原理及应用B》离线作业.docx》由会员分享,可在线阅读,更多相关《问题解释东大《数字信号的处理器原理及应用B》离线作业.docx(13页珍藏版)》请在冰豆网上搜索。

问题解释东大《数字信号的处理器原理及应用B》离线作业.docx

问题解释东大《数字信号的处理器原理及应用B》离线作业

东北大学继续教育学院

数字信号处理器原理及应用试卷(作业考核线下)B卷(共4页)

总分

题号

得分

一、判断题(2分/题)

1.数字信号处理器(DSP)主要针对描述连续信号的模拟信号进行运算。

(对)

2.DSP是在数字信号变换成模拟信号以后进行高速实时处理的专用处理器。

(错)

3.定点与浮点DSP的基本差异在于它们各自表达的数值范围不同。

(错)

4.Q30格式的数据可以表达

之间的范围。

(对)

5.当采用双电源器件芯片设计系统时,需要考虑系统上电或掉电操作过程中内核和IO供电的相对电压和上电次序。

(对)

6.F2812处理器的所有外设寄存器全部分组为外设帧PF0,PF1和PF2。

这些帧都映射到处理器的数据区。

(对)

7.当捕获单元完成一个捕获时,在FIFO中至少有一个有效的值,如果中断未被屏蔽,中断标志位置位,产生一个外设中断请求。

(对)

8.CAN的基本协议只有物理层协议和网络层协议。

(错)

9.多处理器通信方式主要包括空唤醒(idle-line)或地址位(addressbit)两种多处理器通信模式。

(对)

10.在TMS320F2812数字信号处理器中,ADC模块是一个12位带流水线的模数转换器。

(对)

二、选择题(2分/题)

1.为避免产生短通状态可以采用两种方法:

调整功率管或者B

A调整PWM控制信号B调整CPU频率C调整通信速率D调整系统时间

2.光电编码器,是一种通过光电转换将输出轴上的机械几何位移量转换成B的传感器

A模拟量B脉冲或数字量C通信数据D输入数据

3.当电机轴上的光电编码器产生正交编码脉冲时,可以通过两路脉冲的先后次序确定电机的A

A转动方向B角位置C角速度D线速度

4.当使用正弦调整时,PWM产生的交流电机的电流对称PWM信号与非对称的PWM信号相比A

A非对称PWM信号小B一样大C对称PWM信号小D不确定

5.如果不明原因使CPU进入死循环,而不进行看门狗复位,看门狗将产生一个D信号

A警告B错误C提示D复位

6.TMS320F2812的串口SCI的数据帧包括B个起始位

A2B1C0D1.5

7.TMS320F2812的ADC模块有A采样和保持(S/H)器

A两个B一个C四个D三个

8.当PWM输出为低电平有效时,它的极性与相关的非对称/对称波形发生器的极性B

A无关B相反C相等D相同

9.在电机控制系统中,PWM信号控制功率开关器件的导通和关闭,功率器件为电机的绕组提供期望的B

A电阻B电流和能量C电感D电容

10.带死区的PWM的死区时间由C所决定

A功率转换器的开关特性B具体应用中的负载特征

C功率转换器的开关特性以及在具体应用中的负载特征D2812时钟特征

11.当传输完特定的位数后,接收到的数据被发送到SPIRXBUF寄存器,以备CPU读取。

数据在SPIRXBUF寄存器中,采用B的方式存储。

A左对齐B右对齐C中间对齐D随机位置

12.CAN2.0B总线规范定义扩展帧有A位的标识符

A11B16C29D9

13.中断使能寄存器的16位分别控制每个中断的使能状态,当相应的位D时使能中断

A悬空B清0C读取D置1

14.PWM信号是一系列B的脉冲信号

A可变周期B可变脉宽C可变幅度D可变幅度和周期

15.采用功率开关管在输出大电流的情况下,可以通过使开关管工作在D来获得较小功率损耗

A线性区域B放大状态C静态切换状态D击穿状态

16.带死区的PWM的死区时间由C所决定

A功率转换器的开关特性B具体应用中的负载特征

C功率转换器的开关特性以及在具体应用中的负载特征D2812时钟特征

17.TMS320X28XX系列处理器通过访问D来访问内置的外部设备

A数据总线B只读存储器C 地址总线D存储器中的寄存器

18.看门狗可以提高系统的C

A工作效率B美观程度C可靠性D时钟频率

19.看门狗计数器最大计数值是A

A256B254C255C257

20.此C281xCPU除了支持B个CPU级的中断外

A64B16C32D8

三、简答题(5分/题)

1.DSP技术的发展趋势有哪些?

答:

DSP技术的发展趋势表现在:

①数字信号处理器的内核结构进一步改善,多通道结构和单指令多种数据、特大指令字组将在新的高性能处理器中将占主导地位;②DSP和微处理器融合;③DSP和高档CPU融合;④DSP和SOC融合;⑤DSP和FPGA融合。

2.简述锁相环的作用?

答:

锁相环的作用是使得电路上的时钟和某一外部时钟的相位同步,具体如下:

①锁相环可以实现输出信号频率对输入信号频率的自动跟踪;②锁相环在工作的过程中,当输出信号的频率与输入信号的频率相等时,输出电压与输入电压保持固定的相位差值,即输出电压与输入电压的相位被锁住。

 

3.简述如何不让看门狗复位系统

答:

在正常操作期间,一次WDT超时溢出将产生一次器件复位。

当器件处于休眠状态时,一次WDT超时溢出将唤醒器件,使其继续正常操作(即称作WDT唤醒)。

对WDTE设置位清零可以永久性地关闭WDT,也就是不让看门够复位。

4.简述2812数字IO的输入量化原理和作用

答:

2812数字IO的输入采用均匀间隔量化级进行量化的方法称为均匀量化或线性量化。

这种量化方式会造成大信号时信噪比有余而小信号时信噪比不足的缺点。

如果较小信号时量化级间度小些,而大信号时景化级间宽度大些,就可以使小信号时和大信号时的信噪比趋于—致。

这种非均匀量化级的安排称为非均匀量化或非线性量化。

数字电视信号大多数采用非均匀量化方式,这是由于模拟视频信号要经过伽玛校正,而伽玛校正类似非线性量化特性,可减轻小信号时误差的影响。

当前的音/视频设备做A/D转换时多采用非线性量化。

5.简述PWM死区的必要性

答:

由于IGBT(绝缘栅极型功率管)等功率器件都存在一定的结电容,所以会造成器件导通关断的延迟现象。

一般在设计电路时已尽量降低该影响,比如尽量提高控制极驱动电压电流,设置结电容释放回路等。

为了使igbt工作可靠,避免由于关断延迟效应造成上下桥臂直通,有必要设置死区时间,也就是上下桥臂同时关断时间。

死区时间可有效地避免延迟效应所造成的一个桥臂未完全关断,而另一桥臂又处于导通状态,避免直通炸模块。

6.简述CAN总线采用的“载波监测、多主掌控/冲突避免”的工作方式

答:

CAN总线采用的是一种叫做“载波监测,多主掌控/冲突避免”(CSMA/CA)的通信模式。

这种总线仲裁方式允许总线上的任何一个设各都有机会取得总线的控制权并向外发送数据。

如果在同一时刻有2个或2个以上的设各要求发送数据,就会产生总线冲突,CAN总线能够实时地检测这些冲突并对其进行仲裁,从而使具有高优先级的数据不受任何损坏地传输。

四、综合题(5分/题)

1.编写一个初始化SPI模块初始化程序,采用无延时下降沿传送数据,16位数据帧,主模式,通信速率300Kbps

 

2.编写一个外设时钟配置程序,除ADC模块以外,其他全禁止。

解:

void__initsbc2440_map_io(void)

{

s3c24xx_init_io(sbc2440_iodesc,ARRAY_SIZE(sbc2440_iodesc));

s3c24xx_init_clocks(12000000);

s3c24xx_init_uarts(sbc2440_uartcfgs,ARRAY_SIZE(sbc2440_uartcfgs));

s3c24xx_set_board(&sbc2440_board);

s3c_device_nand.dev.platform_data=&bit_nand_info;

}

/*tableofsupportedCPUs*/

staticconstcharname_s3c2410[] ="S3C2410";

staticconstcharname_s3c2440[] ="S3C2440";

staticconstcharname_s3c2410a[]="S3C2410A";

staticconstcharname_s3c2440a[]="S3C2440A";

staticstructcpu_tablecpu_ids[]__initdata={

{

.idcode      =0x32410000,

.idmask      =0xffffffff,

.map_io      =s3c2410_map_io,

.init_clocks   =s3c2410_init_clocks,

.init_uarts   =s3c2410_init_uarts,

.init      =s3c2410_init,

.name      =name_s3c2410

},

{

.idcode      =0x32410002,

.idmask      =0xffffffff,

.map_io      =s3c2410_map_io,

.init_clocks   =s3c2410_init_clocks,

.init_uarts   =s3c2410_init_uarts,

.init      =s3c2410_init,

.name      =name_s3c2410a

},

{

.idcode      =0x32440000,

.idmask      =0xffffffff,

.map_io      =s3c2440_map_io,

.init_clocks   =s3c2440_init_clocks,

.init_uarts   =s3c2440_init_uarts,

.init      =s3c2440_init,

.name      =name_s3c2440

},

{

.idcode      =0x32440001,

.idmask      =0xffffffff,

.map_io      =s3c2440_map_io,

.init_clocks   =s3c2440_init_clocks,

.init_uarts   =s3c2440_init_uarts,

.init      =s3c2440_init,

.name      =name_s3c2440a

}

};

structclk{

structlist_head     list;

structmodule       *owner;

structclk          *parent;

constchar          *name;

int           id;

atomic_t             used;

unsignedlong        rate;

unsignedlong        ctrlbit;

int         (*enable)(structclk*,intenable);

};

/*clockinformation*/

staticLIST_HEAD(clocks);

staticDECLARE_MUTEX(clocks_sem);

staticstructclkinit_clocks[]={

{.name   ="nand",

.id     =-1,

.parent =&clk_h,

.enable =s3c24xx_clkcon_enable,

.ctrlbit=S3C2410_CLKCON_NAND

},

{.name   ="lcd",

.id     =-1,

.parent =&clk_h,

.enable =s3c24xx_clkcon_enable,

.ctrlbit=S3C2410_CLKCON_LCDC

},

{.name   ="usb-host",

.id     =-1,

.parent =&clk_h,

.enable =s3c24xx_clkcon_enable,

.ctrlbit=S3C2410_CLKCON_USBH

},

{.name   ="usb-device",

.id     =-1,

/*.parent =&clk_h,*/

.parent =&clk_xtal,

.enable =s3c24xx_clkcon_enable,

.ctrlbit=S3C2410_CLKCON_USBD

},

{.name   ="timers",

.id     =-1,

.parent =&clk_p,

.enable =s3c24xx_clkcon_enable,

.ctrlbit=S3C2410_CLKCON_PWMT

},

{.name   ="sdi",

.id     =-1,

.parent =&clk_p,

.enable =s3c24xx_clkcon_enable,

.ctrlbit=S3C2410_CLKCON_SDI

},

{.name   ="uart",

.id     =0,

.parent =&clk_p,

.enable =s3c24xx_clkcon_enable,

.ctrlbit=S3C2410_CLKCON_UART0

},

{.name   ="uart",

.id     =1,

.parent =&clk_p,

.enable =s3c24xx_clkcon_enable,

.ctrlbit=S3C2410_CLKCON_UART1

},

{.name   ="uart",

.id     =2,

.parent =&clk_p,

.enable =s3c24xx_clkcon_enable,

.ctrlbit=S3C2410_CLKCON_UART2

},

{.name   ="gpio",

.id     =-1,

.parent =&clk_p,

.enable =s3c24xx_clkcon_enable,

.ctrlbit=S3C2410_CLKCON_GPIO

},

{.name   ="rtc",

.id     =-1,

.parent =&clk_p,

.enable =s3c24xx_clkcon_enable,

.ctrlbit=S3C2410_CLKCON_RTC

},

{.name   ="adc",

.id     =-1,

.parent =&clk_p,

.enable =s3c24xx_clkcon_enable,

.ctrlbit=S3C2410_CLKCON_ADC

},

{.name   ="i2c",

.id     =-1,

.parent =&clk_p,

.enable =s3c24xx_clkcon_enable,

.ctrlbit=S3C2410_CLKCON_IIC

},

{.name   ="iis",

.id     =-1,

.parent =&clk_p,

.enable =s3c24xx_clkcon_enable,

.ctrlbit=S3C2410_CLKCON_IIS

},

{.name   ="spi",

.id     =-1,

.parent =&clk_p,

.enable =s3c24xx_clkcon_enable,

.ctrlbit=S3C2410_CLKCON_SPI

},

{.name   ="watchdog",

.id     =-1,

.parent =&clk_p,

.ctrlbit=0

}

};

int__inits3c24xx_setup_clocks(unsignedlongxtal,

unsignedlongfclk,

unsignedlonghclk,

unsignedlongpclk)

{

structclk*clkp=init_clocks;

intptr;

intret;

printk(KERN_INFO"S3C2410Clocks,(c)2004SimtecElectronics\n");

/*initialisethemainsystemclocks*/

clk_xtal.rate=xtal;

clk_h.rate=hclk;

clk_p.rate=pclk;

clk_f.rate=fclk;

/*itlookslikejustsettingtheregisterhereisnotgood

*enough,andcausestheoddhangatinitialboottime,so

*doallofthemindivdually.

*

*IthinkdisablingtheLCDclockiftheLCDisactiveis

*verydangerous,andthereforethebootloadershouldbe

*carefultonotenabletheLCDclockifitisnotneeded.

*

*andofcourse,thislooksneater

s3c24xx_clk_enable(S3C2410_CLKCON_NAND,0); //ghcstop:

disable?

==>enable

s3c24xx_clk_enable(S3C2410_CLKCON_USBH,0);

s3c24xx_clk_enable(S3C2410_CLKCON_USBD,0);

s3c24xx_clk_enable(S3C2410_CLKCON_ADC,1);

s3c24xx_clk_enable(S3C2410_CLKCON_IIC,0);

s3c24xx_clk_enable(S3C2410_CLKCON_SPI,0);

//s3c24xx_clk_enable(S3C2410_CLKCON_IIS,0);//defaultvalueis1==>enable

if(s3c24xx_register_clock(&clk_xtal)<0)

printk(KERN_ERR"failedtoregistermasterxtal\n");

if(s3c24xx_register_clock(&clk_f)<0)

printk(KERN_ERR"failedtoregistercpufclk\n");

if(s3c24xx_register_clock(&clk_h)<0)

printk(KERN_ERR"failedtoregistercpuhclk\n");

if(s3c24xx_register_clock(&clk_p)<0)

printk(KERN_ERR"failedtoregistercpupclk\n");

/*registerclocksfromclockarray*/

for(ptr=0;ptr

ret=s3c24xx_register_clock(clkp);

if(ret<0){

printk(KERN_ERR"Failedtoregisterclock%s(%d)\n",

clkp->name,ret);

}

}

return0;

}//s3c24xx_setup_clocks()end

/*baseclocks*/

staticstructclkclk_xtal={

.name      ="xtal",

.id      =-1,

.rate      =0,

.parent      =NULL,

.ctrlbit   =0,

};

staticstructclkclk_f={

.name      ="fclk",

.id      =-1,

.rate      =0,

.parent      =NULL,

.ctrlbit   =0,

};

staticstructclkclk_h={

.name      ="hclk",

.id      =-1,

.rate      =0,

.parent      =NULL,

.ctrlbit   =0,

};

staticstructclkclk_p={

.name      ="pclk",

.id      =-1,

.rate      =0,

.parent      =NULL,

.ctrlbit   =0,

};

adc_clock=clk_get(NULL,"adc");

if(!

adc_clock){

printk(KERN_ERR"failedtogetadcclocksource\n");

return-ENOENT;

}

clk_use(adc_clock);

clk_enable(adc_clock);

list_for_each_entry(p,&clocks,list){

if(p->id==-1&&strcmp(id,p->name)==0&&

try_module_get(p->owner)){

clk=p;

break;

}

}

intclk_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 临床医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1