第6章 參數(shù)可設(shè)置LPM宏功能塊應(yīng)用_第1頁
第6章 參數(shù)可設(shè)置LPM宏功能塊應(yīng)用_第2頁
第6章 參數(shù)可設(shè)置LPM宏功能塊應(yīng)用_第3頁
第6章 參數(shù)可設(shè)置LPM宏功能塊應(yīng)用_第4頁
第6章 參數(shù)可設(shè)置LPM宏功能塊應(yīng)用_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第6章參數(shù)可設(shè)置LPM宏功能塊應(yīng)用,EDAEDA技術(shù)實用教程,參數(shù)可設(shè)置LPM宏功能塊應(yīng)用,LPM(Libraryofparameterizedmodules):參數(shù)可設(shè)置模塊庫參數(shù)可設(shè)置模塊使用方法:LPM在mega-lpm庫中,可通過圖形或HDL模塊形式調(diào)用,設(shè)置或修改參數(shù)即可。模塊功能、參數(shù)含義、使用方法可在幫助文件中查閱:helpMegafunctions/LPM,Altera提供的宏功能模塊與LPM函數(shù):,算術(shù)組件組合組件I/O組件存儲器編譯器存儲組件,6.1LPM模塊的原理圖方式調(diào)用,LPM_COUNTERLPM_ROM,LPM_COUNTER模塊參數(shù)含義和設(shè)置:data:置入計數(shù)器的并行數(shù)據(jù)輸入;clock:上升沿觸發(fā)計數(shù)時鐘輸入。clk_en:高電平使能所有同步操作輸入信號;updown:計數(shù)器加減控制輸入。cin:最低進位輸入;aclr:異步清0輸入。aset:異步置位輸入;q:計數(shù)輸出;sload:在clk的上升沿同步并行數(shù)據(jù)加載輸入;cout:計數(shù)進位或借位輸出。LPM_WIDTH:計數(shù)器位寬;cnt_en:計數(shù)使能控制,,6.1.1基于LPM_COUNTER的數(shù)控分頻器設(shè)計,數(shù)控分頻器的功能就是當在輸入端給定不同輸入數(shù)據(jù)時,將對輸入的時鐘信號有不同的分頻比,圖6-1數(shù)控分頻器電路原理圖,計數(shù)器計滿1111時,由cout發(fā)出進位信號給并行加載控制信號sload,使4位并行數(shù)據(jù)d3.0被加載到計數(shù)器中,此后計數(shù)器在d3.0基礎(chǔ)上進行加/減計數(shù).加法計數(shù):分頻比R=“1111”-d3.0+1CLK每進入R個脈沖,cout發(fā)出一個進位信號減法計數(shù):分頻比R=d3.0+1,參數(shù)設(shè)置,數(shù)控分頻器工作波形,4位加法計數(shù):分頻比R=“1111”-d3.0+1或R=2n-d+1,d3.0=12,R=4,LPM模塊產(chǎn)生毛刺,使輸出產(chǎn)生錯誤,4位加法計數(shù):分頻比R=“1111”-d3.0+1或R=2n-d+1,d3.0=12,R=4,修改電路:,延時,圖6-3用LPM_ROM設(shè)計的4位乘法器原理圖,6.1.2基于LPM_ROM的4位乘法器設(shè)計,參數(shù)設(shè)置,圖6-4LPM_ROM參數(shù)設(shè)置窗口,ROM中配置數(shù)據(jù)(初始化數(shù)據(jù))文件方法:,(1)用文本編輯器編輯mif文件NEWTEXTEDITORFILE文件關(guān)鍵詞:WIDTH:設(shè)置ROM數(shù)據(jù)寬度DEPTH:設(shè)置ROM數(shù)據(jù)深度(數(shù)據(jù)的數(shù)量)ADDRESS_RADIX:地址的表達格式DATA_RADIX:數(shù)據(jù)的表達格式地址/數(shù)據(jù)表以CONTENTBEGIN開始,以END結(jié)束;地址/數(shù)據(jù)表達方法:47:28冒號左邊為ROM地址值,冒號右邊為此地址中放置的數(shù)據(jù)文件編輯好,后以.mif為后綴保存文件設(shè)定LPMFILE的路徑指向該文件名,LPM_ROM中作為乘法表的數(shù)據(jù)文件rom_data.mifWIDTH=8;DEPTH=256;ADDRESS_RADIX=HEX;DATA_RADIX=HEX;CONTENTBEGIN00:00;01:00;02:00;03:00;04:00;05:00;06:00;07:00;08:00;09:00;10:00;11:01;12:02;13:03;14:04;15:05;16:06;17:07;18:08;19:09;20:00;21:02;22:04;23:06;24:08;25:10;26:12;27:14;28:16;29:18;30:00;31:03;32:06;33:09;34:12;35:15;36:18;37:21;38:24;39:27;40:00;41:04;42:08;43:12;44:16;45:20;46:24;47:28;48:32;49:36;50:00;51:05;52:10;53:15;54:20;55:25;56:30;57:35;58:40;59:45;60:00;61:06;62:12;63:18;64:24;65:30;66:36;67:42;68:48;69:54;70:00;71:07;72:14;73:21;74:28;75:35;76:42;77:49;78:56;79:63;80:00;81:08;82:16;83:24;84:32;85:40;86:48;87:56;88:64;89:72;90:00;91:09;92:18;93:27;94:36;95:45;96:54;97:63;98:72;99:81;END;,(2)用初始化存儲器編輯窗口編輯.mif,完成電路設(shè)計后,打開仿真器窗口simulator,選擇Initialize菜單中InitializeMemery選項,在此窗口中完成地址/數(shù)據(jù)的編輯。然后按ExportFile將文件以.mif為后綴保存。,圖6-6在InitializeMemory窗口中編輯乘法表地址/數(shù)據(jù),圖6-5LPM_ROM構(gòu)成的乘法器仿真波形,LPM模塊的VHDL文本方式調(diào)用方法:將LPM中的某一宏功能塊作為以VHDL表達的設(shè)計項目中的一個元件,可利用MAX+plusII中內(nèi)帶的LPM塊處理器,根據(jù)項目需要對其參數(shù)作適當設(shè)置,由此生成一個特定的LPMVHDL文本表述,最后利用元件例化語句,在頂層設(shè)計中調(diào)用該模塊,從而優(yōu)化設(shè)計。,6.2LPM模塊的VHDL文本方式調(diào)用,LPM模塊可作為低層設(shè)計元件,用HDL文本方式調(diào)用。在MAX+plusII中可調(diào)用LPM的HDL語言有AHDL、VHDL、VerilogHDL。,圖6-7生成或修改一個定制的LPM模塊,6.2.1編輯定制LPM_RAM模塊,fileMegaWizardPlug-InManager,圖6-8用VHDL定制LPM_RAM,文件名:RAM2.vhd,算術(shù)LPM模塊,DSP宏LPM模塊,門電路LPM模塊,存儲器LPM模塊,圖6-9選擇RAM2數(shù)據(jù)位寬為8,地址線寬為9(29=512個字節(jié)),選擇RAM數(shù)據(jù)位寬度,選擇RAM地址線位寬,圖6-10RAM2配置文件與結(jié)構(gòu)設(shè)置,對FPGA初化數(shù)據(jù)文件配置:均為0/放置初化數(shù)據(jù)文件,RAM構(gòu)建設(shè)置為:使用邏輯宏單元LCs/嵌入式陣列塊EAB。選后者,不打勾,圖6-11選擇在讀請求信號有效后數(shù)據(jù)輸出,完成定制:生成文件、路徑,圖6-12雙口RAM,X6.2.2雙口RAM定制,雙口RAM定制方法同RAM2,自動產(chǎn)生的文本文件如例6.2.2,RAM1數(shù)據(jù)位寬為8地址線寬為9,【例6.2.2】-自動生成代碼LIBRARYieee;USEieee.std_logic_1164.all;ENTITYRAM1ISPORT(address:INSTD_LOGIC_VECTOR(8DOWNTO0);-9位地址輸入inclock:INSTD_LOGIC;-數(shù)據(jù)寫入時鐘we:INSTD_LOGIC;-寫允許信號data:INSTD_LOGIC_VECTOR(7DOWNTO0);-8位寫入數(shù)據(jù)q:OUTSTD_LOGIC_VECTOR(7DOWNTO0);-8位RAM數(shù)據(jù)輸出ENDRAM1;ARCHITECTURESYNOFRAM1ISSIGNALsub_wire0:STD_LOGIC_VECTOR(7DOWNTO0);COMPONENTlpm_ram_dq-LPM元件GENERIC(lpm_width:NATURAL;-類屬RAM數(shù)據(jù)寬度自然數(shù)數(shù)據(jù)類型,接上頁lpm_widthad:NATURAL;-類屬RAM地址線位寬自然數(shù)數(shù)據(jù)類型lpm_indata,lpm_address_control,lpm_outdata,lpm_hint:STRING);PORT(address:INSTD_LOGIC_VECTOR(8DOWNTO0);we,inclock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7DOWNTO0);data:INSTD_LOGIC_VECTOR(7DOWNTO0);ENDCOMPONENT;BEGINq8,-8位數(shù)據(jù)寬度自然數(shù)數(shù)據(jù)類型LPM_WIDTHAD=9,-9位地址線寬度自然數(shù)數(shù)據(jù)類型LPM_INDATA=REGISTERED,-寄存器鎖存方式寫入數(shù)據(jù),字符串數(shù)據(jù)類型LPM_ADDRESS_CONTROL=REGISTERED,-寄存器鎖存方式寫入地址,字符串數(shù)據(jù)類型,接上頁LPM_OUTDATA=UNREGISTERED,-非寄存器鎖存方式輸出數(shù)據(jù)LPM_HINT=USE_EAB=ON)-允許使用FPGA中的EABPORTMAP(address=address,inclock=inclock,data=data,we=we,q=sub_wire0);ENDSYN;,圖6-13雙口RAM的仿真波形,圖6-14波形發(fā)生器電路系統(tǒng)結(jié)構(gòu)圖,1.正弦信號發(fā)生器結(jié)構(gòu),6.2.3正弦信號發(fā)生器設(shè)計與LPMROM定制,工作原理:計數(shù)器通過外來控制信號和高速時鐘信號向波形數(shù)據(jù)ROM發(fā)出地址信號,輸出波形頻率由發(fā)出的地址信號速度決定,波形數(shù)據(jù)ROM中存有發(fā)生器的波形數(shù)據(jù),當接受來自FPGA的地址信號后,從數(shù)據(jù)線輸出相應(yīng)波形數(shù)據(jù),D/A轉(zhuǎn)化器負責(zé)將ROM輸出的數(shù)據(jù)轉(zhuǎn)換成模擬信號,經(jīng)濾波器后輸出。,2.正弦信號波形數(shù)據(jù)文件建立,【例6.2.3.1】LPM_ROM中作為正弦波形數(shù)據(jù)文件sin_data.mifWIDTH=8;-數(shù)據(jù)位寬DEPTH=64;-地址線位寬6位(26字節(jié))ADDRESS_RADIX=HEX;-16進制表示DATA_RADIX=DEC;-10進制表示CONTENTBEGIN00:255;01:254;02:252;03:249;04:245;05:239;06:233;07:225;08:217;09:207;0A:197;0B:186;0C:174;0D:162;0E:150;0F:137;10:124;11:112;12:99;13:87;14:75;15:64;16:53;17:43;18:34;19:26;1A:19;1B:13;1C:8;1D:4;1E:1;1F:0;20:0;21:1;22:4;23:8;24:13;25:19;26:26;27:34;28:43;29:53;2A:64;2B:75;2C:87;2D:99;2E:112;2F:124;30:137;31:150;32:162;33:174;34:186;35:197;36:207;37:217;38:225;39:233;3A:239;3B:245;3C:249;3D:252;3E:254;3F:255;END;,定制LPMROM文件,3.LPMROM定制,選擇ROM參數(shù),加入初始化文件,仿真波形,【例6.2.3.2】-SINDATA-自動生成代碼LIBRARYieee;USEieee.std_logic_1164.all;ENTITYSINDATAISPORT(address:INSTD_LOGIC_VECTOR(5DOWNTO0);inclock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7DOWNTO0);ENDSINDATA;ARCHITECTURESYNOFSINDATAISSIGNALsub_wire0:STD_LOGIC_VECTOR(7DOWNTO0);COMPONENTlpm_romGENERIC(lpm_width:NATURAL;lpm_widthad:NATURAL;lpm_address_control:STRING;lpm_outdata:STRING;lpm_file:STRING);,接上頁PORT(address:INSTD_LOGIC_VECTOR(5DOWNTO0);inclock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7DOWNTO0);ENDCOMPONENT;BEGINq8,LPM_WIDTHAD=6,LPM_ADDRESS_CONTROL=REGISTERED,LPM_OUTDATA=UNREGISTERED,LPM_FILE=D:/SIN_G/DATA/sin_data.mif)PORTMAP(address=address,inclock=inclock,q=sub_wire0);ENDSYN;,LPM_FILE=“./DATA/sin_data.mif,【例6.2.3.3】-正弦信號發(fā)生器源文件LIBRARYIEEE;-正弦信號發(fā)生器源文件USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSINGTISPORT(CLK:INSTD_LOGIC;-信號源時鐘DOUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0);-8位波形數(shù)據(jù)輸出END;ARCHITECTUREDACCOFSINGTISCOMPONENTSINDATA-調(diào)用波形數(shù)據(jù)存儲器LPM_ROMATAROM.VHD聲明PORT(address:INSTD_LOGIC_VECTOR(5DOWNTO0);inclock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7DOWNTO0);ENDCOMPONENT;,4.完成正弦信號發(fā)生器頂層設(shè)計和測試,接上頁SIGNALQ1:STD_LOGIC_VECTOR(5DOWNTO0);-設(shè)定內(nèi)部節(jié)點作為地址計數(shù)器BEGINPROCESS(CLK)-LPM_ROM地址發(fā)生器進程BEGINIFCLKEVENTANDCLK=1THENQ1Q1,q=DOUT,inclock=CLK);-例化END;,選擇FIFO數(shù)據(jù)位寬為8,深度為512,6.2.4編輯定制LPM_FIFO模塊,fifo端口設(shè)置,異步清零,存儲數(shù)據(jù)溢出信號選擇full,選擇Area優(yōu)化方式和EAB構(gòu)建,Area優(yōu)化方式:選擇面積,單擊“Finish”后完成fifo2.vhd的定制,LPM_FIFO自動生成文件LIBRARYieee;USEieee.std_logic_1164.all;ENTITYfifo2ISPORT(data:INSTD_LOGIC_VECTOR(7DOWNTO0);-輸入數(shù)據(jù)wrreq:INSTD_LOGIC;-寫入請求rdreq:INSTD_LOGIC;-讀出請求clock:INSTD_LOGIC;-工作時鐘aclr:INSTD_LOGIC;-異步清0q:OUTSTD_LOGIC_VECTOR(7DOWNTO0);-數(shù)據(jù)輸出full:OUTSTD_LOGIC);-溢出標志ENDfifo2;ARCHITECTURESYNOFfifo2ISSIGNALsub_wire0:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALsub_wire1:STD_LOGIC;,LPM_FIFO定制文件的仿真測試,接上頁COMPONENTlpm_fifo-調(diào)用LPM_FIFO聲明GENERIC(lpm_width:NATURAL;-類屬數(shù)據(jù)寬度自然數(shù)數(shù)據(jù)類型lpm_numwords:NATURAL;-類屬數(shù)據(jù)深度自然數(shù)數(shù)據(jù)類型lpm_widthu:NATURAL;-類屬地址寬度自然數(shù)數(shù)據(jù)類型lpm_showahead:STRING;-類屬數(shù)據(jù)讀出方式字符串數(shù)據(jù)類型lpm_hint:STRING);-類屬優(yōu)化方式字符串數(shù)據(jù)類型PORT(rdreq:INSTD_LOGIC;aclr:INSTD_LOGIC;clock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7DOWNTO0);wrreq:INSTD_LOGIC;data:INSTD_LOGIC_VECTOR(7DOWNTO0);full:OUTSTD_LOGIC);ENDCOMPONENT;BEGIN,接上頁q8,-類屬映射語句,數(shù)據(jù)寬度8位LPM_NUMWORDS=512,-8位字節(jié)數(shù)512個LPM_WIDTHU=9,-地址線位寬9位LPM_SHOWAHEAD=OFF,-關(guān)閉先行數(shù)據(jù)輸出開關(guān)LPM_HINT=USE_EAB=ON,MAXIMIZE_SPEED=5)-打開內(nèi)部EAB,最大速度約束等級為5PORTMAP(rdreq=rdreq,aclr=aclr,clock=clock,wrreq=wrreq,data=data,q=sub_wire0,full=sub_wire1);ENDSYN;,仿真波形,寫入請求wrreq為高電平,在clock的每一個上升沿將data上的數(shù)據(jù)寫入fifo中;在rdreq為低電平,讀出請求rdreq為高電平,在clock的每一個上升沿按先進先出的順序?qū)ifo中存入的數(shù)據(jù)讀出,6.4.5數(shù)據(jù)類型定義語句,數(shù)據(jù)類型一般包括:*預(yù)定義數(shù)據(jù)類型*用戶自定義數(shù)據(jù)類型,*預(yù)定義數(shù)據(jù)類型:,已經(jīng)在VHDL標準中預(yù)先定義,預(yù)定義類型在VHDL標準程序包STANDARD中定義,在應(yīng)用中自動包含進VHDL的源文件,不需要USE語句顯示調(diào)用;可直接使用預(yù)定義數(shù)據(jù)類型包括:整數(shù)(INTEGER)、實數(shù)(REAL)、位(BIT)位矢量(BIT_VECTOR)、布爾量(BOOLEAN)、字符(CHARACTER)、字符串(STRING)、時間(TIME)、錯誤等級(SEVERITYLEVEL)、大于等于零的整數(shù)(自然數(shù))(NATURAL),正整數(shù)(POSITIVE),*用戶自定義數(shù)據(jù)類型:可按照類型說明的格式用戶自己定義所需的類型,實現(xiàn)用戶自定義數(shù)據(jù)類型的兩種方法:*數(shù)據(jù)類型定義語句TYPE*子類型定義語句SUBTYPE,可以由用戶定義的數(shù)據(jù)類型有:枚舉(ENUMERATED)類型;數(shù)組(ARRAY)類型;整數(shù)(INTEGER)類型;實數(shù)(REAL)浮點數(shù)(FLOATING)類型;存?。ˋCCESS)類型;文件(FILE)類型;記錄(RECORDE)類型;時間(TIME)類型(物理類型),TYPE語句用法如下:TYPE數(shù)據(jù)類型名IS數(shù)據(jù)類型定義OF基本數(shù)據(jù)類型;,*類型定義語句TYPE,數(shù)據(jù)類型定義:描述所定義的數(shù)據(jù)類型的表達方式和表達內(nèi)容基本數(shù)據(jù)類型:一般為已有的預(yù)定義數(shù)據(jù)類型,*子類型對一些已定義的數(shù)據(jù)類型進行一定的范圍限制,從而形成一種特殊的數(shù)據(jù)類型。,子類型SUBTYPE的語句格式如下:SUBTYPE子類型名IS基本數(shù)據(jù)類

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論