寄存器傳輸級
在數位電路設計中,寄存器傳輸級(英語:register-transfer level, RTL)是一種對同步數位電路的抽象模型,這種模型是根據數碼訊號在硬件寄存器、存儲器、組合邏輯裝置和總線等邏輯單元之間的流動,以及其邏輯代數運作方式來確定的。
寄存器傳輸級抽象模型在諸如Verilog和VHDL的硬件描述語言中被用於創建對實際電路的高層次描述,而低層次描述甚至實際電路可以通過高層次描述導出。在現代的數位設計中,寄存器傳輸級上的設計是最典型的工作流程。[1]邏輯合成工具可以根據寄存器傳輸級的描述構建更低級別的電路描述。[2]
寄存器傳輸級描述
[編輯]![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Register_transfer_level_-_example_toggler.svg/300px-Register_transfer_level_-_example_toggler.svg.png)
一個同步電路由兩個主要元素構成:寄存器和組合邏輯電路。寄存器通常由D觸發器組成,按照給定時間脈衝來進行同步時序操作,這個部分使得時序邏輯電路具有記憶的功能。[3]:113組合邏輯電路則由邏輯門組成,提供電路的所有邏輯功能。
例如,一個非常簡單的同步電路如右圖所示。寄存器的輸出端,通過一個反相器連接到其輸入端,這樣,每遇到一個時間脈衝的上升沿訊號,輸出端的邏輯電平改變一次。在這個電路中,反相器構成了組合邏輯電路部分。
如果使用硬件描述語言來設計數字集成電路,設計人員通常並不在電晶體級進行設計,而是在更高的抽象級別(層次)進行工程設計。在硬件描述語言中,設計人員只需要聲明寄存器(就像在計算機程式語言中聲明變量一樣),然後使用類似程式語言中的條件(if...then...else)、選擇(case)等運算符來描述組合邏輯的功能。我們把上述這樣級別的設計稱為寄存器傳輸級的設計。這個術語主要是指我們的關注點為訊號在寄存器之間的流動。
例如,上面提到過的這個例子可以用下面的VHDL程式來描述:
D <= not Q;
process(clk)
begin
if rising_edge(clk) then
Q <= D;
end if;
end process;
通過使用電子設計自動化工具來完成邏輯綜合,上面的程式描述可以直接被「翻譯」為等效的硬件配置,這一步驟可以在專用集成電路[3]:257或現場可程式邏輯門陣列[3]:146-147上實現。邏輯綜合工具軟件一般還能夠將複雜的邏輯進行簡化,從而降低成本。
在寄存器傳輸級,可以分成幾種電路。如果寄存器的輸出端和輸入端存在環路,這樣的電路被稱為「狀態機」,常被歸類到時序邏輯電路中。如果寄存器之間有連接,而沒有上述的「迴環」,則這樣的電路結構被稱為「流水線結構」。
在電路設計流程中的地位
[編輯]寄存器傳輸級流程是集成電路設計(Integrated circuit design)中進行邏輯設計的步驟。
一個寄存器傳輸級的描述通常會通過邏輯綜合工具轉換成邏輯門級電路連線網表的描述。然後,這一步的成果再經過布線等步驟,得到物理的電路。
這一過程通常還會使用邏輯模擬工具驗證寄存器傳輸級描述的功能是否正確。
參考文獻
[編輯]- ^ Frank Vahid. Digital Design with RTL Design, Verilog and VHDL 2nd. John Wiley and Sons. 2010: 247. ISBN 978-0-470-53108-2.
- ^ Samir Palnitkar. Verilog HDL: A Guilde to Digital Design and Synthesis. 電子工業出版社. : 10. ISBN 7-121-00468-2.
- ^ 3.0 3.1 3.2 鄧元慶,關宇,賈鵬,石會. 数字设计基础与应用(第2版). 清華大學出版社. ISBN 978-7-302-21406-9.