版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、5.7 EDA開發(fā)綜合實例3:SmartDesign的使用在Libero中,除了可以編寫程序實現相應設計外,還可通過可視化操作方式(“SmartDesign”軟件),對現成的模塊進行連線和拼裝,實現特定的功能。下例采用可視化方法實現1位全加器,再改造為2位串行進位加法器,操作過程既有通過編寫代碼建立模塊,也有調用現成模塊,還有通過IP核創(chuàng)建實例模塊,并對多個模塊進行拼裝和測試。5.7.1 使用半加器構造全加器通過半加器來構造全加器的方法在4.7.3中討論了,以下的模塊及其連接均基于圖4-24完成。1. 新建工程打開Libero IDE,選擇“Project”菜單的“New Project”命令
2、,輸入項目名稱、選擇項目存放路徑,選擇語言Verilog(如圖5-62所示)。設備的選擇同5.6中的實例2。2. 新建SmartDesign設計在“Project Manager”中點擊“SmartDesign”按鈕(如圖5-63),在彈出的對話框中輸入設計名稱,如圖5-64所示。工作區(qū)中會顯示打開了“adders”設計的畫布,但畫布是一片空白,如圖5-65所示。3. 添加半加器模塊點擊“Project Flow”切換回項目流程,點擊“HDL Editor”按鈕,輸入并新建Verilog程序文件。如圖5-66所示:在打開的文件中輸入半加器程序代碼,代碼同4.7.3中的半加器設計。/ halfa
3、dder.vmodule half_adder (S, C, A, B); input A, B; output S, C; xor gate1 (S,A,B); and gate2 (C,A,B);endmodule項目會把第一個建立的模塊或設計作為“根”(Root),并加粗顯示,如果項目中的根不是“adders”,則可在“Design Explorer”窗口中對著“adders”按右鍵,選擇“Set As Root”進行修改。如圖5-68所示:4. 在設計中添加“半加器”模塊對著“half_adder”模塊右鍵,選擇“Instantiate in adders”,或者按著“half_add
4、er”模塊拖拽至“adders”的畫布(Canvas)上。重復操作兩次,在此需要兩個半加器來構造全加器。操作如圖5-69所示:在圖中可看到,添加兩個模塊后,設計中自動設定了模塊的實例化名稱(half_adder_0 和half_adder_1),直接雙擊可修改其實例名。5. 在設計中添加“或”模塊在“Catalog”窗口中,列出了Libero IDE提供的各種現成可使用的IP核,包括宏單元(Actel Macros)、基本塊(Basic Blocks)等。在搜索欄輸入“or2”(也可直接在“Actel Macros”列表中找),可找到在此需要用到的“or2”宏單元(即2輸入“或”門)。點擊右鍵
5、,選擇“Instantiate in adders”,或者通過拖拽操作,添加至“adders”的畫布(Canvas)上(如圖5-70所示)。6. 連線到頂層整個畫布就是一個“芯片”的設計,而剛才添加的模塊只是該“芯片”的內部零件,故需要定義這些子模塊中哪些端口是連接到整個設計的對外(輸入/輸出)端口上。對著“half_adder_0”模塊的“A”端口按右鍵,選擇“Promote to Top Level”(如圖5-71),可把該子模塊的端口連接至頂層。通過類似操作,將“half_adder_0”模塊的“B”端口、“half_adder_1”的“B”端口“half_adder_1”的“S”端口、
6、“or2_0”模塊的“Y”端口連接到頂層。由于“half_adder_0” 和“half_adder_1”都有名為“B”的端口,故連接到頂層時會有命名上的沖突,如圖5-72所示為彈出的對話框,如果選擇“是”,則連接到一個新的端口,系統(tǒng)自動給這個端口改名(如“B_0”),如果選擇“否”,就會將“half_adder_0” 和“half_adder_1”的“B”端口都連接到同一個對外的頂層端口上??尚薷亩丝诘拿Q,對著要修改的端口名按右鍵,選擇“Modify Port”(或直接雙擊),輸入新的端口名稱(如圖5-73所示)。連接并修改端口名后的結果如圖5-74所示:7. 進行內部連線選擇“half_
7、adder_0” 的“S”端口,按下“Ctrl”鍵同時,點擊選擇“half_adder_1”的“A”端口,同時選中了兩個端口,點擊右鍵,選擇“Connect”命令,就可把這兩個選中的端口進行連線。如圖5-75所示:用同樣的方法,把“half_adder_0” 的“C”端口與“or2_0” 的“A”端口、“half_adder_1” 的“C”端口與“or2_0” 的“B”端口進行連接。模塊的布局看起來可能會比較亂,連線可能會產生視覺上的重疊,可調整各模塊的位置達到較好的顯示效果,如圖5-76所示:8. 規(guī)則檢查選擇“SmartDesign”菜單的“Check Design Rules”命令,工具
8、會自動檢查設計是否存在問題(如還有端口沒有進行連接等),如果發(fā)現問題,按照檢查結果的提示進行修正。至此,一個全加器的設計已完成。5.7.2 與現有的全加器對比在5.5綜合實例1中,已經設計了全加器的模塊并保存在磁盤中(“Fadd1.v”文件),在此可調用原來已經完成的模塊,將兩種設計思路都放到設計中,一起進行驗證并對結果進行對比。1. 導入全加器模塊在“File”菜單運行“Import Files”命令(如圖5-77),找到已保存了的全加器設計文件“Fadd1.v”,點擊“Import”按鈕導入文件(如圖5-78)。導入文件后,Libero IDE會復制該文件到項目文件夾的“/ hdl”子文件
9、夾下,對該文件中的代碼進行改動,不會影響原文件。/ Fadd1.v module FA_behav2(A,B,Cin,Sum,Cout);input A,B,Cin;output Sum,Cout;reg Sum,Cout;always(A or B or Cin) beginCout,Sum=A+B+Cin; / 使用拼接運算符endendmodule5.5中的文件,也可用這里的代碼2. 添加全加器模塊到設計中導入文件后,該模塊會顯示在項目層次結構圖中,如圖5-79所示:選擇“FA_behav2”模塊,添加到“adders”設計中(實例化),層次結構也會發(fā)生變化,如圖5-80所示:3. 連線
10、由于“FA_behav2”模塊是一個獨立的整體,不需要進行內部連線,故全部端口都連接到頂層設計。為了對比兩個設計,將“FA_behav2_0”實例的輸入(A,B,Cin)與“全加器1”(半加器組裝的)的輸入都接到同一個端口(DataA,DataB,Cin),輸出端口直接接到頂層設計,如圖5-81所示:注:在圖5-81中,由于全加器1是由多個部件組裝而成,為了更好的顯示效果,加入了一個長方體和文字,這些元素可在畫布內添加,而不會影響原來的設計。4. 生成設計選擇“SmartDesign”菜單的“Check Design Rules”命令,提示“Design Rules Check of Smar
11、tDesign adders found no errors and no warnings”表示檢查無誤。選擇“SmartDesign”菜單的“Generate Design”命令(如圖5-82所示),或者對著畫布區(qū)按右鍵,選擇“Generate Design”命令。提示“Design adders was successfully generated”表示生成成功。5. 編寫測試平臺點擊“Project Flow”切換回項目流程,點擊“HDL Editor”按鈕,在打開的對話框中選擇“HDL Stimulus File”,輸入測試平臺的文件名,如圖5-83所示:在打開的文件中輸入以下代碼:
12、timescale 1ns/1ns module testbench; reg pa,pb,pCin; wire Sum1,Cout1,Sum2,Cout2;adders testadders(.DataA(pa),.DataB(pb),.Cin(pCin), .Sum1(Sum1),.Cout1(Cout1),.Sum2(Sum2),.Cout2(Cout2); / 3個輸入,4個輸出 initial begin pa=0;pb=0;pCin=0; #5 pCin=1; #5 pb=1; #5 pCin=0; #5 pa=1; #5 pCin=1; #5 pb=0; #5 pCin=0; #
13、5;$finish; endendmodule6. 選項配置點擊“Project Flow”切換回項目流程,對著“Simulation”按鈕按右鍵,在彈出的菜單中選擇“Options”,配置好測試平臺模塊名稱及頂層實例名。如圖5-84所示:僅僅配置這個還不夠,還要用右鍵點擊“adders”設計,選擇“Organize Stimulus”(如圖5-85所示);在彈出的窗口中選擇左邊窗口中來源為“User”的激勵文件“testbench.v”,點擊“Add”按鈕添加到右邊窗口中,并點擊“OK”(如圖5-86所示)。讀者不禁奇怪,為什么會有兩個“testbench.v”,還需額外進行配置才能進行仿真
14、呢?那是因為在本project中調用了Actel提供的宏單元(or2),Libero會自動提供一個“testbench.v”文件,而恰好用戶在此也用了“testbench.v”作為測試平臺的文件名,故有兩個“testbench.v”文件,一個來源是User(用戶),一個來源是adders。7. 功能仿真在“Project Flow”中,點擊“Simulation”按鈕,進行功能仿真(綜合前仿真),仿真結果如圖5-87所示:說明:(1) 由于測試平臺中有“$finish”操作,故仿真結束時會提示是否結束“Are you sure you want to finish?”,在此不要選擇“是”,否則
15、ModelSim軟件將退出。(2) 在波形結果中,兩個全加器采用相同的輸入(pa,pb,pCin),分別產生不同的輸出(“Sum1”,“Cout1”為“全加器1”的輸出,“Sum2”,“Cout2”為“FA_behav2”的輸出)8. 綜合結果對設計進行綜合,RTL視圖如圖5-88所示:接下來操作包括綜合后仿真、布局布線等,實現步驟與5.6的綜合實例2相同,在此不作贅述。5.7.3 改造為2位串行進位加法器1. 設計結構圖在第二章(2.3.5)中,討論了如何通過1位全加器構造多位串行進位加法器,圖2-42是一個4位的串行進位加法器,稍作刪改,可得到如圖5-89所示的2位串行進位加法器。在此可將
16、現有的2個全加器拼裝為2位的串行進位加法器,。2. 連線并修改端口名稱按照圖5-89對“adders”設計進行改造,更改端口連線及端口名稱為如圖5-90所示的結構。3. 保存并生成設計選擇“File”菜單的“Save adders As”命令,將設計另存為“adder_2”。選擇“SmartDesign”菜單的“Generate Design”命令,或者對著畫布區(qū)按右鍵,選擇“Generate Design”命令,生成設計。4. 編寫測試平臺新建測試平臺,保存文件為“testbench2.v”。代碼如下:timescale 1ns/1ns module testbench2; reg a0,b
17、0,a1,b1,cin; integer i; wire s0,s1,cout;adder_2 testadder_2(.A0(a0),.B0(b0),.A1(a1),.B1(b1),.Cin(cin),.S0(s0),.S1(s1),.Cout(cout); initial begin for(i=0;i<32;i=i+1) begin a0,a1,b0,b1,cin=i; #5; end #5;$finish; endendmodule5. 選項配置由于新建了另一個設計和測試平臺,故須調整若干的選項設置:設置“adder_2”為根,設置方法跟前面是一致的,如圖5-91所示:配置測試平
18、臺文件,對著“adder_2”模塊按右鍵,選擇“Organize Stimulus”(如圖5-92所示),把“testbench2.v”文件加到測試平臺關聯(lián)項中(如圖5-93所示)。點擊“Project Flow”切換回項目流程,對著“Simulation”按鈕按右鍵,在彈出的菜單中選擇“Options”,配置好測試平臺模塊名稱及頂層實例名。如圖5-94所示:6. 功能仿真功能仿真結果如圖5-95所示:波形說明:(1) a1,a0表示兩位輸入數據,如“a1=1,a0=0”,則相當于輸入兩位“A1:0=2'b10”;(2) 同理,b1,b0可理解為“B1:0”,s1,s0可理解為“S1:
19、0”,計算的內容相當于“cout,S1:0=A1:0 + B1:0+cin”;(3) 由于是串行進位,仿真結果中考慮了延遲因素,出現了毛刺。7. 綜合結果綜合結果如圖5-96所示:5.7.4 調用IP核創(chuàng)建2位串行進位加法器前面是通過拼裝的方式實現2位串行進位加法器,只是為了說明SmartDesign的使用方法,并不是最佳的實現方法。在Libero IDE中,可以通過現成的模塊非常方便地創(chuàng)建多種功能模塊:在Catalog窗口中列出了Actel公司提供的多種IP核,從簡單的宏單元(基本門等)、中規(guī)模的基本塊(加法器、編碼器等)、總線接口,到大規(guī)模的DSP、處理器等都可以提供使用(如圖5-97所示
20、)。1. 創(chuàng)建新核并實例化選擇“Basic Blocks”下的“Adder”,按右鍵選擇“Instantiate in adders”(Libero 9.1版本菜單改為“Configure core”)),或直接雙擊,出現如圖5-98所示的對話框。 “Ripple”是代表串行進位,“Width”中最小是2位,代表所創(chuàng)建加法器的位數,“Carry In”和“Carry out”中選擇“Active High”表示進位輸入/出高電平為1。點擊“Generate”按鈕,出現如圖5-99的對話框,輸入新建核的名稱。該核顯示在項目層次結構圖中,可將其實例化到畫布中,如圖5-100所示:模塊建立成功,需要
21、更改加法器的位寬和其它參數,只需對著“Core_adder”核按右鍵,選擇“Open Component”命令(或直接雙擊)即可,非常方便。2. 連線由于該核的端口采用多位向量形式,不能直接與原來的端口進行連接,是否需要改寫測試平臺才能進行仿真測試?可以通過如下方法,將多位向量形式的端口按每一位單獨進行連線操作:選擇“SmartDesign”菜單的“Show Grid View”命令,出現如圖5-101的表格,該表中列出了所有實例的端口連接情況。因為需要把新增的“Core_adder_0”的“DataA”端口分成兩個單獨的位端口以便連接,故對著“DataA”右鍵,選擇“Expand to Bi
22、t Ports”,如圖5-102所示。 “DataA”端口前出現一個加號,點擊展開后,選擇其中的1位行,“adder_2”列的下拉菜單,可選擇“adder_2”實例的各個端口,在此選擇“A1”端口(如圖5-103所示)。端口前面的“I”標志表示輸入端口,“O”標志表示輸出端口。用同樣的操作方法,把“DataA”端口的0位連接到“adder_2”的“A0”端口。點擊“Canvas”切換回畫布視圖,可看到如圖5-104所示的連接效果。從圖中可看到,A1和A0同時連接到不同的實例上了,但顯示效果不好,也看不出DataA每位的具體連接情況??牲c擊DataA前面的加號,展開DataA端口的各位,顯示效果
23、就好多了(如圖5-105所示)。再進行以下連線操作:l 通過“Grid”視圖,將“DataB”端口的0位連接到“adder_2”的“B0”端口;l 通過“Grid”視圖,將“DataB”端口的1位連接到“adder_2”的“B1”端口;l 將“Cout”端口連接到頂層,端口命名為“Core_Cout”;l 將“Sum1:0”端口連接到頂層,端口命名為“Core_Sum”,系統(tǒng)自動顯示為“Core_Sum1:0”連接結果如圖5-106所示:3. 保存并生成設計選擇“File”菜單的“Save adders As”命令,將設計另存為“adder_3”。選擇“SmartDesign”菜單的“Gene
24、rate Design”命令,或者對著畫布區(qū)按右鍵,選擇“Generate Design”命令,生成設計。4. 編寫測試平臺在前面例子的基礎上編寫測試平臺,輸入端口沒有變化,輸出端口多了兩個,故只需增加輸出端口的連接即可。該文件保存為“testbench3.v”。timescale 1ns/1ns module testbench3; reg a0,b0,a1,b1,cin; integer i; wire s0,s1,cout,core_cout; wire1:0 core_sum;adder_3 testadder_3(.A0(a0),.B0(b0),.A1(a1),.B1(b1),.Cin(cin), .S0(s0),.S1(s1),.Cout(cout),.Core_Cout(core_cout),.Core_Sum(core_sum); initial begin for(i=0;i<32;i=i+1) begin a0,a1,b0,b1,cin=i; #5; end #5;$finish; endendmodule5. 選項配置與上一例子的操作相同,修改以下設置:首先,設置“adder_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 美容院前臺服務員工作總結
- 家居建材行業(yè)營銷工作總結
- 二零二五年度二手車交易個人信用貸款合作協(xié)議3篇
- 二零二五版消費信貸合同參考范本3篇
- 二零二五版小產權房屋交易協(xié)議(附裝修及配套設施承諾)6篇
- 2025版淘寶商家與消費者金融支付合同3篇
- 二零二五年度汽車租賃及維修一體化服務協(xié)議4篇
- 2025版石榴品牌授權與市場推廣合作協(xié)議3篇
- 二零二五年度個人消費貸款合同個人信息保護條款3篇
- 二零二五年度綠色蔬菜直供社區(qū)配送合同2篇
- 安全生產法律法規(guī)匯編(2025版)
- 2024年英語高考全國各地完形填空試題及解析
- 2024至2030年中國餐飲管理及無線自助點單系統(tǒng)數據監(jiān)測研究報告
- 2024年服裝門店批發(fā)管理系統(tǒng)軟件項目可行性研究報告
- 體育概論(第二版)課件第三章體育目的
- T-GDASE 0042-2024 固定式液壓升降裝置安全技術規(guī)范
- 香港朗文4B單詞及句子
- 運動技能學習與控制課件第五章運動中的中樞控制
- 財務部規(guī)范化管理 流程圖
- 斷絕關系協(xié)議書范文參考(5篇)
- 農村集體“三資”管理流程圖
評論
0/150
提交評論