返回

烽火 2021 DSP工程師面試題

  • 管理員
  • 2112閱讀
  • 2021.09.29

第1題:

定點DSP芯片和浮點DSP芯片是什么?有什么優缺點?



定點DSP和浮點DSP主要是按DSP工作時的數據格式來區分的。數據以定點格式工作的DSP是定點DSP,數據以浮點格式工作的DSP是浮點DSP。浮點DSP能進行浮點運算,一次完成,由硬件實現。定點DSP無法直接進行浮點運算,完成浮點運算需要借助程序來實現。

優點:浮點DSP比定點DSP 的運算范圍要大。浮點DSP 的尋址范圍也大些。浮點DSP的精度大些。浮點運算速度大。

缺點:定點DSP需要時刻注意運算的溢出。精度不夠,定點DSP運算速度慢。



第2題:

DSP和通用CPU的最大區別是什么?有什么共同點?



(1)首先是體系結構:CPU是馮.諾伊曼結構的,而DSP有分開的代碼和數據總線即“哈佛結構”。
(2) 標準化和通用性:CPU的標準化和通用性做得很好,支持操作系統,所以以CPU為核心的系統方便人機交互以及和標準接口設備通信,非常方便而且不需要硬件開發了;但這也使得CPU外設接口電路比較復雜,DSP主要還是用來開發嵌入式的信號處理系統了,不強調人機交互,一般不需要很多通信接口,因此結構也較為簡單,便于開發。如果只是著眼于嵌入式應用的話,嵌入式CPU和DSP的區別應該只在于一個偏重控制一個偏重運算了。
(3)流水線結構:大多數DSP都擁有流水結構,即每條指令都由片內多個功能單元分別完成取指、譯碼、取數、執行等步驟,這樣可以大大提高系統的執行效率。但流水線的采用也增加了軟件設計的難度,要求設計者在程序設計中考慮流水的需要。
? ??快速乘法器:信號處理算法往往大量用到乘加(multiply-accumulate,MAC)運算。DSP有專用的硬件乘法器,它可以在一個時鐘周期內完成MAC運算。硬件乘法器占用了DSP芯片面積的很大一部分。(與之相反,通用CPU采用一種較慢的、迭代的乘法技術,它可以在多個時鐘周期內完成一次乘法運算,但是占用了較少了硅片資源)。
? ? 地址發生器:DSP有專用的硬件地址發生單元,這樣它可以支持許多信號處理算法所要求的特定數據地址模式。這包括前(后)增(減)、環狀數據緩沖的模地址以及FFT的比特倒置地址。地址發生器單元與主ALU和乘法器并行工作,這就進一步增加了DSP可以在一個時鐘周期內可以完成的工作量。
? ?硬件輔助循環:信號處理算法常常需要執行緊密的指令循環。對硬件輔助循環的支持,可以讓DSP高效的循環執行代碼塊而無需讓流水線停轉或者讓軟件來測試循環終止條件。



第3題:

占先式系統和非占先式系統有什么區別?DSP/BIOS 和ucOSⅡ是哪一種?



占先式,當前任務運行中如果有優先級更高的任務進入就緒態,當前任務立即將CPU交給優先級更高的任務。
非占先式:等當前任務執行完后再交給優先級更高的任務。
DSP/BIOS,ucOSII是占先式的操作系統。



第4題:

說一下對DSP MAP的認識



MAP文件是CCS軟件編譯后產生的有關DSP用到所有程序、數據及IO空間的一種映射文件。
一、生成方法
? ? MAP文件主要有兩種生成方法,一種是由系統自動生成,默認文件名為所建立的項目名(如XXX為項目名)加上.map后綴xxx.map,另一種在CMD文件中指定生成MAP文件,操作方法為在MEMORY指令前面加上“-m abc.map”,文件名可以任意。
二、文件格式
? ? MAP文件大概分為文件頭、內存配置、段映射、全局符號四部分。內存配置與CMD文件中的MEMORY指令關聯,在CMD文件中定義的程序與數據區間定義,在該部分均可以找到對應,與CMD文件不同的時,在MAP文件中加入了一個實際使用的區間,即在程序中實際用到的空間長度。段映射部分與CMD文件中的SECTION指令關聯,在該部分程序中所有的段實際映射的起始地址與實際長度均有詳細說明??梢跃唧w到程序中PROGMA指定的段和各個單獨文件產生的OBJ文件。全局符號可以是程序使用的每一個函數、程序中定義的全局變量均可以在此找到對應的起始地址。MAP文件中采用兩種方式列舉,一種為按相應地址排列,另一種按全局符號字母排列。



第5題:

?-7和10的16位二進制補碼是什么? 寫出Q15 0.25和Q15 0.5



⑴正數的補碼??與原碼相同。?
⑵負數的補碼??負數的補碼是對其原碼逐位取反,但符號位除外;然后整個數加1。?

-7轉換成二進制原碼是1000000000000111,反碼是1111111111111000,補碼是反碼+1=1111111111111001
10的二進制原碼是0000000000001010,是正數,補碼和原碼一樣

DSP芯片的數以2的補碼形式表示。每個16位數用一個符號位來表示數的正負,0表示數值為正,l則表示數值為負。其余15位表示數值的大小。
如,二進制數0010000000000011b=8195
? ?? ?二進制數1111111111111100b= -4

數的定標有Q表示法和S表示法兩種。
不同的Q所表示的數不僅范圍不同,而且精度也不相同。Q越大,數值范圍越小,但精度越高;
如,16進制數2000H=8192,用Q0表示
? ?? ? 16進制數2000H=0.25,用Q15表示



第6題:

說一下DSP開發的主要步驟



第7題:

寫出strcpy的函數原型。
char* strcpy(char *strDest,const char * strSrc)
{

}



第8題:

寫出創建單鏈表的函數。
struct stu_info{
int x;
struct stu_info *next;
};

void inputstuinfo(struct stu_info**head,int n)
{
}



第9題:

對一個字符串進行重新排列,使字母在前,數字在后,并且字母和數字的相對位置不變。
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)
{

}


相關知識

免费 无码 国产在线观看观-亚洲精品乱码久久久久-久久精品无码一区二区国产-国产欧美一区二区精品久久久