问答题

试题一(共15分)<br>阅读下列说明和图、表,回答问题1至问题3,将解答填入答题纸的对应栏内。<br>【说明】<br>某车载导航系统的结构如图1-1所示,由导航处理系统和显示系统两部分组成。导航处理系统安装在某型车的设备区,显示系统安装在某型车的前方,便于驾驶员观看和操作。<br>导航处理系统由主处理机模块、电子盘模块、信号处理模块和电源模块组成,主处理机模块执行电子地图功能、导航控制功能等,生成的导航显示画面通过信号线在LCD液晶彩色显示屏显示给驾驶员;信号处理模块处理外部采集数据,将处理后的数据通过内部总线传输给主处理机模块;电子盘模块存储电子地图数据及导航数据。<br>显示系统由LCD液晶彩色显示屏、面板键盘(自定义键盘)和电源模块组成,主要是显示导航画面,也可通过面板键盘进行导航控制。<br>【问题1】(6分)<br>GPS天线接收卫星信号,将定位信息以帧的形式,通过RS232串行接口传输给主处理机模块。通常RS232的管脚规格如表1-1所示。<br>采用RS232通信,如果发送的数据量超过接收方缓冲区时,可能在接收方缓冲区因处理时间延迟等导致接收数据丢失。因此,需要进行流量控制。<br>请回答下面三个问题,将答案填写在答题纸的对应栏中。<br>(1)如果通过软件进行流量控制,也就是将流量控制信息以特殊的数据进行发送,使用上表中的哪两个管脚进行状态信息发送?(回答管脚名称)<br>(2)如果通过硬件方式进行流量控制,使用上表中的哪两个管脚进行状态信息发送?(回答管脚名称)<br>(3)若RS232适配器的FIFO深度为4字节,通信波特率为9600bps,数据位为8位,无校验,停止位为1,无数据流控。在应用设计中每次以4字节为单位进行数据发送,每两次发送之间严格控制时间间隔为10ms,连续发送100次,在此过程中,忽略所有由于调度等因素引起的发送延迟。那么,从第1次发送开始,到第100次数据发送出去,消耗的时间为多少ms?<br>【问题2】(6分)<br>主处理机模块与信号处理模块间通过双端口存储器进行数据交换。李工设计时,将双端口存储器空间划分为两个缓冲区,两个缓冲区分别交替地接收信号处理机传输来的最新数据,然后按数据块方式提供给用户程序使用。<br>假设每个缓冲区的大小为512KB,将512KB数据写入当前空闲缓冲区接口服务为Write_Buffer,将当前有效的512KB数据读出缓冲区韵接口服务为Read_Buffer,假设双端口存储器中不提供硬件信号量,两个缓冲区间的互斥操作由软件标记实现,软件对双端口存储器的单次操作(读写一个字的操作)为原子操作。<br>下面是用C语言设计的一组对双缓冲区的管理程序代码,请填补该程序代码中的空缺,将答案填写在答题纸上。<br>int *BufferFlag[2]; /* 0表示无有效数据,0xff表示有新数据 */<br>int *Mutex[2]; /* 软件锁,0表示未锁定,0xff表示锁定 */<br>int Read_Buffer(int id,char*data); /* 从缓冲区读数据,用于数据处理模块,id表示缓冲的序列号,0表示缓冲区1,1表示缓冲区2,data为存放读取数据的缓冲,返回值表示读取到有效数据的长度 */<br>void Write_Buffer(int id, char *data);/* 向缓冲区写数据,用于信号处理模块,id表示缓冲的序列号,0表示缓冲区1,1表示缓冲区2,data为待写入数据的缓冲 */<br>int INIT_PPC(){ /*数据处理模块端的初始化,缓冲区起始地址为0xffffc000。*/<br>BufferFlag=(int*)0xffffc000;<br>Mutex=(int*) 0xffffc010;<br>*BufferFlag[0]=0;<br>*BufferFlag[1]=0;<br>*Mutex[0]=0;<br>*Mutex[1]=0;<br>retun (0);<br>}<br>int PPC_Read Data(char*Data){ /* 数据处理模块读数据程序段 */<br>int len=0;<br>if((!(*BufferFlag[0]))&&(!(*BufferFlag[1]))){<br>retum (0); /*无新数据*/<br>}<br>if(*BufferFlag[0]){<br>if((1) ){<br>*Mutex[0]=0xff;<br>len= Read_Buffer(0,Data);<br>*BufferFlag[0]=0x00;<br>(2);<br>}<br>}<br>else{<br>if(*BufferFlag[1]){<br>if(!(*Mutex[1])){<br>*Mutex[1]= 0xff;<br>(3)<br>*BufferFlag[1]=0x00;<br>*Mutex[1]= 0x00;<br>}<br>}<br>}<br>return (len),<br>}<br>int DSP_Write_Data(){<br>/*信号处理模块写数据程序段,初始化与数据处理模块端类似,同样以BufferFlag表示与数据处理模块端的对应的标志,即两端操作的是相同的地址空间; 同样Mutex也表示与数据处理模块端的对应的软件锁,即两端操作的是相同的地址空间。这里就略去双口在DSP上的起始地址说明和初始化部分。*/<br>char Data[1024*512];<br>while(1){<br>∥等待信号处理模块产生新的数据并存入数据缓冲Data中;<br>if(!(*Mutex[0])){<br>*Mutex[0]=0xff;<br>Write_Buffer(0,Data);<br>*BufferFlag[0]= 0xff;<br>*Mutex[0]= 0x00;<br>}<br>else if(!(*MuteX[1])){<br>*Mutex[1]= 0xff;<br>Write_Buffer(1,Data);<br>*BufferFlag[1]=0xff;<br>*Mutex[1]= 0x00;<br>}<br>}<br>retum (0);<br>}<br>【问题3】(3分)<br>请回答关于面板按键设计过程中的下列问题,将答案填写在答题纸的对应栏中。<br>在进行面板键盘处理设计时,通常在扫描键盘过程中,按键会产生机械抖动。针对抖动问题,王工认为只有通过硬件设计才能消除抖动,而李工认为用软件方法就可以解决该问题。针对抖动问题,你认为可以采用哪类方式消除?


火星搜题