烽火眾智DSP工程師筆試經(jīng)驗
我筆試的是DSP工程師。卷子只有一張紙,正反兩頁(yè)。一共10道題。答案作答在給的空白的紙上。
1.定點(diǎn)DSP芯片和浮點(diǎn)DSP芯片是什么?有什么優(yōu)缺點(diǎn)?
定點(diǎn)DSP和浮點(diǎn)DSP主要是按DSP工作時(shí)的數據格式來(lái)區分的。數據以定點(diǎn)格式工作的DSP是定點(diǎn)DSP,數據以浮點(diǎn)格式工作的DSP是浮點(diǎn)DSP。浮點(diǎn)DSP能進(jìn)行浮點(diǎn)運算,一次完成,由硬件實(shí)現。定點(diǎn)DSP無(wú)法直接進(jìn)行浮點(diǎn)運算,完成浮點(diǎn)運算需要借助程序來(lái)實(shí)現。
優(yōu)點(diǎn):浮點(diǎn)DSP比定點(diǎn)DSP 的運算范圍要大。浮點(diǎn)DSP 的尋址范圍也大些。浮點(diǎn)DSP的精度大些。浮點(diǎn)運算速度大。
缺點(diǎn):定點(diǎn)DSP需要時(shí)刻注意運算的溢出。精度不夠,定點(diǎn)DSP運算速度慢。
2.DSP和通用CPU的最大區別是什么?有什么共同點(diǎn)?
(1)首先是體系結構:CPU是馮.諾伊曼結構的,而DSP有分開(kāi)的代碼和數據總線(xiàn)即“哈佛結構”。
(2) 標準化和通用性:CPU的標準化和通用性做得很好,支持操作系統,所以以CPU為核心的系統方便人機交互以及和標準接口設備通信,非常方便而且不需要硬件開(kāi)發(fā)了;但這也使得CPU外設接口電路比較復雜,DSP主要還是用來(lái)開(kāi)發(fā)嵌入式的信號處理系統了,不強調人機交互,一般不需要很多通信接口,因此結構也較為簡(jiǎn)單,便于開(kāi)發(fā)。如果只是著(zhù)眼于嵌入式應用的話(huà),嵌入式CPU和DSP的區別應該只在于一個(gè)偏重控制一個(gè)偏重運算了。
(3)流水線(xiàn)結構:大多數DSP都擁有流水結構,即每條指令都由片內多個(gè)功能單元分別完成取指、譯碼、取數、執行等步驟,這樣可以大大提高系統的執行效率。但流水線(xiàn)的采用也增加了軟件設計的難度,要求設計者在程序設計中考慮流水的需要。
快速乘法器:信號處理算法往往大量用到乘加(multiply-accumulate,MAC)運算。DSP有專(zhuān)用的硬件乘法器,它可以在一個(gè)時(shí)鐘周期內完成MAC運算。硬件乘法器占用了DSP芯片面積的很大一部分。(與之相反,通用CPU采用一種較慢的、迭代的乘法技術(shù),它可以在多個(gè)時(shí)鐘周期內完成一次乘法運算,但是占用了較少了硅片資源)。
地址發(fā)生器:DSP有專(zhuān)用的硬件地址發(fā)生單元,這樣它可以支持許多信號處理算法所要求的特定數據地址模式。這包括前(后)增(減)、環(huán)狀數據緩沖的模地址以及FFT的比特倒置地址。地址發(fā)生器單元與主ALU和乘法器并行工作,這就進(jìn)一步增加了DSP可以在一個(gè)時(shí)鐘周期內可以完成的工作量。
硬件輔助循環(huán):信號處理算法常常需要執行緊密的指令循環(huán)。對硬件輔助循環(huán)的支持,可以讓DSP高效的循環(huán)執行代碼塊而無(wú)需讓流水線(xiàn)停轉或者讓軟件來(lái)測試循環(huán)終止條件。
3.占先式系統和非占先式系統有什么區別?DSP/BIOS 和ucOSⅡ是哪一種?
占先式,當前任務(wù)運行中如果有優(yōu)先級更高的任務(wù)進(jìn)入就緒態(tài),當前任務(wù)立即將CPU交給優(yōu)先級更高的'任務(wù)。
非占先式:等當前任務(wù)執行完后再交給優(yōu)先級更高的任務(wù)。
DSP/BIOS,ucOSII是占先式的操作系統。
4.說(shuō)一下對DSP MAP的認識。
MAP文件是CCS軟件編譯后產(chǎn)生的有關(guān)DSP用到所有程序、數據及IO空間的一種映射文件。
一、生成方法
MAP文件主要有兩種生成方法,一種是由系統自動(dòng)生成,默認文件名為所建立的項目名(如XXX為項目名)加上.map后綴xxx.map,另一種在CMD文件中指定生成MAP文件,操作方法為在MEMORY指令前面加上“-m abc.map”,文件名可以任意。
二、文件格式
MAP文件大概分為文件頭、內存配置、段映射、全局符號四部分。內存配置與CMD文件中的MEMORY指令關(guān)聯(lián),在CMD文件中定義的程序與數據區間定義,在該部分均可以找到對應,與CMD文件不同的時(shí),在MAP文件中加入了一個(gè)實(shí)際使用的區間,即在程序中實(shí)際用到的空間長(cháng)度。段映射部分與CMD文件中的SECTION指令關(guān)聯(lián),在該部分程序中所有的段實(shí)際映射的起始地址與實(shí)際長(cháng)度均有詳細說(shuō)明?梢跃唧w到程序中PROGMA指定的段和各個(gè)單獨文件產(chǎn)生的OBJ文件。全局符號可以是程序使用的每一個(gè)函數、程序中定義的全局變量均可以在此找到對應的起始地址。MAP文件中采用兩種方式列舉,一種為按相應地址排列,另一種按全局符號字母排列。
5.簡(jiǎn)單的程序題?闯绦,寫(xiě)出輸出見(jiàn)過(guò),用C寫(xiě)的。
6. -7和10的16位二進(jìn)制補碼是什么? 寫(xiě)出Q15 0.25和Q15 0.5
、耪龜档难a碼 與原碼相同。
、曝摂档难a碼 負數的補碼是對其原碼逐位取反,但符號位除外;然后整個(gè)數加1。
-7轉換成二進(jìn)制原碼是1000000000000111,反碼是1111111111111000,補碼是反碼+1=1111111111111001
10的二進(jìn)制原碼是0000000000001010,是正數,補碼和原碼一樣
DSP芯片的數以2的補碼形式表示。每個(gè)16位數用一個(gè)符號位來(lái)表示數的正負,0表示數值為正,l則表示數值為負。其余15位表示數值的大小。
如,二進(jìn)制數0010000000000011b=8195
二進(jìn)制數1111111111111100b= -4
數的定標有Q表示法和S表示法兩種。
不同的Q所表示的數不僅范圍不同,而且精度也不相同。Q越大,數值范圍越小,但精度越高;
如,16進(jìn)制數2000H=8192,用Q0表示
16進(jìn)制數2000H=0.25,用Q15表示
7.說(shuō)一下DSP開(kāi)發(fā)的主要步驟。
8.寫(xiě)出strcpy的函數原型。
char* strcpy(char *strDest,const char * strSrc)
{
}
9.寫(xiě)出創(chuàng )建單鏈表的函數。
struct stu_info{
int x;
struct stu_info *next;
};
void inputstuinfo(struct stu_info**head,int n)
{
}
10. 對一個(gè)字符串進(jìn)行重新排列,使字母在前,數字在后,并且字母和數字的相對位置不變。
include
include
include
函數名:fun
參數: char*s,int *m
函數返回值:chLetter(數組chLetter[N]的數組名)
局部變量:char chLetter[N]; char chNumber[N]; int i,j,k;
char *fun(char*s,int *m)
{
}
【烽火眾智DSP工程師筆試經(jīng)驗】相關(guān)文章:
網(wǎng)絡(luò )工程師筆試經(jīng)驗07-15
筆試經(jīng)驗:筆試內容準備09-02
故宮筆試經(jīng)驗05-07
長(cháng)虹筆試經(jīng)驗04-27
銀監會(huì )筆試經(jīng)驗04-24
招商筆試經(jīng)驗04-24
微軟筆試經(jīng)驗03-01
求職筆試經(jīng)驗03-01
安永筆試經(jīng)驗及筆試細節08-31