基于EDA技術(shù)的單片機(jī)IP核設(shè)計(jì)
摘 要:本文介紹了利用EDA技術(shù)設(shè)計(jì)出與MCS-51系列微處理器指令集完全兼容的8位嵌入式微處理器芯片的IP核,并經(jīng)過驗(yàn)證獲得了滿意的效果。
關(guān)鍵詞: 電子設(shè)計(jì)自動(dòng)化;知識(shí)產(chǎn)權(quán)核;設(shè)計(jì)
1. 引言
EDA(Electronic Design Automatic),簡(jiǎn)單的說就是通過有關(guān)的開發(fā)軟件,自動(dòng)完成用軟件的方式設(shè)計(jì)的電子系統(tǒng)到最終形成集成電子系統(tǒng)或?qū)S眉尚酒囊婚T新技術(shù)。其中, EDA關(guān)鍵技術(shù)之一就是可以用硬件描述語言(HDL)來描述具有廣泛應(yīng)用前景、且具備自主知識(shí)產(chǎn)權(quán)的IP核(Intellectual Property)。這種IP核具有很高的通用性和靈活性,可以通過軟件編程完成不同特定的功能,可以任意使用在各種嵌入式微控制系統(tǒng)中。嵌入式IP核的應(yīng)用,由于重用設(shè)計(jì)思想、設(shè)計(jì)知識(shí),極大地降低了設(shè)計(jì)成本,縮短了設(shè)計(jì)周期,成為當(dāng)今片上系統(tǒng)(SoC)的重要設(shè)計(jì)手段?!?】
MCS-51系列單片機(jī)是目前國內(nèi)應(yīng)用時(shí)間最長(zhǎng)、最普及、可獲得應(yīng)用資料最多的功能強(qiáng)大的8位MCU,建立兼容MCS-51單片機(jī)IP核對(duì)于各種嵌入式系統(tǒng)和SoC的應(yīng)用具有重要意義。針對(duì)MCS-51單片機(jī)的應(yīng)用前景,筆者成功設(shè)計(jì)了與MCS-51系列微處理器指令集完全兼容且功能更強(qiáng)的8位嵌入式微處理器芯片,通過IP核重用技術(shù),可廣泛應(yīng)用在各種SoC中。
2.系統(tǒng)簡(jiǎn)介
本課題采用Altera公司的MAX+plusⅡ10.0設(shè)計(jì)平臺(tái),以超高速集成電路硬件描述語言VHDL為系統(tǒng)邏輯描述的唯一表達(dá)方式,采用自頂向下的設(shè)計(jì)原則,對(duì)MCS-51單片機(jī)進(jìn)行反相設(shè)計(jì)。同時(shí)選用 Altera 公司的 ACEX系列器件來實(shí)現(xiàn)最終的IP核。由于篇幅的關(guān)系,筆者不打算對(duì)開發(fā)平臺(tái)、開發(fā)工具以及最終實(shí)現(xiàn)硬件電路的FPGA芯片進(jìn)行介紹,而是著重介紹整體的設(shè)計(jì)思想。圖1是本課題進(jìn)行設(shè)計(jì)的頂層設(shè)計(jì)層次圖。實(shí)線部分是MCS-51單片機(jī)的內(nèi)核部分,虛線部分是外圍存儲(chǔ)電路部分。下面介紹各部分的實(shí)現(xiàn)方法。
圖1 MCS-51單片機(jī)頂層設(shè)計(jì)層次圖
3.系統(tǒng)現(xiàn)實(shí)
3.1 算術(shù)邏輯單元(ALU)的實(shí)現(xiàn)
算術(shù)、邏輯運(yùn)算模塊的功能是按照控制單元給出的指令,對(duì)來自數(shù)據(jù)存儲(chǔ)器、程序存儲(chǔ)器、累加器A以及程序狀態(tài)字的相關(guān)位的數(shù)據(jù),進(jìn)行相關(guān)的算術(shù)和邏輯運(yùn)算。圖2是用VHDL語言對(duì)ALU模塊進(jìn)行描述的設(shè)計(jì)層次圖。由圖中可以看出整個(gè)ALU由6個(gè)模塊組成:加/減法器,乘法器、除法器、十進(jìn)制調(diào)整器、邏輯運(yùn)算器以及一個(gè)多路選擇器。其中加/減法器又可以分成兩個(gè)子模塊。本模塊將用較為簡(jiǎn)單的純組合邏輯電路來實(shí)現(xiàn)。限于篇幅,具體的實(shí)現(xiàn)不再贅述,請(qǐng)讀者參閱參考文獻(xiàn)【2】。
圖 2 ALU設(shè)計(jì)層次圖
3.2定時(shí)器/計(jì)數(shù)器(Timer/Counter)模塊的實(shí)現(xiàn)
分析MCS-51單片機(jī)的定時(shí)器/計(jì)數(shù)器的功能和原理可知,本單元將必須以時(shí)序邏輯電路的方式來實(shí)現(xiàn)。圖3中的左圖就是本模塊設(shè)計(jì)完成后形成的符號(hào)文件。圖中的輸入除時(shí)鐘CLK、復(fù)位RESET、外部中斷0 INT0_I和外部中斷1 INT1_I直接來自芯片的外部輸入之外,其余的輸入信號(hào)全部來自控制器。其中的RELOAD_I[7 to 0]、WT_EN以及WT_I[7 to 0]用于重寫定時(shí)器/計(jì)數(shù)器內(nèi)部寄存器。所有的輸出信號(hào)全部送往控制器,用于及時(shí)更新特殊功能寄存器的內(nèi)容。
定時(shí)器/計(jì)數(shù)器的兩種工作方式?jīng)Q定了要設(shè)計(jì)好定時(shí)器/計(jì)數(shù)器首先必須設(shè)計(jì)一個(gè)分頻器和兩個(gè)(因?yàn)橛袃蓚€(gè)定時(shí)器/計(jì)數(shù)器)負(fù)跳變的檢測(cè)器。負(fù)跳變的檢測(cè)器,可以用一個(gè)雙穩(wěn)態(tài)的觸發(fā)器來實(shí)現(xiàn);分頻器的實(shí)質(zhì)是計(jì)數(shù)器。觸發(fā)器和計(jì)數(shù)器都是時(shí)序邏輯電路中的基本單元,VHDL語言的實(shí)現(xiàn)方法請(qǐng)讀者參考相關(guān)書籍【1】。因此本設(shè)計(jì)實(shí)體的結(jié)構(gòu)體將由3個(gè)進(jìn)程來實(shí)現(xiàn)。除了分頻器和兩個(gè)負(fù)跳變的檢測(cè)器各占用一個(gè)進(jìn)程外,第三個(gè)進(jìn)程用于實(shí)現(xiàn)時(shí)器/計(jì)數(shù)器的四種工作模式。對(duì)定時(shí)器/計(jì)數(shù)器的各種工作于模式的原理分析可知,要實(shí)現(xiàn)這樣一個(gè)電路,其VHDL語言的結(jié)構(gòu)體應(yīng)該包括兩個(gè)大的部分:一是置中斷標(biāo)志位,二是改變計(jì)數(shù)寄存器的值。同時(shí),改變計(jì)數(shù)寄存器的值又可以細(xì)分為兩塊――寫高8位寄存器和寫低8位寄存器。各個(gè)進(jìn)程之間相互關(guān)聯(lián),內(nèi)部信號(hào)將作為進(jìn)程之間傳輸信息的紐帶。
評(píng)論