嵌入式DS80C320單片機軟核設計
3.1時(shí)序設計
在DS80C320單片機的資料里面只有外部接口的時(shí)序介紹,對于內部的信號執行則沒(méi)有說(shuō)明,因此需要重新規劃,本軟核對DS80C320的時(shí)序進(jìn)行了詳細的分析,按照黑盒子的思想,加入了流水線(xiàn)的技巧,對其時(shí)序的設計如下:
對于普通指令的執行過(guò)程,內部時(shí)序劃分如下:

這是一條單字節單周期指令的執行過(guò)程,在C1的上升沿開(kāi)始譯碼以及查找本指令的長(cháng)度周期表,同時(shí),數據總線(xiàn)上面是正在回寫(xiě)的上一條指令的結果;到了C2的上升沿,數據總線(xiàn)和地址總線(xiàn)的控制權就回到了本條指令的手里,這個(gè)時(shí)候地址總線(xiàn)用來(lái)發(fā)送需要讀取的數據的地址,數據總線(xiàn)則做好從發(fā)送數據到接收數據的準備,這個(gè)動(dòng)作由CPU控制模塊完成;然后在C3的上升沿,被選中模塊根據地址總線(xiàn)和控制總線(xiàn)讀出相關(guān)數據并送入數據總線(xiàn),在這以后的一個(gè)時(shí)鐘長(cháng)度的時(shí)間里面,ALU接到了數據,然后在C4的上升沿,開(kāi)始執行數據處理,同時(shí),CPU控制模塊再次改變地址總線(xiàn)和控制總線(xiàn)的內容,并發(fā)布寫(xiě)信號,提示開(kāi)始被選中讀數的模塊放棄對數據總線(xiàn)的控制權,以及被選中的存儲結果的模塊分析寫(xiě)入類(lèi)型,作好接收數據的準備,ALU在計算完成之后就將結果放到數據總線(xiàn),等待下一個(gè)周期的C1開(kāi)始將結果寫(xiě)入相關(guān)位置;
總之,本設計充分利用了數據總線(xiàn)的資源和流水設計的技巧,將本來(lái)需要6個(gè)時(shí)序的操作簡(jiǎn)化為4個(gè)就完成了,時(shí)序緊湊,速度快;同時(shí)采用了分布式處理的思想,大大簡(jiǎn)化了CPU控制模塊的功能,只發(fā)布控制信號,具體哪個(gè)模塊需要執行什么功能由該模塊自行根據控制信號來(lái)判斷,有利于避免由于局部功能太過(guò)集中而造成的芯片局部過(guò)熱的問(wèn)題;
3.2指令長(cháng)度周期表的設計
指令長(cháng)度表主要是用來(lái)控制取指令,以及辨別指令代碼和指令參數;而指令周期表則主要是用來(lái)控制指令執行的時(shí)間,這兩個(gè)表可以簡(jiǎn)化對指令執行的控制。一般這個(gè)過(guò)程由ROM模塊根據已經(jīng)讀取的指令來(lái)查表,然后根據查表的結果和時(shí)序情況來(lái)處理分析,產(chǎn)生一系列控制信號,并發(fā)送給CPU控制模塊,這樣做的好處主要是避免CPU控制模塊與指令以及數據打交道,減少其輸入輸出端口數目;
指令長(cháng)度周期表的設計是和讀取方式息息相關(guān)的,本設計使用自己?jiǎn)为殬嫿ǖ谋?,并且一分為二,處理方式是為:index={lsb_3, ir[7:4]},其中lsb_3的含義為:對于指令的低三位(ir(2 downto 0)) 規則為:8-F=>7,6-7=>6,0-5不變化。兩個(gè)表使用相同的讀取方式,這樣既可以簡(jiǎn)化結構,將查找空間降低為7位,又可以提高查找速度;
3.3 PC異動(dòng)編碼的作用
在單片機內部,PC是需要不停變化的,不僅所有的跳轉類(lèi)指令都需要改變PC的內容,而且中斷類(lèi)指令還需要完成PC的出棧以及入棧操作;因此,有些模型里面對PC的處理異常復雜,基本上是對每條指令詳細規定PC的變化;本設計在這方面的處理采用了編碼的技巧來(lái)提高速度;
首先分析編碼的可能性,雖然很多指令可以改變PC的內容,但是對于PC來(lái)說(shuō),除了正常的加1操作,其它的變化方式只有如下幾種:
其中pmem1和pmem2為指令參數,來(lái)自于ROM模塊;PC_OUT為堆棧中的PC內容。
剩下的難題就是由誰(shuí)來(lái)發(fā)出這個(gè)編碼,對于所有的跳轉類(lèi)指令以及中斷類(lèi)指令,每條指令的跳轉條件是不相同的,需要一一判斷,本設計就巧妙的利用了ALU模塊來(lái)處理這個(gè)編碼,ALU模塊計算的時(shí)候也是需要對操作進(jìn)行判斷的,因此,只要添加一小段代碼就可以讓其完成發(fā)送編碼的功能;
PC編碼的方式大大簡(jiǎn)化了PC模塊的操作,使得程序更加規整;
評論