




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 E D A技術與應用第第7章章 LPMLPM宏模塊的應用宏模塊的應用 E D A技術與應用LPM是是Library of Parameterized Modules(參(參數可設置模塊庫)的縮寫。在許多設計中,必數可設置模塊庫)的縮寫。在許多設計中,必須利用這些宏模塊才可以使用一些須利用這些宏模塊才可以使用一些Altera器件器件中特定模塊的硬件功能,比如片上存儲器、中特定模塊的硬件功能,比如片上存儲器、DSP模塊、模塊、LVDS驅動器、嵌入式鎖相環驅動器、嵌入式鎖相環PLL模模塊等。塊等。 E D A技術與應用7.1 計數器計數器LPM宏宏模塊模塊調用調用7.1.1 計數器計數器LPM模塊
2、文本代碼的調用模塊文本代碼的調用(1)打開打開LPM宏功能塊調用管理器宏功能塊調用管理器:新建一個文件夾(如:新建一個文件夾(如d:LPM_MD),選擇),選擇ToolsMegaWizard Plug-In Manager,選中選中Create a new custom megafunction variation單選按鈕單選按鈕(定制一個新模塊),或選中(定制一個新模塊),或選中Edit an existing custom megafunction variation(修改一個已編輯好的(修改一個已編輯好的LPM模塊)。模塊)。 E D A技術與應用7.1 計數器計數器LPM宏宏模塊模塊調
3、用調用7.1.1 計數器計數器LPM模塊文本代碼的調用模塊文本代碼的調用(1)打開打開LPM宏功能塊調用管理器宏功能塊調用管理器:單擊:單擊Next,左欄中有各,左欄中有各類功能的類功能的LPM模塊選項目錄。單擊算術項模塊選項目錄。單擊算術項Arithmetic,選擇,選擇LPM_COUNTER。在右上角選擇。在右上角選擇Cyclone III器件系列和器件系列和Verilog HDL語言方式。鍵入模塊文件存放路徑和文件名。語言方式。鍵入模塊文件存放路徑和文件名。 E D A技術與應用7.1 計數器計數器LPM宏宏模塊模塊調用調用7.1.1 計數器計數器LPM模塊文本代碼的調用模塊文本代碼的調
4、用(2)設置設置4位可加減計數器位可加減計數器:單擊:單擊Next,選擇,選擇4位計數器,再位計數器,再選擇選擇Create an updown input port to allow me to do both,使,使計數器有加減控制功能。計數器有加減控制功能。 E D A技術與應用7.1 計數器計數器LPM宏宏模塊模塊調用調用7.1.1 計數器計數器LPM模塊文本代碼的調用模塊文本代碼的調用(3)設定計數器,含時鐘使能和進位輸出設定計數器,含時鐘使能和進位輸出:單擊:單擊Next,選中,選中Modulus,并選擇,并選擇12,表示模,表示模12計數器(若選擇計數器(若選擇Plain bin
5、ary表示普通二進制計數器),選擇時鐘使能控制表示普通二進制計數器),選擇時鐘使能控制Clock Enable和和進位輸出進位輸出Carry-out。 E D A技術與應用7.1 計數器計數器LPM宏宏模塊模塊調用調用7.1.1 計數器計數器LPM模塊文本代碼的調用模塊文本代碼的調用(4)加入加入4位并行數據預置功能位并行數據預置功能:單擊:單擊Next,選擇,選擇4位數據位數據同同步步加載控制加載控制Load和異步和異步清清0控制控制Clear。再單擊。再單擊Next結束設置。結束設置。生成生成LPM計數器的計數器的Verilog文件文件CNT4B.v,可被高一層次的,可被高一層次的Veri
6、log程序作為計數器元件調用。程序作為計數器元件調用。 E D A技術與應用7.1.2 LPM計數器代碼與參數傳遞語句計數器代碼與參數傳遞語句 例例7-1:LPM計數器代碼計數器代碼 module CNT4B (aclr, clk_en, clock, data, sload, updown, cout, q); input aclr, clk_en; /異步清異步清0,1清清0;時鐘使能;時鐘使能,1使能使能,0禁止禁止 input clock, sload; /時鐘輸入;同步預置數加載控制時鐘輸入;同步預置數加載控制,1加載加載,0禁止禁止 input 3: 0 data; input u
7、pdown;/4位預置數和加減控制位預置數和加減控制,1加加,0減減 output cout; output 3: 0 q;/進位輸出和進位輸出和4位計數輸出位計數輸出 wire sub_wire0; wire 3: 0 sub_wire1;/定義內部連線定義內部連線 wire cout=sub_wire0; wire 3: 0 q=sub_wire1 3: 0; /注意例化語句中未用端口必須接上指定電平注意例化語句中未用端口必須接上指定電平 lpm_counter lpm_counter_component (.sload(sload), .clk_en(clk_en), .aclr(acl
8、r), .data(data), .clock(clock), .updown(updown), .cout(sub_wire0), .q(sub_wire1), .aload(1b0), .aset(1b0), .cin(1b1), .cnt_en(1b1), .eq(), .sclr(1b0), .sset(1b0); defparam lpm_counter_component.lpm_direction=“UNUSED”,/單方向計數參數未用單方向計數參數未用 lpm_counter_component.lpm_modulus=12,/模模12計數器計數器 lpm_counter_co
9、mponent.lpm_port_updown=“PORT_USED”,/使用加減計數使用加減計數 lpm_counter_component.lpm_type=“LPM_COUNTER”,/計數器類型計數器類型 lpm_counter_component.lpm_width=4;/計數位寬計數位寬endmodule E D A技術與應用 例化語句中,例化語句中,未設定的端口必須接上特定的電平未設定的端口必須接上特定的電平。 計數器模塊計數器模塊lpm_counter是一個可設定參數的封閉模塊,只是一個可設定參數的封閉模塊,只能通過參數傳遞說明語句能通過參數傳遞說明語句defparam將用戶設
10、定的參數通過將用戶設定的參數通過文件文件CNT4B.v傳遞進傳遞進lpm_counter中。中。defparam .= 是例化語句中為被調用元件取的例化是例化語句中為被調用元件取的例化名。名。 是被調用元件的設計文件中已定義參數名。是被調用元件的設計文件中已定義參數名。 可以是整數、操作表達式、字符串或在當前模塊可以是整數、操作表達式、字符串或在當前模塊中已定義的參數。中已定義的參數。 defparam語句只能將參數傳遞到比當前層次僅低一層的元語句只能將參數傳遞到比當前層次僅低一層的元件文件中,即當前的例化文件中,不能更深入進去。件文件中,即當前的例化文件中,不能更深入進去。 E D A技術與
11、應用 例例7-2:24位寄存器(位寄存器(defparam語句應用示例)語句應用示例) module REG24B (input 23: 0 d, input clk, output23: 0 q); lpm_ff U1 (.q(q11: 0, .data(d11: 0), .clock(clk);defparam U1.lpm_width=12; lpm_ff U2 (.q(q23: 12), .data(d23: 12), .clock(clk);defparam U2.lpm_width=12;endmoduleLPM_FF是可參數設置的是可參數設置的LPM寄存器模塊。寄存器模塊。 例例
12、7-3: LPM計數器頂層設計計數器頂層設計 module CNT4BIT (RST, ENA, CLK, DIN, SLD, UD, COUT, DOUT); input RST, ENA, CLK, SLD, UD; input 3: 0 DIN; output COUT; output3: 0 DOUT; CNT4B U1 (.sload(SLD), .clk_en(ENA), .aclr(RST), .cout(COUT), .clock(CLK), .data(DIN), .updown(UD), .q(DOUT);endmodule E D A技術與應用7.1.3 創建工程與仿真測
13、試創建工程與仿真測試CNT4BIT仿真波形仿真波形CNT4B原理原理圖輸入設計圖輸入設計SLD是同步信號,是同步信號,SLD=1但但CLK無上升沿,無上升沿,所以沒有進行加載所以沒有進行加載可利用可利用LPM計數器宏模塊的原理圖文件計數器宏模塊的原理圖文件CNT4B.bsf,通過在原理圖工程中調用此元件來測試它通過在原理圖工程中調用此元件來測試它 E D A技術與應用7.2 利用屬性控制乘法器的構建利用屬性控制乘法器的構建如果按照如果按照Verilog通常的表述方式,綜合出的乘法器一定會占通常的表述方式,綜合出的乘法器一定會占用大量的邏輯資源,且運行速度不一定快。在用大量的邏輯資源,且運行速度
14、不一定快。在FPGA開發中,開發中,最常用的方法是直接調用最常用的方法是直接調用FPGA內部已嵌入的內部已嵌入的硬件乘法器硬件乘法器(DSP模塊)模塊)。 例例7-4:8位普通乘法器(乘法操作符)位普通乘法器(乘法操作符) module MULT8 (A1, B1, A2, B2, R1, R2); output signed 15: 0 R1, R2; /定義有符號數據類型輸出定義有符號數據類型輸出 input signed 7: 0 A1, B1, A2, B2; /定義有符號數據類型輸入定義有符號數據類型輸入 wire 15: 0 R2 /*synthesis multstyle=“lo
15、gic”*/; wire 15: 0 R1/*synthesis multstyle=“dsp”*/; assign R1=A1*B1; assign R2=A2*B2;endmodule E D A技術與應用 wire 15: 0 R2 /* synthesis multstyle=“logic” */; 指示綜合器將以指示綜合器將以R2為輸出口的乘法器以為輸出口的乘法器以純組合邏輯純組合邏輯方式的方式的宏單元構建,宏單元構建,logic是屬性關鍵詞。是屬性關鍵詞。 wire 15: 0 R1 /* synthesis multstyle=“dsp” */; 指示綜合器將以指示綜合器將以R1
16、為輸出口的乘法器調用為輸出口的乘法器調用FPGA的的嵌入式嵌入式乘法器乘法器來構建乘法器,來構建乘法器, dsp是是屬性關鍵詞屬性關鍵詞。module andd(A1, B2, A2, B2, R1, R2) /* synthesis multstyle=“dsp” */; 指示綜合器將指示綜合器將整個模塊整個模塊內的乘法器構建方式都用內的乘法器構建方式都用DSP模塊。模塊。 E D A技術與應用 如果如例如果如例7-4采用純組合邏輯方式構建一個乘法器,用采用純組合邏輯方式構建一個乘法器,用DSP模塊構建另一個乘法器,則編譯可以看出,使用了模塊構建另一個乘法器,則編譯可以看出,使用了1個嵌入個
17、嵌入式式9位位DSP模塊和模塊和95個邏輯宏單元。個邏輯宏單元。 如果將整個模塊都用如果將整個模塊都用DSP模塊構建。則編譯后可以看出,模塊構建。則編譯后可以看出,使用了使用了2個個DSP模塊和模塊和0個邏輯宏單元。個邏輯宏單元。采用采用DSP模塊構建所設計的電路,更加高速且節省邏輯資源。模塊構建所設計的電路,更加高速且節省邏輯資源。 E D A技術與應用通過通過Quartus II設置設置DSP模塊構建模塊構建:AssignmentsSetting,在,在左欄選擇左欄選擇Analysis&Synthesis Settings項,在對話框中按項,在對話框中按More Settings按
18、鈕,在彈出的對話框中選擇按鈕,在彈出的對話框中選擇DSP Block Balancing項項的的DSP blocks。 E D A技術與應用7.3 LMP_RAM宏模塊的設置與使用宏模塊的設置與使用在涉及在涉及RAM和和ROM等存儲器應用的設計開發中,調用等存儲器應用的設計開發中,調用LPM模塊類存儲器是最方便、最經濟高效和性能最容易滿足設計模塊類存儲器是最方便、最經濟高效和性能最容易滿足設計要求的途徑。要求的途徑。7.3.1 初始化文件及其生成初始化文件及其生成 初始化文件初始化文件是可配置于是可配置于LPM_RAM或或LPM_ROM中的數據中的數據或程序代碼。或程序代碼。 初始化文件的格式
19、必須滿足一定的要求初始化文件的格式必須滿足一定的要求。.mif格式和格式和.hex格格式是式是Quartus II能直接調用的兩種初始化文件的格式,能直接調用的兩種初始化文件的格式,.dat格式文件可通過格式文件可通過Verilog語言直接調用。語言直接調用。 E D A技術與應用(1)直接編譯法直接編譯法: 在在Quartus II中選擇中選擇FileNew,選擇,選擇Memory File欄的欄的Memory Initialization File項,單擊項,單擊OK,產生,產生.mif數據文件大數據文件大小選擇窗口。根據存儲器的地址和數據寬度選擇參數(如果小選擇窗口。根據存儲器的地址和數
20、據寬度選擇參數(如果地址線寬為地址線寬為7位,選位,選Number為為128;數據線寬為;數據線寬為8位,選擇位,選擇Word size為為8位)。單擊位)。單擊OK,出現,出現mif數據表格。數據表格。1. .mif格式文件格式文件 E D A技術與應用(1)直接編譯法直接編譯法: 可可在在mif數據表格中鍵入數據。數據表格中鍵入數據。表格表格中的中的數據格式數據格式可通過右擊可通過右擊窗口邊緣的地址數據所彈出的窗口邊緣的地址數據所彈出的窗口中選擇。窗口中選擇。 表中任一數據對應的地址為左表中任一數據對應的地址為左列數與頂行數之和。列數與頂行數之和。 完成完成數據輸入后,選擇數據輸入后,選擇
21、FileSave As,保存此數據文,保存此數據文件,如取名為件,如取名為data7X8.mif。1. .mif格式文件格式文件 E D A技術與應用(2)文件直接編輯法文件直接編輯法:使用使用Quartus II以外的編輯器設計以外的編輯器設計.mif文件文件 例例7-5:編輯器設計:編輯器設計.mif文件文件 DEPTH=128;:數據深度,即存儲的數據個數:數據深度,即存儲的數據個數WIDTH=8;:輸出數據寬度:輸出數據寬度ADDRESS_RADIX=HEX;:地址數據類型,:地址數據類型,HEX表示選擇十六進制表示選擇十六進制 數據類型數據類型DATA_RADIX=HEX;:存儲:存
22、儲數據類型,數據類型,HEX表示選擇十六進制表示選擇十六進制數據數據 類型類型CONTENT:此為關鍵詞:此為關鍵詞BEGIN:此為關鍵詞:此為關鍵詞0000 : 0080;0001 : 0086;0002 : 008C;(數據略去)(數據略去)007E : 0073;007F : 0079;END; E D A技術與應用(3)高級語言生成高級語言生成:.mif也可用也可用C或或Matlab等高級語言或工具生成。等高級語言或工具生成。(4)專用專用.mif文件生成器文件生成器: 用用.mif文件生成器來生成不同波形、不同數據格式、不文件生成器來生成不同波形、不同數據格式、不同符號、不同相位的同
23、符號、不同相位的.mif文件。文件。某某ROM的數據線寬為的數據線寬為8位,地址線寬為位,地址線寬為7位位(可放置(可放置128個個8位數位數據),或者說一個周期據),或者說一個周期分為分為128個點,每個點個點,每個點精度為精度為8位二進制數,位二進制數,初相位為初相位為0的正弦波信的正弦波信號波形數據號波形數據 E D A技術與應用(1)FileNew,選擇,選擇Memory File欄欄的的Hexadecimal (Intel-Format) File項項,單擊,單擊OK 。根據存儲器的地址和數據寬度選擇。根據存儲器的地址和數據寬度選擇參數。在參數。在hex數據數據表格中鍵入表格中鍵入數
24、據數據,最后存盤為最后存盤為.hex格式文件。格式文件。2. .hex格式文件格式文件(2)用諸如單片機編譯器來產生,方式是利用匯編程序編)用諸如單片機編譯器來產生,方式是利用匯編程序編輯器將數據編輯于匯編程序中,用匯編編譯器生成輯器將數據編輯于匯編程序中,用匯編編譯器生成.hex格式格式文件。文件。 E D A技術與應用.dat格式的數據文件最具有一般性,前兩種文件格式必須使用格式的數據文件最具有一般性,前兩種文件格式必須使用Quartus II規定的屬性表述,而規定的屬性表述,而.dat格式的數據文件的調用可格式的數據文件的調用可用標準用標準Verilog語句直接實現。語句直接實現。3.
25、.dat格式文件格式文件 00 E5 6D 34 E D A技術與應用7.3.2 以原理圖方式對以原理圖方式對LPM_RAM進行進行設置和調用設置和調用 首先打開一個原理圖編輯窗,再存盤,假設文件取名為首先打開一個原理圖編輯窗,再存盤,假設文件取名為RAMMD,并將其創建成工程。在此工程的原理圖編輯窗,并將其創建成工程。在此工程的原理圖編輯窗,單擊左下的單擊左下的MegaWizard Plug-In Manager管理器按鈕,進管理器按鈕,進入入LPM模塊編輯調用窗。在左欄選擇模塊編輯調用窗。在左欄選擇Memory Compiler項項下的單口下的單口RAM模塊模塊“RAM:1-PORT”,文
26、件取名為,文件取名為RAM1P.v。 E D A技術與應用7.3.2 以原理圖方式對以原理圖方式對LPM_RAM進行進行設置和調用設置和調用 單擊單擊Next,選擇數據位,選擇數據位8和數據深度和數據深度128,對應,對應CycloneIII,存儲器構建方式選擇存儲器構建方式選擇M9K,再選擇雙時鐘方式。,再選擇雙時鐘方式。 E D A技術與應用7.3.2 以原理圖方式對以原理圖方式對LPM_RAM進行進行設置和調用設置和調用 單擊單擊Next,去掉選項,去掉選項“q output port”前的鉤,即選擇時前的鉤,即選擇時鐘只控制鎖存輸入信號。鐘只控制鎖存輸入信號。 單擊單擊Next,出現三
27、個選項,當允許寫入時,讀出的數據是,出現三個選項,當允許寫入時,讀出的數據是新寫入的數據(新寫入的數據(New Data),還是寫入前的數據(),還是寫入前的數據(Old Data),還是無所謂(),還是無所謂(Dont Care)。這里選)。這里選Old Data。 E D A技術與應用7.3.2 以原理圖方式對以原理圖方式對LPM_RAM進行進行設置和調用設置和調用 單擊單擊Next,在,在Do you want to specify the initial content of the memory欄中選擇欄中選擇“Yes, use this file for the memory co
28、ntent date”,并單擊,并單擊Browse,選擇指定路徑上的初始化,選擇指定路徑上的初始化文件文件DATA7X8.mif。選中。選中“Allow In-System Memory”復選框,并在復選框,并在The instance ID of this RAM is文本框中輸入文本框中輸入某某4字文字,如字文字,如“MYRM”作為此作為此RAM的的ID名稱。單擊名稱。單擊Finish完成完成RAM定制。定制。 E D A技術與應用7.3.2 以原理圖方式對以原理圖方式對LPM_RAM進行進行設置和調用設置和調用 調入頂層原理圖后,連接好端口引腳。調入頂層原理圖后,連接好端口引腳。 E D
29、 A技術與應用7.3.3 測試測試LPM_RAM對對RAM模塊進行測試,了解其信號線的功能和加載于其中的模塊進行測試,了解其信號線的功能和加載于其中的初始化文件數據是否成功。初始化文件數據是否成功。地址地址A從從0開始開始RAM的仿真波形的仿真波形WREN=0,讀,讀RAM中數據中數據WREN=1,D中數據被寫入中數據被寫入RAM,同時讀,同時讀出的數據仍然是寫入前的數據(出的數據仍然是寫入前的數據(Old Data)WREN再次為再次為0時,時,隨著寫入時的地址隨著寫入時的地址信號和時鐘上升沿,信號和時鐘上升沿,讀出寫入的數據。讀出寫入的數據。 E D A技術與應用7.3.4 存儲器的存儲器
30、的Verilog代碼描述代碼描述 例例7-6:RAM模塊的純模塊的純Verilog描述描述 module RAM78 (output wire 7: 0 Q, /定義定義RAM的的8為數據輸出端口為數據輸出端口 input wire 7: 0 D, /定義定義RAM的的8位數據輸入端口位數據輸入端口 input wire 6: 0 A, /定義定義RAM的的7位地址輸入端口位地址輸入端口 input wire CLK, WREN); /定義時鐘和寫允許控制定義時鐘和寫允許控制 reg 7: 0 mem 127: 0 /* synthesis ram_init_file=“DATA7X8.mif
31、” */; always (posedge CLK)if (WREN) mem A = D; /在在CLK上升沿將數據口上升沿將數據口D的數據的數據 鎖入地址對應單元中鎖入地址對應單元中assign Q = mem A; /同時,地址對應單元的數據被輸同時,地址對應單元的數據被輸 出至端口出至端口endmodule E D A技術與應用module RAM78 (output wire 7: 0 Q, input wire 7: 0 D, input wire 6:0 A, input wire CLK, WREN);等價于等價于module RAM78 (output 7: 0 Q, inp
32、ut 7: 0 D, input 6:0 A, input CLK, WREN);1. 存儲器端口描述存儲器端口描述 E D A技術與應用2. 存儲器的存儲器的Verilog一般描述一般描述 reg 7: 0 mem 127: 0 定義了一個二維矢量變量,包含定義了一個二維矢量變量,包含1024個標量元素,每一元個標量元素,每一元素代表一個邏輯位。換句話說,定義了一個包含素代表一個邏輯位。換句話說,定義了一個包含128個存儲個存儲單元,每個單元為單元,每個單元為8位的存儲器位的存儲器mem。 此存儲器由此存儲器由128個個8位寄存器構成的陣列來構建,至少包含位寄存器構成的陣列來構建,至少包含1
33、024個觸發器。個觸發器。 用用Verilog定義存儲器時,需定義存儲器容量和字長。定義存儲器時,需定義存儲器容量和字長。容量容量表示存儲器存儲單元的數量或存儲深度(如表示存儲器存儲單元的數量或存儲深度(如128個),個),字長字長是每個存儲單元的數據寬度(如是每個存儲單元的數據寬度(如8)。)。 E D A技術與應用2. 存儲器的存儲器的Verilog一般描述一般描述 例:例:parameter width=8, msize=1024;reg width-1: 0 MEM87 msize-1: 0; 用用parameter參數定義存儲器的容量大小,可十分容易地修參數定義存儲器的容量大小,可十
34、分容易地修改存儲器的尺寸。改存儲器的尺寸。 對存儲器賦值要求對存儲器賦值要求只能對存儲器的某一單元賦值只能對存儲器的某一單元賦值。 例:例:reg7: 0 mem87128: 0;mem8716=8b11001001; /mem87存儲器第存儲器第16單元被賦值為單元被賦值為 二進制數二進制數11001001mem87122=76; /mem87存儲器第存儲器第122單元被賦值為單元被賦值為 十進制數十進制數76 E D A技術與應用2. 存儲器的存儲器的Verilog一般描述一般描述 例:例:reg15: 0 A; /定義了一個定義了一個16位的寄存器位的寄存器reg MEM15: 0; /
35、定義了定義了 一個字長為一個字長為1,即,即1位的,容量深度位的,容量深度 為為16的存儲器的存儲器 注意寄存器和存儲器定義上的區別。注意寄存器和存儲器定義上的區別。 盡管以上定義在實現的結構上沒有區別,但在定義的含義和盡管以上定義在實現的結構上沒有區別,但在定義的含義和賦值的語法上有區別。賦值的語法上有區別。不允許對存儲器多個或所有單元同時不允許對存儲器多個或所有單元同時賦值賦值。 例:例:A5 =1b0;/允許對寄存器允許對寄存器A的第的第5位賦值位賦值0MEM7=1b1;/允許對存儲器允許對存儲器MEM的第的第7個單元賦值個單元賦值1A=16hABCD;/允許對寄存器允許對寄存器A整體賦
36、值整體賦值MEM=16hABCD;/錯誤!不允許對存儲器多個或所有單錯誤!不允許對存儲器多個或所有單元同時賦值元同時賦值 E D A技術與應用3. 存儲器中初始化文件的調用與配置存儲器中初始化文件的調用與配置在純代碼的在純代碼的Verilog程序中的存儲器中調用初始化文件。程序中的存儲器中調用初始化文件。 第一種方法:利用第一種方法:利用Quartus II給定的屬性語句給定的屬性語句,僅限于,僅限于Quartus II平臺中使用。平臺中使用。reg7: 0 mem127: 0 /* synthesis ram_init_file=“DATA7X8.mif” */;(* synthesis r
37、am_init_file=“DATA7X8.mif” *) reg7: 0 mem127: 0; 第二種方法:利用第二種方法:利用過程語句過程語句initial和和系統函數系統函數$readmemh,采用的是標準的采用的是標準的Verilog語句,不局限于語句,不局限于Quartus II平臺。平臺。 initial $readmemh (“RAM78_DAT.dat”, mem); $readmemh()是存儲器初始化文件的系統函數。是存儲器初始化文件的系統函數。“”“”括括起來的起來的是待調用的初始化文件的文件名。是待調用的初始化文件的文件名。逗號旁的逗號旁的mem是存儲器名稱。是存儲器名
38、稱。 E D A技術與應用 例例7-7:RAM模塊的純模塊的純Verilog描述描述(利用過程語句(利用過程語句initial和系統函數和系統函數$readmemh調用初始化文件)調用初始化文件) module RAM78 (output 7: 0 Q, input 7: 0 D, input 6: 0 A, input CLK, WREN); reg 7: 0 mem 0: 127; always (posedge CLK) if (WREN) mem A = D; assign Q = mem A; initial $readmemh (“RAM78_DAT.dat”, mem);endm
39、odule 使用的是過程語句使用的是過程語句initial和系統函數和系統函數$readmemh,因此初始,因此初始化數據文件的格式必須是化數據文件的格式必須是.dat文件。文件。 注意,綜合器只會以注意,綜合器只會以.dat文件中的數據排列順序對應的形式文件中的數據排列順序對應的形式加載到加載到mem0: 127存儲器在,而存儲器在,而.dat文件中的數據排列順文件中的數據排列順序默認從低位地址開始排列,因此這里序默認從低位地址開始排列,因此這里mem的表述格式是的表述格式是mem0: 127 E D A技術與應用4. 語句語法說明語句語法說明initial begin 語句語句1;語句;語
40、句2; end initial過程語句。過程語句。 沒有敏感信號表沒有敏感信號表,不帶觸發條件不帶觸發條件,initial過程中的塊語句沿過程中的塊語句沿時間方向軸時間方向軸只執行一次只執行一次。 最最常用于仿真模塊中常用于仿真模塊中對激勵矢量的描述對激勵矢量的描述,或用于,或用于給寄存器變給寄存器變量賦初值量賦初值。而在實際電路中,賦初值是沒有意義的,因此這。而在實際電路中,賦初值是沒有意義的,因此這是是面向模擬仿真面向模擬仿真的過程語句,通常的過程語句,通常不能被綜合工具所接受不能被綜合工具所接受,或在或在綜合時被忽略綜合時被忽略,但卻可以,但卻可以對存儲器加載初始化文件對存儲器加載初始化
41、文件,這,這是是可綜合可綜合行為。行為。 E D A技術與應用4. 語句語法說明語句語法說明initial $readmemh();/用于十六進制數據文件的讀取用于十六進制數據文件的讀取initial $readmemb();/用于二進制數據文件的讀取用于二進制數據文件的讀取 Verilog語言內置了一些系統函數,這些系統函數經常與語言內置了一些系統函數,這些系統函數經常與Verilog的預編譯語句聯合使用,主要用于的預編譯語句聯合使用,主要用于Verilog仿真驗證。仿真驗證。 系統任務和系統函數的名字都是用系統任務和系統函數的名字都是用“$”字母開頭。字母開頭。 E D A技術與應用7.3
42、.5 存儲器設計的結構控制存儲器設計的結構控制 例例7-8:以嵌入式:以嵌入式RAM單元構建的存儲器單元構建的存儲器 module RAM78 (output 7: 0 Q, input 7: 0 D, input 6: 0 A, input CLK, WREN); reg 7: 0 mem 127: 0 /* synthesis ram_init_file=“DATA7X8.mif” */; always (posedge CLK) if (WREN) mem A = D; always (posedge CLK) Q=memA;endmodule例例7-6采用邏輯宏單元構采用邏輯宏單元構建
43、的存儲器的建的存儲器的RTL圖圖例例7-8采用嵌入式采用嵌入式RAM單單元構建的存儲器的元構建的存儲器的RTL圖圖 E D A技術與應用 例例7-6花費了花費了1497個邏輯宏單元,并使用了個邏輯宏單元,并使用了1024個專用寄存器個專用寄存器(D觸發器模塊),未使用任何觸發器模塊),未使用任何RAM單元;例單元;例7-8使用了使用了1024個個RAM單元,未使用邏輯宏單元。單元,未使用邏輯宏單元。 以嵌入式以嵌入式RAM單元構建的存儲器節省了大量的邏輯資源,具單元構建的存儲器節省了大量的邏輯資源,具有最好的資源利用率,而且模塊的速度和可靠性也大為增加。有最好的資源利用率,而且模塊的速度和可靠
44、性也大為增加。例例7-6采用邏輯宏單元構采用邏輯宏單元構建的存儲器的編譯報告建的存儲器的編譯報告例例7-8采用嵌入式采用嵌入式RAM單元單元構建的存儲器的編譯報告構建的存儲器的編譯報告 E D A技術與應用(1)Verilog的表述形式的表述形式。例。例7-6對存儲器的輸出對存儲器的輸出Q,采用了連,采用了連續賦值語句,所以續賦值語句,所以RAM數據端口是直接對外的,其輸出口沒數據端口是直接對外的,其輸出口沒有任何鎖存電路,這樣的結構描述無法使用有任何鎖存電路,這樣的結構描述無法使用FPGA現成的現成的RAM位。例位。例7-8使用了兩個使用了兩個過程語句過程語句,且敏感信號都是,且敏感信號都是
45、CLK上上升沿,特別是升沿,特別是Q的輸出增加了一個的輸出增加了一個CLK信號控制的信號控制的鎖存器鎖存器,這,這樣的描述恰好滿足了樣的描述恰好滿足了FPGA內部內部RAM單元的這種結構。單元的這種結構。例例7-6和例和例7-8的區別:的區別:例例7-6采用邏輯宏單元構采用邏輯宏單元構建的存儲器的建的存儲器的RTL圖圖例例7-8采用嵌入式采用嵌入式RAM單單元構建的存儲器的元構建的存儲器的RTL圖圖 E D A技術與應用(2)調用嵌入式調用嵌入式RAM單元的約束設置單元的約束設置。正確恰當的。正確恰當的Verilog描描述是綜合器能調用述是綜合器能調用FPGA內內RAM單元的基礎,卻不一定能保
46、單元的基礎,卻不一定能保證這項設計會自動調用證這項設計會自動調用RAM單元。必須對單元。必須對EDA工具的綜合器工具的綜合器作必要的約束設置。方法是:作必要的約束設置。方法是:AssignmentsSettings,在左欄,在左欄選擇選擇Analysis&Synthesis Settings項,單擊項,單擊More Setting按鈕,按鈕,在彈出的對話框中選擇在彈出的對話框中選擇Auto RAM Replacement項的項的On,即設,即設置了置了RAM單元的自動替代控制功能。單元的自動替代控制功能。例例7-6和例和例7-8的區別:的區別: E D A技術與應用7.4 LPM_RO
47、M的定制和使用示例的定制和使用示例7.4.1 LPM_ROM的調用的調用(1)創建一個原理圖)創建一個原理圖工程文件(假設工程名工程文件(假設工程名為為SIN_GNT)。)。(2)在原理圖編輯窗)在原理圖編輯窗雙擊,跳出雙擊,跳出Symbol對對話框,單擊話框,單擊MegaWizard Plug-In Manager按鈕按鈕。 E D A技術與應用7.4 LPM_ROM的定制和使用示例的定制和使用示例7.4.1 LPM_ROM的調用的調用(3)選擇)選擇Memory Compiler的的ROM:1-PORT項,設文件名為項,設文件名為ROM78,FPGA是是Cyclone III系列,文本表述
48、選擇系列,文本表述選擇Verilog。 E D A技術與應用7.4 LPM_ROM的定制和使用示例的定制和使用示例7.4.1 LPM_ROM的調用的調用(4)設置此)設置此ROM模塊的參數。模塊的參數。 E D A技術與應用7.4 LPM_ROM的定制和使用示例的定制和使用示例7.4.1 LPM_ROM的調用的調用(4)設置此)設置此ROM模塊的參數。模塊的參數。 E D A技術與應用7.4 LPM_ROM的定制和使用示例的定制和使用示例7.4.1 LPM_ROM的調用的調用(5)配置初始化文件,使用上一節設置的正弦波數據初始化)配置初始化文件,使用上一節設置的正弦波數據初始化文件文件DATA
49、7X8.mif。 E D A技術與應用7.4.2 簡易正弦信號發生器設計簡易正弦信號發生器設計 計數器或地址信號發生器計數器或地址信號發生器:由:由7位計數器擔任,位計數器擔任,7位輸出。位輸出。 正弦信號數據存儲器正弦信號數據存儲器ROM:由:由LPM_ROM模塊構成,模塊構成,7位位地址線,地址線,8為數據線,含有為數據線,含有128個個8位波形數據(一個正弦波位波形數據(一個正弦波形周期)。形周期)。 工程工程SIN_GNT頂層原理圖設計頂層原理圖設計:由地址信號發生器和正弦:由地址信號發生器和正弦數據數據ROM組成。組成。 8位位D/A。 E D A技術與應用7.4.2 簡易正弦信號發
50、生器設計簡易正弦信號發生器設計 地址發生器的時鐘地址發生器的時鐘CLK的輸入頻率的輸入頻率f0與每周期的波形數據與每周期的波形數據點數(點數(128點),以及點),以及D/A輸出的頻率輸出的頻率f的關系是:的關系是:f=f0/128。 設計設計頂層文件,創建工程,全程編譯,頂層文件,創建工程,全程編譯,RTL電路圖,仿真,電路圖,仿真,時序分析,引腳鎖定,編譯下載,在系統讀寫測試和嵌入時序分析,引腳鎖定,編譯下載,在系統讀寫測試和嵌入式邏輯分析儀測試。式邏輯分析儀測試。頂層設計原理圖頂層設計原理圖電路仿真波形電路仿真波形 E D A技術與應用7.4.3 正弦信號發生器硬件實現和測試。正弦信號發
51、生器硬件實現和測試。假設使用假設使用55F+板,使用嵌入式邏輯分析儀測試和觀察輸出波形板,使用嵌入式邏輯分析儀測試和觀察輸出波形引腳鎖定引腳鎖定: CLK-專用輸入口(引腳專用輸入口(引腳 G1) Q7: 0-8個個I/O端口端口(引腳(引腳Y15,AB14,AB13,Y13,AA13,AA14,AB15,AA15) RST-鍵鍵K1(引腳(引腳AA3) EN-鍵鍵K2(引腳(引腳AB3) E D A技術與應用7.4.3 正弦信號發生器硬件實現和測試。正弦信號發生器硬件實現和測試。假設使用假設使用55F+板,使用嵌入式邏輯分析儀測試和觀察輸出波形板,使用嵌入式邏輯分析儀測試和觀察輸出波形Sig
52、nalTap II參數設置參數設置: 采樣采樣深度:深度:4K 采樣采樣時鐘:信號源時鐘時鐘:信號源時鐘CLK 觸發觸發信號:技術使能控制信號:技術使能控制EN=1SignalTap II實時測試圖實時測試圖SignalTap II波形顯示圖波形顯示圖 E D A技術與應用7.5 在系統存儲器數據讀寫編輯器應用在系統存儲器數據讀寫編輯器應用 功能功能:直接通過:直接通過JTAG口讀取或改寫口讀取或改寫FPGA內處于工內處于工作狀態的存儲器中的數據,讀取過程不影響作狀態的存儲器中的數據,讀取過程不影響FPGA的的正常工作。正常工作。 用處用處:在系統了解:在系統了解ROM中加載的數據,讀取基于中
53、加載的數據,讀取基于EAB/M9K的的RAM中采樣獲得的數據,對嵌入在由中采樣獲得的數據,對嵌入在由FPGA資源構建的資源構建的CPU中的數據中的數據RAM和程序和程序ROM中中的信息讀取和數據修改等。的信息讀取和數據修改等。 E D A技術與應用以以7.4節的簡易正弦信號發生器為例節的簡易正弦信號發生器為例(1)打開在系統存儲單元編輯窗口打開在系統存儲單元編輯窗口:使計算機與開發板上:使計算機與開發板上FPGA的的JTAG口處于正常連接狀態。打開工程口處于正常連接狀態。打開工程SIN_GNT,下,下載載SOF文件。文件。ToolIn-System Memory Content Editor,
54、在彈,在彈出的編輯窗口,單擊右上角出的編輯窗口,單擊右上角Setup,在彈出的,在彈出的Hardware Setup對話框中選擇對話框中選擇Hardware Settings選項卡,雙擊選項卡,雙擊USB-Blaster,單擊單擊Close,編輯窗口會顯示,編輯窗口會顯示USB-Blaster和器件的型號。和器件的型號。 E D A技術與應用以以7.4節的簡易正弦信號發生器為例節的簡易正弦信號發生器為例(2)讀取讀取ROM中的數據中的數據:在編輯窗口中先選中窗口左上角:在編輯窗口中先選中窗口左上角的的ID名名ROM8,再單擊上排的一個向上的小箭頭按鈕,再單擊上排的一個向上的小箭頭按鈕(或(或使
55、使用在系統存儲單元編輯用在系統存儲單元編輯窗口中的菜單窗口中的菜單ProcessingRead Data from In-System Memory),下方出現通過),下方出現通過JTAG口從口從FPGA內內部部ROM中讀出的波形數據。中讀出的波形數據。通過通過JTAG口從口從FPGA內部內部ROM中讀出來中讀出來的波形數據,應該與加載進去的的波形數據,應該與加載進去的正弦波數正弦波數據初始化文件據初始化文件DATA7X8.mif一致。一致。 E D A技術與應用以以7.4節的簡易正弦信號發生器為例節的簡易正弦信號發生器為例(3)寫數據寫數據:在圖形編輯窗口中,編輯波形數據,再:在圖形編輯窗口
56、中,編輯波形數據,再選中窗選中窗口左上角的口左上角的ID名名ROM8,單擊上排的一個向下的小箭頭按鈕,單擊上排的一個向下的小箭頭按鈕(或使用在系統存儲單元編輯或使用在系統存儲單元編輯窗口中的菜單窗口中的菜單Processing Write Data to In-System Memory),將編輯后所有的數據通),將編輯后所有的數據通過過JTAG口下載于口下載于FPGA中的中的LPM_ROM中,可從示波器和中,可從示波器和SignalTap II上同步觀察到波形的變化。上同步觀察到波形的變化。SignalTap II采樣波形采樣波形 E D A技術與應用以以7.4節的簡易正弦信號發生器為例節的
57、簡易正弦信號發生器為例(4)輸入輸出數據文件輸入輸出數據文件:使用:使用在系統存儲單元編輯在系統存儲單元編輯窗口中的窗口中的菜單菜單EditExport Data to File或或EditImport Data from File,將在系統讀出的數據以將在系統讀出的數據以.mif或或.hex的格式文件存入計算機中,的格式文件存入計算機中,或將此類格式的文件再系統地下載到或將此類格式的文件再系統地下載到FPGA中去。中去。 E D A技術與應用7.6 LPM嵌入式鎖相環調用嵌入式鎖相環調用 嵌入式模擬鎖相環嵌入式模擬鎖相環:可與一輸入的時鐘信號同步,:可與一輸入的時鐘信號同步,并以其作為參考信
58、號實現鎖相,從而輸出一至多個并以其作為參考信號實現鎖相,從而輸出一至多個同步倍頻或分頻的片內時鐘,以供邏輯系統應用。同步倍頻或分頻的片內時鐘,以供邏輯系統應用。 優點優點:與直接來自外部的時鐘相比,這種鎖相環片:與直接來自外部的時鐘相比,這種鎖相環片內時鐘可減少時鐘延時和時鐘變形,減少片外干擾;內時鐘可減少時鐘延時和時鐘變形,減少片外干擾;還可改善時鐘的建立時間和保持時間,是系統穩定還可改善時鐘的建立時間和保持時間,是系統穩定高速工作的保證。高速工作的保證。 能輸出含小數的能輸出含小數的精確頻率精確頻率,能提供,能提供任意相移任意相移和和輸出輸出信號占空比信號占空比。 E D A技術與應用建立
59、片內鎖相環建立片內鎖相環PLL模塊的步驟:模塊的步驟:(1)定制一個新模塊定制一個新模塊:在原理圖編輯窗右鍵單擊,選擇:在原理圖編輯窗右鍵單擊,選擇InsertSymbol,進入元件調用對話框,單擊,進入元件調用對話框,單擊MegaWizard Plug-In Manager按鈕。在彈出的窗口中選擇按鈕。在彈出的窗口中選擇Create a new custom選項,定制一個新模塊。選項,定制一個新模塊。以以7.4節的簡易正弦信號發生器為例,在頂層設計中加入鎖相環節的簡易正弦信號發生器為例,在頂層設計中加入鎖相環 E D A技術與應用建立片內鎖相環建立片內鎖相環PLL模塊的步驟:模塊的步驟:(1
60、)定制一個新模塊定制一個新模塊:在左欄選擇在左欄選擇I/O項下的項下的ALTPLL,再選,再選擇擇Cyclone III器件和器件和Verilog語言,輸入設計文件存放的路徑語言,輸入設計文件存放的路徑和文件名。和文件名。以以7.4節的簡易正弦信號發生器為例,在頂層設計中加入鎖相環節的簡易正弦信號發生器為例,在頂層設計中加入鎖相環 E D A技術與應用建立片內鎖相環建立片內鎖相環PLL模塊的步驟:模塊的步驟:(2)設置輸入時鐘頻率設置輸入時鐘頻率:單擊單擊Next, inclk0為為20MHz(55F+開發板上配置了此晶振),有兩個獨立的專用時鐘輸入腳分開發板上配置了此晶振),有兩個獨立的專用時鐘輸入腳分別是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農藝師考試公共基礎知識試題及答案
- 微生物技術在農業中的應用試題及答案
- 煤氣化技術的能源消費模式轉型策略考核試卷
- 2025年危險化學品安全-氯化工藝作業模擬考試題及答案
- 2023年中國鐵路信息科技集團有限公司招聘應屆高校畢業生【33人】筆試參考題庫附帶答案詳解
- 微生物檢驗中的數據管理方法試題及答案
- 資產配置策略相關考題及答案
- 項目進度推進中的優先級管理試題及答案
- 2023年中國聯通內蒙古分公司夏季校園招聘筆試參考題庫附帶答案詳解
- 空調器質量檢測方法與設備考核試卷
- 《囊螢夜讀》評課稿
- DB32T4220-2022消防設施物聯網系統技術規范-(高清版)
- 兒童抑郁量表CDI
- 生物化學-脂類課件
- Q∕SY 02098-2018 施工作業用野營房
- DB62∕T 3176-2019 建筑節能與結構一體化墻體保溫系統應用技術規程
- 吉林省礦產資源概況及分布
- 公司員工基本禮儀培訓ppt完整版課件
- 八大特殊危險作業危險告知牌
- 半橋LLC諧振變換器設計與仿真
- 啟閉機及閘門安裝后檢驗說明
評論
0/150
提交評論