版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 E D A技術(shù)與應(yīng)用第第7章章 LPMLPM宏模塊的應(yīng)用宏模塊的應(yīng)用 E D A技術(shù)與應(yīng)用LPM是是Library of Parameterized Modules(參(參數(shù)可設(shè)置模塊庫(kù))的縮寫(xiě)。在許多設(shè)計(jì)中,必?cái)?shù)可設(shè)置模塊庫(kù))的縮寫(xiě)。在許多設(shè)計(jì)中,必須利用這些宏模塊才可以使用一些須利用這些宏模塊才可以使用一些Altera器件器件中特定模塊的硬件功能,比如片上存儲(chǔ)器、中特定模塊的硬件功能,比如片上存儲(chǔ)器、DSP模塊、模塊、LVDS驅(qū)動(dòng)器、嵌入式鎖相環(huán)驅(qū)動(dòng)器、嵌入式鎖相環(huán)PLL模模塊等。塊等。 E D A技術(shù)與應(yīng)用7.1 計(jì)數(shù)器計(jì)數(shù)器LPM宏宏模塊模塊調(diào)用調(diào)用7.1.1 計(jì)數(shù)器計(jì)數(shù)器LPM模塊
2、文本代碼的調(diào)用模塊文本代碼的調(diào)用(1)打開(kāi)打開(kāi)LPM宏功能塊調(diào)用管理器宏功能塊調(diào)用管理器:新建一個(gè)文件夾(如:新建一個(gè)文件夾(如d:LPM_MD),選擇),選擇ToolsMegaWizard Plug-In Manager,選中選中Create a new custom megafunction variation單選按鈕單選按鈕(定制一個(gè)新模塊),或選中(定制一個(gè)新模塊),或選中Edit an existing custom megafunction variation(修改一個(gè)已編輯好的(修改一個(gè)已編輯好的LPM模塊)。模塊)。 E D A技術(shù)與應(yīng)用7.1 計(jì)數(shù)器計(jì)數(shù)器LPM宏宏模塊模塊調(diào)
3、用調(diào)用7.1.1 計(jì)數(shù)器計(jì)數(shù)器LPM模塊文本代碼的調(diào)用模塊文本代碼的調(diào)用(1)打開(kāi)打開(kāi)LPM宏功能塊調(diào)用管理器宏功能塊調(diào)用管理器:?jiǎn)螕簦簡(jiǎn)螕鬘ext,左欄中有各,左欄中有各類功能的類功能的LPM模塊選項(xiàng)目錄。單擊算術(shù)項(xiàng)模塊選項(xiàng)目錄。單擊算術(shù)項(xiàng)Arithmetic,選擇,選擇LPM_COUNTER。在右上角選擇。在右上角選擇Cyclone III器件系列和器件系列和Verilog HDL語(yǔ)言方式。鍵入模塊文件存放路徑和文件名。語(yǔ)言方式。鍵入模塊文件存放路徑和文件名。 E D A技術(shù)與應(yīng)用7.1 計(jì)數(shù)器計(jì)數(shù)器LPM宏宏模塊模塊調(diào)用調(diào)用7.1.1 計(jì)數(shù)器計(jì)數(shù)器LPM模塊文本代碼的調(diào)用模塊文本代碼的調(diào)
4、用(2)設(shè)置設(shè)置4位可加減計(jì)數(shù)器位可加減計(jì)數(shù)器:?jiǎn)螕簦簡(jiǎn)螕鬘ext,選擇,選擇4位計(jì)數(shù)器,再位計(jì)數(shù)器,再選擇選擇Create an updown input port to allow me to do both,使,使計(jì)數(shù)器有加減控制功能。計(jì)數(shù)器有加減控制功能。 E D A技術(shù)與應(yīng)用7.1 計(jì)數(shù)器計(jì)數(shù)器LPM宏宏模塊模塊調(diào)用調(diào)用7.1.1 計(jì)數(shù)器計(jì)數(shù)器LPM模塊文本代碼的調(diào)用模塊文本代碼的調(diào)用(3)設(shè)定計(jì)數(shù)器,含時(shí)鐘使能和進(jìn)位輸出設(shè)定計(jì)數(shù)器,含時(shí)鐘使能和進(jìn)位輸出:?jiǎn)螕簦簡(jiǎn)螕鬘ext,選中,選中Modulus,并選擇,并選擇12,表示模,表示模12計(jì)數(shù)器(若選擇計(jì)數(shù)器(若選擇Plain bin
5、ary表示普通二進(jìn)制計(jì)數(shù)器),選擇時(shí)鐘使能控制表示普通二進(jìn)制計(jì)數(shù)器),選擇時(shí)鐘使能控制Clock Enable和和進(jìn)位輸出進(jìn)位輸出Carry-out。 E D A技術(shù)與應(yīng)用7.1 計(jì)數(shù)器計(jì)數(shù)器LPM宏宏模塊模塊調(diào)用調(diào)用7.1.1 計(jì)數(shù)器計(jì)數(shù)器LPM模塊文本代碼的調(diào)用模塊文本代碼的調(diào)用(4)加入加入4位并行數(shù)據(jù)預(yù)置功能位并行數(shù)據(jù)預(yù)置功能:?jiǎn)螕簦簡(jiǎn)螕鬘ext,選擇,選擇4位數(shù)據(jù)位數(shù)據(jù)同同步步加載控制加載控制Load和異步和異步清清0控制控制Clear。再單擊。再單擊Next結(jié)束設(shè)置。結(jié)束設(shè)置。生成生成LPM計(jì)數(shù)器的計(jì)數(shù)器的Verilog文件文件CNT4B.v,可被高一層次的,可被高一層次的Veri
6、log程序作為計(jì)數(shù)器元件調(diào)用。程序作為計(jì)數(shù)器元件調(diào)用。 E D A技術(shù)與應(yīng)用7.1.2 LPM計(jì)數(shù)器代碼與參數(shù)傳遞語(yǔ)句計(jì)數(shù)器代碼與參數(shù)傳遞語(yǔ)句 例例7-1:LPM計(jì)數(shù)器代碼計(jì)數(shù)器代碼 module CNT4B (aclr, clk_en, clock, data, sload, updown, cout, q); input aclr, clk_en; /異步清異步清0,1清清0;時(shí)鐘使能;時(shí)鐘使能,1使能使能,0禁止禁止 input clock, sload; /時(shí)鐘輸入;同步預(yù)置數(shù)加載控制時(shí)鐘輸入;同步預(yù)置數(shù)加載控制,1加載加載,0禁止禁止 input 3: 0 data; input u
7、pdown;/4位預(yù)置數(shù)和加減控制位預(yù)置數(shù)和加減控制,1加加,0減減 output cout; output 3: 0 q;/進(jìn)位輸出和進(jìn)位輸出和4位計(jì)數(shù)輸出位計(jì)數(shù)輸出 wire sub_wire0; wire 3: 0 sub_wire1;/定義內(nèi)部連線定義內(nèi)部連線 wire cout=sub_wire0; wire 3: 0 q=sub_wire1 3: 0; /注意例化語(yǔ)句中未用端口必須接上指定電平注意例化語(yǔ)句中未用端口必須接上指定電平 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”,/單方向計(jì)數(shù)參數(shù)未用單方向計(jì)數(shù)參數(shù)未用 lpm_counter_component.lpm_modulus=12,/模模12計(jì)數(shù)器計(jì)數(shù)器 lpm_counter_co
9、mponent.lpm_port_updown=“PORT_USED”,/使用加減計(jì)數(shù)使用加減計(jì)數(shù) lpm_counter_component.lpm_type=“LPM_COUNTER”,/計(jì)數(shù)器類型計(jì)數(shù)器類型 lpm_counter_component.lpm_width=4;/計(jì)數(shù)位寬計(jì)數(shù)位寬endmodule E D A技術(shù)與應(yīng)用 例化語(yǔ)句中,例化語(yǔ)句中,未設(shè)定的端口必須接上特定的電平未設(shè)定的端口必須接上特定的電平。 計(jì)數(shù)器模塊計(jì)數(shù)器模塊lpm_counter是一個(gè)可設(shè)定參數(shù)的封閉模塊,只是一個(gè)可設(shè)定參數(shù)的封閉模塊,只能通過(guò)參數(shù)傳遞說(shuō)明語(yǔ)句能通過(guò)參數(shù)傳遞說(shuō)明語(yǔ)句defparam將用戶設(shè)
10、定的參數(shù)通過(guò)將用戶設(shè)定的參數(shù)通過(guò)文件文件CNT4B.v傳遞進(jìn)傳遞進(jìn)lpm_counter中。中。defparam .= 是例化語(yǔ)句中為被調(diào)用元件取的例化是例化語(yǔ)句中為被調(diào)用元件取的例化名。名。 是被調(diào)用元件的設(shè)計(jì)文件中已定義參數(shù)名。是被調(diào)用元件的設(shè)計(jì)文件中已定義參數(shù)名。 可以是整數(shù)、操作表達(dá)式、字符串或在當(dāng)前模塊可以是整數(shù)、操作表達(dá)式、字符串或在當(dāng)前模塊中已定義的參數(shù)。中已定義的參數(shù)。 defparam語(yǔ)句只能將參數(shù)傳遞到比當(dāng)前層次僅低一層的元語(yǔ)句只能將參數(shù)傳遞到比當(dāng)前層次僅低一層的元件文件中,即當(dāng)前的例化文件中,不能更深入進(jìn)去。件文件中,即當(dāng)前的例化文件中,不能更深入進(jìn)去。 E D A技術(shù)與
11、應(yīng)用 例例7-2:24位寄存器(位寄存器(defparam語(yǔ)句應(yīng)用示例)語(yǔ)句應(yīng)用示例) 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是可參數(shù)設(shè)置的是可參數(shù)設(shè)置的LPM寄存器模塊。寄存器模塊。 例例
12、7-3: LPM計(jì)數(shù)器頂層設(shè)計(jì)計(jì)數(shù)器頂層設(shè)計(jì) 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技術(shù)與應(yīng)用7.1.3 創(chuàng)建工程與仿真測(cè)
13、試創(chuàng)建工程與仿真測(cè)試CNT4BIT仿真波形仿真波形CNT4B原理原理圖輸入設(shè)計(jì)圖輸入設(shè)計(jì)SLD是同步信號(hào),是同步信號(hào),SLD=1但但CLK無(wú)上升沿,無(wú)上升沿,所以沒(méi)有進(jìn)行加載所以沒(méi)有進(jìn)行加載可利用可利用LPM計(jì)數(shù)器宏模塊的原理圖文件計(jì)數(shù)器宏模塊的原理圖文件CNT4B.bsf,通過(guò)在原理圖工程中調(diào)用此元件來(lái)測(cè)試它通過(guò)在原理圖工程中調(diào)用此元件來(lái)測(cè)試它 E D A技術(shù)與應(yīng)用7.2 利用屬性控制乘法器的構(gòu)建利用屬性控制乘法器的構(gòu)建如果按照如果按照Verilog通常的表述方式,綜合出的乘法器一定會(huì)占通常的表述方式,綜合出的乘法器一定會(huì)占用大量的邏輯資源,且運(yùn)行速度不一定快。在用大量的邏輯資源,且運(yùn)行速度
14、不一定快。在FPGA開(kāi)發(fā)中,開(kāi)發(fā)中,最常用的方法是直接調(diào)用最常用的方法是直接調(diào)用FPGA內(nèi)部已嵌入的內(nèi)部已嵌入的硬件乘法器硬件乘法器(DSP模塊)模塊)。 例例7-4:8位普通乘法器(乘法操作符)位普通乘法器(乘法操作符) module MULT8 (A1, B1, A2, B2, R1, R2); output signed 15: 0 R1, R2; /定義有符號(hào)數(shù)據(jù)類型輸出定義有符號(hào)數(shù)據(jù)類型輸出 input signed 7: 0 A1, B1, A2, B2; /定義有符號(hào)數(shù)據(jù)類型輸入定義有符號(hào)數(shù)據(jù)類型輸入 wire 15: 0 R2 /*synthesis multstyle=“l(fā)o
15、gic”*/; wire 15: 0 R1/*synthesis multstyle=“dsp”*/; assign R1=A1*B1; assign R2=A2*B2;endmodule E D A技術(shù)與應(yīng)用 wire 15: 0 R2 /* synthesis multstyle=“l(fā)ogic” */; 指示綜合器將以指示綜合器將以R2為輸出口的乘法器以為輸出口的乘法器以純組合邏輯純組合邏輯方式的方式的宏單元構(gòu)建,宏單元構(gòu)建,logic是屬性關(guān)鍵詞。是屬性關(guān)鍵詞。 wire 15: 0 R1 /* synthesis multstyle=“dsp” */; 指示綜合器將以指示綜合器將以R1
16、為輸出口的乘法器調(diào)用為輸出口的乘法器調(diào)用FPGA的的嵌入式嵌入式乘法器乘法器來(lái)構(gòu)建乘法器,來(lái)構(gòu)建乘法器, dsp是是屬性關(guān)鍵詞屬性關(guān)鍵詞。module andd(A1, B2, A2, B2, R1, R2) /* synthesis multstyle=“dsp” */; 指示綜合器將指示綜合器將整個(gè)模塊整個(gè)模塊內(nèi)的乘法器構(gòu)建方式都用內(nèi)的乘法器構(gòu)建方式都用DSP模塊。模塊。 E D A技術(shù)與應(yīng)用 如果如例如果如例7-4采用純組合邏輯方式構(gòu)建一個(gè)乘法器,用采用純組合邏輯方式構(gòu)建一個(gè)乘法器,用DSP模塊構(gòu)建另一個(gè)乘法器,則編譯可以看出,使用了模塊構(gòu)建另一個(gè)乘法器,則編譯可以看出,使用了1個(gè)嵌入個(gè)
17、嵌入式式9位位DSP模塊和模塊和95個(gè)邏輯宏單元。個(gè)邏輯宏單元。 如果將整個(gè)模塊都用如果將整個(gè)模塊都用DSP模塊構(gòu)建。則編譯后可以看出,模塊構(gòu)建。則編譯后可以看出,使用了使用了2個(gè)個(gè)DSP模塊和模塊和0個(gè)邏輯宏單元。個(gè)邏輯宏單元。采用采用DSP模塊構(gòu)建所設(shè)計(jì)的電路,更加高速且節(jié)省邏輯資源。模塊構(gòu)建所設(shè)計(jì)的電路,更加高速且節(jié)省邏輯資源。 E D A技術(shù)與應(yīng)用通過(guò)通過(guò)Quartus II設(shè)置設(shè)置DSP模塊構(gòu)建模塊構(gòu)建:AssignmentsSetting,在,在左欄選擇左欄選擇Analysis&Synthesis Settings項(xiàng),在對(duì)話框中按項(xiàng),在對(duì)話框中按More Settings按
18、鈕,在彈出的對(duì)話框中選擇按鈕,在彈出的對(duì)話框中選擇DSP Block Balancing項(xiàng)項(xiàng)的的DSP blocks。 E D A技術(shù)與應(yīng)用7.3 LMP_RAM宏模塊的設(shè)置與使用宏模塊的設(shè)置與使用在涉及在涉及RAM和和ROM等存儲(chǔ)器應(yīng)用的設(shè)計(jì)開(kāi)發(fā)中,調(diào)用等存儲(chǔ)器應(yīng)用的設(shè)計(jì)開(kāi)發(fā)中,調(diào)用LPM模塊類存儲(chǔ)器是最方便、最經(jīng)濟(jì)高效和性能最容易滿足設(shè)計(jì)模塊類存儲(chǔ)器是最方便、最經(jīng)濟(jì)高效和性能最容易滿足設(shè)計(jì)要求的途徑。要求的途徑。7.3.1 初始化文件及其生成初始化文件及其生成 初始化文件初始化文件是可配置于是可配置于LPM_RAM或或LPM_ROM中的數(shù)據(jù)中的數(shù)據(jù)或程序代碼?;虺绦虼a。 初始化文件的格式
19、必須滿足一定的要求初始化文件的格式必須滿足一定的要求。.mif格式和格式和.hex格格式是式是Quartus II能直接調(diào)用的兩種初始化文件的格式,能直接調(diào)用的兩種初始化文件的格式,.dat格式文件可通過(guò)格式文件可通過(guò)Verilog語(yǔ)言直接調(diào)用。語(yǔ)言直接調(diào)用。 E D A技術(shù)與應(yīng)用(1)直接編譯法直接編譯法: 在在Quartus II中選擇中選擇FileNew,選擇,選擇Memory File欄的欄的Memory Initialization File項(xiàng),單擊項(xiàng),單擊OK,產(chǎn)生,產(chǎn)生.mif數(shù)據(jù)文件大數(shù)據(jù)文件大小選擇窗口。根據(jù)存儲(chǔ)器的地址和數(shù)據(jù)寬度選擇參數(shù)(如果小選擇窗口。根據(jù)存儲(chǔ)器的地址和數(shù)
20、據(jù)寬度選擇參數(shù)(如果地址線寬為地址線寬為7位,選位,選Number為為128;數(shù)據(jù)線寬為;數(shù)據(jù)線寬為8位,選擇位,選擇Word size為為8位)。單擊位)。單擊OK,出現(xiàn),出現(xiàn)mif數(shù)據(jù)表格。數(shù)據(jù)表格。1. .mif格式文件格式文件 E D A技術(shù)與應(yīng)用(1)直接編譯法直接編譯法: 可可在在mif數(shù)據(jù)表格中鍵入數(shù)據(jù)。數(shù)據(jù)表格中鍵入數(shù)據(jù)。表格表格中的中的數(shù)據(jù)格式數(shù)據(jù)格式可通過(guò)右擊可通過(guò)右擊窗口邊緣的地址數(shù)據(jù)所彈出的窗口邊緣的地址數(shù)據(jù)所彈出的窗口中選擇。窗口中選擇。 表中任一數(shù)據(jù)對(duì)應(yīng)的地址為左表中任一數(shù)據(jù)對(duì)應(yīng)的地址為左列數(shù)與頂行數(shù)之和。列數(shù)與頂行數(shù)之和。 完成完成數(shù)據(jù)輸入后,選擇數(shù)據(jù)輸入后,選擇
21、FileSave As,保存此數(shù)據(jù)文,保存此數(shù)據(jù)文件,如取名為件,如取名為data7X8.mif。1. .mif格式文件格式文件 E D A技術(shù)與應(yīng)用(2)文件直接編輯法文件直接編輯法:使用使用Quartus II以外的編輯器設(shè)計(jì)以外的編輯器設(shè)計(jì).mif文件文件 例例7-5:編輯器設(shè)計(jì):編輯器設(shè)計(jì).mif文件文件 DEPTH=128;:數(shù)據(jù)深度,即存儲(chǔ)的數(shù)據(jù)個(gè)數(shù):數(shù)據(jù)深度,即存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)WIDTH=8;:輸出數(shù)據(jù)寬度:輸出數(shù)據(jù)寬度ADDRESS_RADIX=HEX;:地址數(shù)據(jù)類型,:地址數(shù)據(jù)類型,HEX表示選擇十六進(jìn)制表示選擇十六進(jìn)制 數(shù)據(jù)類型數(shù)據(jù)類型DATA_RADIX=HEX;:存儲(chǔ):存
22、儲(chǔ)數(shù)據(jù)類型,數(shù)據(jù)類型,HEX表示選擇十六進(jìn)制表示選擇十六進(jìn)制數(shù)據(jù)數(shù)據(jù) 類型類型CONTENT:此為關(guān)鍵詞:此為關(guān)鍵詞BEGIN:此為關(guān)鍵詞:此為關(guān)鍵詞0000 : 0080;0001 : 0086;0002 : 008C;(數(shù)據(jù)略去)(數(shù)據(jù)略去)007E : 0073;007F : 0079;END; E D A技術(shù)與應(yīng)用(3)高級(jí)語(yǔ)言生成高級(jí)語(yǔ)言生成:.mif也可用也可用C或或Matlab等高級(jí)語(yǔ)言或工具生成。等高級(jí)語(yǔ)言或工具生成。(4)專用專用.mif文件生成器文件生成器: 用用.mif文件生成器來(lái)生成不同波形、不同數(shù)據(jù)格式、不文件生成器來(lái)生成不同波形、不同數(shù)據(jù)格式、不同符號(hào)、不同相位的同
23、符號(hào)、不同相位的.mif文件。文件。某某ROM的數(shù)據(jù)線寬為的數(shù)據(jù)線寬為8位,地址線寬為位,地址線寬為7位位(可放置(可放置128個(gè)個(gè)8位數(shù)位數(shù)據(jù)),或者說(shuō)一個(gè)周期據(jù)),或者說(shuō)一個(gè)周期分為分為128個(gè)點(diǎn),每個(gè)點(diǎn)個(gè)點(diǎn),每個(gè)點(diǎn)精度為精度為8位二進(jìn)制數(shù),位二進(jìn)制數(shù),初相位為初相位為0的正弦波信的正弦波信號(hào)波形數(shù)據(jù)號(hào)波形數(shù)據(jù) E D A技術(shù)與應(yīng)用(1)FileNew,選擇,選擇Memory File欄欄的的Hexadecimal (Intel-Format) File項(xiàng)項(xiàng),單擊,單擊OK 。根據(jù)存儲(chǔ)器的地址和數(shù)據(jù)寬度選擇。根據(jù)存儲(chǔ)器的地址和數(shù)據(jù)寬度選擇參數(shù)。在參數(shù)。在hex數(shù)據(jù)數(shù)據(jù)表格中鍵入表格中鍵入數(shù)
24、據(jù)數(shù)據(jù),最后存盤為最后存盤為.hex格式文件。格式文件。2. .hex格式文件格式文件(2)用諸如單片機(jī)編譯器來(lái)產(chǎn)生,方式是利用匯編程序編)用諸如單片機(jī)編譯器來(lái)產(chǎn)生,方式是利用匯編程序編輯器將數(shù)據(jù)編輯于匯編程序中,用匯編編譯器生成輯器將數(shù)據(jù)編輯于匯編程序中,用匯編編譯器生成.hex格式格式文件。文件。 E D A技術(shù)與應(yīng)用.dat格式的數(shù)據(jù)文件最具有一般性,前兩種文件格式必須使用格式的數(shù)據(jù)文件最具有一般性,前兩種文件格式必須使用Quartus II規(guī)定的屬性表述,而規(guī)定的屬性表述,而.dat格式的數(shù)據(jù)文件的調(diào)用可格式的數(shù)據(jù)文件的調(diào)用可用標(biāo)準(zhǔn)用標(biāo)準(zhǔn)Verilog語(yǔ)句直接實(shí)現(xiàn)。語(yǔ)句直接實(shí)現(xiàn)。3.
25、.dat格式文件格式文件 00 E5 6D 34 E D A技術(shù)與應(yīng)用7.3.2 以原理圖方式對(duì)以原理圖方式對(duì)LPM_RAM進(jìn)行進(jìn)行設(shè)置和調(diào)用設(shè)置和調(diào)用 首先打開(kāi)一個(gè)原理圖編輯窗,再存盤,假設(shè)文件取名為首先打開(kāi)一個(gè)原理圖編輯窗,再存盤,假設(shè)文件取名為RAMMD,并將其創(chuàng)建成工程。在此工程的原理圖編輯窗,并將其創(chuàng)建成工程。在此工程的原理圖編輯窗,單擊左下的單擊左下的MegaWizard Plug-In Manager管理器按鈕,進(jìn)管理器按鈕,進(jìn)入入LPM模塊編輯調(diào)用窗。在左欄選擇模塊編輯調(diào)用窗。在左欄選擇Memory Compiler項(xiàng)項(xiàng)下的單口下的單口RAM模塊模塊“RAM:1-PORT”,文
26、件取名為,文件取名為RAM1P.v。 E D A技術(shù)與應(yīng)用7.3.2 以原理圖方式對(duì)以原理圖方式對(duì)LPM_RAM進(jìn)行進(jìn)行設(shè)置和調(diào)用設(shè)置和調(diào)用 單擊單擊Next,選擇數(shù)據(jù)位,選擇數(shù)據(jù)位8和數(shù)據(jù)深度和數(shù)據(jù)深度128,對(duì)應(yīng),對(duì)應(yīng)CycloneIII,存儲(chǔ)器構(gòu)建方式選擇存儲(chǔ)器構(gòu)建方式選擇M9K,再選擇雙時(shí)鐘方式。,再選擇雙時(shí)鐘方式。 E D A技術(shù)與應(yīng)用7.3.2 以原理圖方式對(duì)以原理圖方式對(duì)LPM_RAM進(jìn)行進(jìn)行設(shè)置和調(diào)用設(shè)置和調(diào)用 單擊單擊Next,去掉選項(xiàng),去掉選項(xiàng)“q output port”前的鉤,即選擇時(shí)前的鉤,即選擇時(shí)鐘只控制鎖存輸入信號(hào)。鐘只控制鎖存輸入信號(hào)。 單擊單擊Next,出現(xiàn)三
27、個(gè)選項(xiàng),當(dāng)允許寫(xiě)入時(shí),讀出的數(shù)據(jù)是,出現(xiàn)三個(gè)選項(xiàng),當(dāng)允許寫(xiě)入時(shí),讀出的數(shù)據(jù)是新寫(xiě)入的數(shù)據(jù)(新寫(xiě)入的數(shù)據(jù)(New Data),還是寫(xiě)入前的數(shù)據(jù)(),還是寫(xiě)入前的數(shù)據(jù)(Old Data),還是無(wú)所謂(),還是無(wú)所謂(Dont Care)。這里選)。這里選Old Data。 E D A技術(shù)與應(yīng)用7.3.2 以原理圖方式對(duì)以原理圖方式對(duì)LPM_RAM進(jìn)行進(jìn)行設(shè)置和調(diào)用設(shè)置和調(diào)用 單擊單擊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”復(fù)選框,并在復(fù)選框,并在The instance ID of this RAM is文本框中輸入文本框中輸入某某4字文字,如字文字,如“MYRM”作為此作為此RAM的的ID名稱。單擊名稱。單擊Finish完成完成RAM定制。定制。 E D A技術(shù)與應(yīng)用7.3.2 以原理圖方式對(duì)以原理圖方式對(duì)LPM_RAM進(jìn)行進(jìn)行設(shè)置和調(diào)用設(shè)置和調(diào)用 調(diào)入頂層原理圖后,連接好端口引腳。調(diào)入頂層原理圖后,連接好端口引腳。 E D
29、 A技術(shù)與應(yīng)用7.3.3 測(cè)試測(cè)試LPM_RAM對(duì)對(duì)RAM模塊進(jìn)行測(cè)試,了解其信號(hào)線的功能和加載于其中的模塊進(jìn)行測(cè)試,了解其信號(hào)線的功能和加載于其中的初始化文件數(shù)據(jù)是否成功。初始化文件數(shù)據(jù)是否成功。地址地址A從從0開(kāi)始開(kāi)始RAM的仿真波形的仿真波形WREN=0,讀,讀RAM中數(shù)據(jù)中數(shù)據(jù)WREN=1,D中數(shù)據(jù)被寫(xiě)入中數(shù)據(jù)被寫(xiě)入RAM,同時(shí)讀,同時(shí)讀出的數(shù)據(jù)仍然是寫(xiě)入前的數(shù)據(jù)(出的數(shù)據(jù)仍然是寫(xiě)入前的數(shù)據(jù)(Old Data)WREN再次為再次為0時(shí),時(shí),隨著寫(xiě)入時(shí)的地址隨著寫(xiě)入時(shí)的地址信號(hào)和時(shí)鐘上升沿,信號(hào)和時(shí)鐘上升沿,讀出寫(xiě)入的數(shù)據(jù)。讀出寫(xiě)入的數(shù)據(jù)。 E D A技術(shù)與應(yīng)用7.3.4 存儲(chǔ)器的存儲(chǔ)器
30、的Verilog代碼描述代碼描述 例例7-6:RAM模塊的純模塊的純Verilog描述描述 module RAM78 (output wire 7: 0 Q, /定義定義RAM的的8為數(shù)據(jù)輸出端口為數(shù)據(jù)輸出端口 input wire 7: 0 D, /定義定義RAM的的8位數(shù)據(jù)輸入端口位數(shù)據(jù)輸入端口 input wire 6: 0 A, /定義定義RAM的的7位地址輸入端口位地址輸入端口 input wire CLK, WREN); /定義時(shí)鐘和寫(xiě)允許控制定義時(shí)鐘和寫(xiě)允許控制 reg 7: 0 mem 127: 0 /* synthesis ram_init_file=“DATA7X8.mif
31、” */; always (posedge CLK)if (WREN) mem A = D; /在在CLK上升沿將數(shù)據(jù)口上升沿將數(shù)據(jù)口D的數(shù)據(jù)的數(shù)據(jù) 鎖入地址對(duì)應(yīng)單元中鎖入地址對(duì)應(yīng)單元中assign Q = mem A; /同時(shí),地址對(duì)應(yīng)單元的數(shù)據(jù)被輸同時(shí),地址對(duì)應(yīng)單元的數(shù)據(jù)被輸 出至端口出至端口endmodule E D A技術(shù)與應(yīng)用module RAM78 (output wire 7: 0 Q, input wire 7: 0 D, input wire 6:0 A, input wire CLK, WREN);等價(jià)于等價(jià)于module RAM78 (output 7: 0 Q, inp
32、ut 7: 0 D, input 6:0 A, input CLK, WREN);1. 存儲(chǔ)器端口描述存儲(chǔ)器端口描述 E D A技術(shù)與應(yīng)用2. 存儲(chǔ)器的存儲(chǔ)器的Verilog一般描述一般描述 reg 7: 0 mem 127: 0 定義了一個(gè)二維矢量變量,包含定義了一個(gè)二維矢量變量,包含1024個(gè)標(biāo)量元素,每一元個(gè)標(biāo)量元素,每一元素代表一個(gè)邏輯位。換句話說(shuō),定義了一個(gè)包含素代表一個(gè)邏輯位。換句話說(shuō),定義了一個(gè)包含128個(gè)存儲(chǔ)個(gè)存儲(chǔ)單元,每個(gè)單元為單元,每個(gè)單元為8位的存儲(chǔ)器位的存儲(chǔ)器mem。 此存儲(chǔ)器由此存儲(chǔ)器由128個(gè)個(gè)8位寄存器構(gòu)成的陣列來(lái)構(gòu)建,至少包含位寄存器構(gòu)成的陣列來(lái)構(gòu)建,至少包含1
33、024個(gè)觸發(fā)器。個(gè)觸發(fā)器。 用用Verilog定義存儲(chǔ)器時(shí),需定義存儲(chǔ)器容量和字長(zhǎng)。定義存儲(chǔ)器時(shí),需定義存儲(chǔ)器容量和字長(zhǎng)。容量容量表示存儲(chǔ)器存儲(chǔ)單元的數(shù)量或存儲(chǔ)深度(如表示存儲(chǔ)器存儲(chǔ)單元的數(shù)量或存儲(chǔ)深度(如128個(gè)),個(gè)),字長(zhǎng)字長(zhǎng)是每個(gè)存儲(chǔ)單元的數(shù)據(jù)寬度(如是每個(gè)存儲(chǔ)單元的數(shù)據(jù)寬度(如8)。)。 E D A技術(shù)與應(yīng)用2. 存儲(chǔ)器的存儲(chǔ)器的Verilog一般描述一般描述 例:例:parameter width=8, msize=1024;reg width-1: 0 MEM87 msize-1: 0; 用用parameter參數(shù)定義存儲(chǔ)器的容量大小,可十分容易地修參數(shù)定義存儲(chǔ)器的容量大小,可十
34、分容易地修改存儲(chǔ)器的尺寸。改存儲(chǔ)器的尺寸。 對(duì)存儲(chǔ)器賦值要求對(duì)存儲(chǔ)器賦值要求只能對(duì)存儲(chǔ)器的某一單元賦值只能對(duì)存儲(chǔ)器的某一單元賦值。 例:例:reg7: 0 mem87128: 0;mem8716=8b11001001; /mem87存儲(chǔ)器第存儲(chǔ)器第16單元被賦值為單元被賦值為 二進(jìn)制數(shù)二進(jìn)制數(shù)11001001mem87122=76; /mem87存儲(chǔ)器第存儲(chǔ)器第122單元被賦值為單元被賦值為 十進(jìn)制數(shù)十進(jìn)制數(shù)76 E D A技術(shù)與應(yīng)用2. 存儲(chǔ)器的存儲(chǔ)器的Verilog一般描述一般描述 例:例:reg15: 0 A; /定義了一個(gè)定義了一個(gè)16位的寄存器位的寄存器reg MEM15: 0; /
35、定義了定義了 一個(gè)字長(zhǎng)為一個(gè)字長(zhǎng)為1,即,即1位的,容量深度位的,容量深度 為為16的存儲(chǔ)器的存儲(chǔ)器 注意寄存器和存儲(chǔ)器定義上的區(qū)別。注意寄存器和存儲(chǔ)器定義上的區(qū)別。 盡管以上定義在實(shí)現(xiàn)的結(jié)構(gòu)上沒(méi)有區(qū)別,但在定義的含義和盡管以上定義在實(shí)現(xiàn)的結(jié)構(gòu)上沒(méi)有區(qū)別,但在定義的含義和賦值的語(yǔ)法上有區(qū)別。賦值的語(yǔ)法上有區(qū)別。不允許對(duì)存儲(chǔ)器多個(gè)或所有單元同時(shí)不允許對(duì)存儲(chǔ)器多個(gè)或所有單元同時(shí)賦值賦值。 例:例:A5 =1b0;/允許對(duì)寄存器允許對(duì)寄存器A的第的第5位賦值位賦值0MEM7=1b1;/允許對(duì)存儲(chǔ)器允許對(duì)存儲(chǔ)器MEM的第的第7個(gè)單元賦值個(gè)單元賦值1A=16hABCD;/允許對(duì)寄存器允許對(duì)寄存器A整體賦
36、值整體賦值MEM=16hABCD;/錯(cuò)誤!不允許對(duì)存儲(chǔ)器多個(gè)或所有單錯(cuò)誤!不允許對(duì)存儲(chǔ)器多個(gè)或所有單元同時(shí)賦值元同時(shí)賦值 E D A技術(shù)與應(yīng)用3. 存儲(chǔ)器中初始化文件的調(diào)用與配置存儲(chǔ)器中初始化文件的調(diào)用與配置在純代碼的在純代碼的Verilog程序中的存儲(chǔ)器中調(diào)用初始化文件。程序中的存儲(chǔ)器中調(diào)用初始化文件。 第一種方法:利用第一種方法:利用Quartus II給定的屬性語(yǔ)句給定的屬性語(yǔ)句,僅限于,僅限于Quartus II平臺(tái)中使用。平臺(tái)中使用。reg7: 0 mem127: 0 /* synthesis ram_init_file=“DATA7X8.mif” */;(* synthesis r
37、am_init_file=“DATA7X8.mif” *) reg7: 0 mem127: 0; 第二種方法:利用第二種方法:利用過(guò)程語(yǔ)句過(guò)程語(yǔ)句initial和和系統(tǒng)函數(shù)系統(tǒng)函數(shù)$readmemh,采用的是標(biāo)準(zhǔn)的采用的是標(biāo)準(zhǔn)的Verilog語(yǔ)句,不局限于語(yǔ)句,不局限于Quartus II平臺(tái)。平臺(tái)。 initial $readmemh (“RAM78_DAT.dat”, mem); $readmemh()是存儲(chǔ)器初始化文件的系統(tǒng)函數(shù)。是存儲(chǔ)器初始化文件的系統(tǒng)函數(shù)?!啊薄啊崩ɡㄆ饋?lái)的起來(lái)的是待調(diào)用的初始化文件的文件名。是待調(diào)用的初始化文件的文件名。逗號(hào)旁的逗號(hào)旁的mem是存儲(chǔ)器名稱。是存儲(chǔ)器名
38、稱。 E D A技術(shù)與應(yīng)用 例例7-7:RAM模塊的純模塊的純Verilog描述描述(利用過(guò)程語(yǔ)句(利用過(guò)程語(yǔ)句initial和系統(tǒng)函數(shù)和系統(tǒng)函數(shù)$readmemh調(diào)用初始化文件)調(diào)用初始化文件) 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 使用的是過(guò)程語(yǔ)句使用的是過(guò)程語(yǔ)句initial和系統(tǒng)函數(shù)和系統(tǒng)函數(shù)$readmemh,因此初始,因此初始化數(shù)據(jù)文件的格式必須是化數(shù)據(jù)文件的格式必須是.dat文件。文件。 注意,綜合器只會(huì)以注意,綜合器只會(huì)以.dat文件中的數(shù)據(jù)排列順序?qū)?yīng)的形式文件中的數(shù)據(jù)排列順序?qū)?yīng)的形式加載到加載到mem0: 127存儲(chǔ)器在,而存儲(chǔ)器在,而.dat文件中的數(shù)據(jù)排列順文件中的數(shù)據(jù)排列順序默認(rèn)從低位地址開(kāi)始排列,因此這里序默認(rèn)從低位地址開(kāi)始排列,因此這里mem的表述格式是的表述格式是mem0: 127 E D A技術(shù)與應(yīng)用4. 語(yǔ)句語(yǔ)法說(shuō)明語(yǔ)句語(yǔ)法說(shuō)明initial begin 語(yǔ)句語(yǔ)句1;語(yǔ)句;語(yǔ)
40、句2; end initial過(guò)程語(yǔ)句。過(guò)程語(yǔ)句。 沒(méi)有敏感信號(hào)表沒(méi)有敏感信號(hào)表,不帶觸發(fā)條件不帶觸發(fā)條件,initial過(guò)程中的塊語(yǔ)句沿過(guò)程中的塊語(yǔ)句沿時(shí)間方向軸時(shí)間方向軸只執(zhí)行一次只執(zhí)行一次。 最最常用于仿真模塊中常用于仿真模塊中對(duì)激勵(lì)矢量的描述對(duì)激勵(lì)矢量的描述,或用于,或用于給寄存器變給寄存器變量賦初值量賦初值。而在實(shí)際電路中,賦初值是沒(méi)有意義的,因此這。而在實(shí)際電路中,賦初值是沒(méi)有意義的,因此這是是面向模擬仿真面向模擬仿真的過(guò)程語(yǔ)句,通常的過(guò)程語(yǔ)句,通常不能被綜合工具所接受不能被綜合工具所接受,或在或在綜合時(shí)被忽略綜合時(shí)被忽略,但卻可以,但卻可以對(duì)存儲(chǔ)器加載初始化文件對(duì)存儲(chǔ)器加載初始化
41、文件,這,這是是可綜合可綜合行為。行為。 E D A技術(shù)與應(yīng)用4. 語(yǔ)句語(yǔ)法說(shuō)明語(yǔ)句語(yǔ)法說(shuō)明initial $readmemh();/用于十六進(jìn)制數(shù)據(jù)文件的讀取用于十六進(jìn)制數(shù)據(jù)文件的讀取initial $readmemb();/用于二進(jìn)制數(shù)據(jù)文件的讀取用于二進(jìn)制數(shù)據(jù)文件的讀取 Verilog語(yǔ)言內(nèi)置了一些系統(tǒng)函數(shù),這些系統(tǒng)函數(shù)經(jīng)常與語(yǔ)言內(nèi)置了一些系統(tǒng)函數(shù),這些系統(tǒng)函數(shù)經(jīng)常與Verilog的預(yù)編譯語(yǔ)句聯(lián)合使用,主要用于的預(yù)編譯語(yǔ)句聯(lián)合使用,主要用于Verilog仿真驗(yàn)證。仿真驗(yàn)證。 系統(tǒng)任務(wù)和系統(tǒng)函數(shù)的名字都是用系統(tǒng)任務(wù)和系統(tǒng)函數(shù)的名字都是用“$”字母開(kāi)頭。字母開(kāi)頭。 E D A技術(shù)與應(yīng)用7.3
42、.5 存儲(chǔ)器設(shè)計(jì)的結(jié)構(gòu)控制存儲(chǔ)器設(shè)計(jì)的結(jié)構(gòu)控制 例例7-8:以嵌入式:以嵌入式RAM單元構(gòu)建的存儲(chǔ)器單元構(gòu)建的存儲(chǔ)器 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采用邏輯宏單元構(gòu)采用邏輯宏單元構(gòu)建
43、的存儲(chǔ)器的建的存儲(chǔ)器的RTL圖圖例例7-8采用嵌入式采用嵌入式RAM單單元構(gòu)建的存儲(chǔ)器的元構(gòu)建的存儲(chǔ)器的RTL圖圖 E D A技術(shù)與應(yīng)用 例例7-6花費(fèi)了花費(fèi)了1497個(gè)邏輯宏單元,并使用了個(gè)邏輯宏單元,并使用了1024個(gè)專用寄存器個(gè)專用寄存器(D觸發(fā)器模塊),未使用任何觸發(fā)器模塊),未使用任何RAM單元;例單元;例7-8使用了使用了1024個(gè)個(gè)RAM單元,未使用邏輯宏單元。單元,未使用邏輯宏單元。 以嵌入式以嵌入式RAM單元構(gòu)建的存儲(chǔ)器節(jié)省了大量的邏輯資源,具單元構(gòu)建的存儲(chǔ)器節(jié)省了大量的邏輯資源,具有最好的資源利用率,而且模塊的速度和可靠性也大為增加。有最好的資源利用率,而且模塊的速度和可靠
44、性也大為增加。例例7-6采用邏輯宏單元構(gòu)采用邏輯宏單元構(gòu)建的存儲(chǔ)器的編譯報(bào)告建的存儲(chǔ)器的編譯報(bào)告例例7-8采用嵌入式采用嵌入式RAM單元單元構(gòu)建的存儲(chǔ)器的編譯報(bào)告構(gòu)建的存儲(chǔ)器的編譯報(bào)告 E D A技術(shù)與應(yīng)用(1)Verilog的表述形式的表述形式。例。例7-6對(duì)存儲(chǔ)器的輸出對(duì)存儲(chǔ)器的輸出Q,采用了連,采用了連續(xù)賦值語(yǔ)句,所以續(xù)賦值語(yǔ)句,所以RAM數(shù)據(jù)端口是直接對(duì)外的,其輸出口沒(méi)數(shù)據(jù)端口是直接對(duì)外的,其輸出口沒(méi)有任何鎖存電路,這樣的結(jié)構(gòu)描述無(wú)法使用有任何鎖存電路,這樣的結(jié)構(gòu)描述無(wú)法使用FPGA現(xiàn)成的現(xiàn)成的RAM位。例位。例7-8使用了兩個(gè)使用了兩個(gè)過(guò)程語(yǔ)句過(guò)程語(yǔ)句,且敏感信號(hào)都是,且敏感信號(hào)都是
45、CLK上上升沿,特別是升沿,特別是Q的輸出增加了一個(gè)的輸出增加了一個(gè)CLK信號(hào)控制的信號(hào)控制的鎖存器鎖存器,這,這樣的描述恰好滿足了樣的描述恰好滿足了FPGA內(nèi)部?jī)?nèi)部RAM單元的這種結(jié)構(gòu)。單元的這種結(jié)構(gòu)。例例7-6和例和例7-8的區(qū)別:的區(qū)別:例例7-6采用邏輯宏單元構(gòu)采用邏輯宏單元構(gòu)建的存儲(chǔ)器的建的存儲(chǔ)器的RTL圖圖例例7-8采用嵌入式采用嵌入式RAM單單元構(gòu)建的存儲(chǔ)器的元構(gòu)建的存儲(chǔ)器的RTL圖圖 E D A技術(shù)與應(yīng)用(2)調(diào)用嵌入式調(diào)用嵌入式RAM單元的約束設(shè)置單元的約束設(shè)置。正確恰當(dāng)?shù)摹U_恰當(dāng)?shù)腣erilog描描述是綜合器能調(diào)用述是綜合器能調(diào)用FPGA內(nèi)內(nèi)RAM單元的基礎(chǔ),卻不一定能保
46、單元的基礎(chǔ),卻不一定能保證這項(xiàng)設(shè)計(jì)會(huì)自動(dòng)調(diào)用證這項(xiàng)設(shè)計(jì)會(huì)自動(dòng)調(diào)用RAM單元。必須對(duì)單元。必須對(duì)EDA工具的綜合器工具的綜合器作必要的約束設(shè)置。方法是:作必要的約束設(shè)置。方法是:AssignmentsSettings,在左欄,在左欄選擇選擇Analysis&Synthesis Settings項(xiàng),單擊項(xiàng),單擊More Setting按鈕,按鈕,在彈出的對(duì)話框中選擇在彈出的對(duì)話框中選擇Auto RAM Replacement項(xiàng)的項(xiàng)的On,即設(shè),即設(shè)置了置了RAM單元的自動(dòng)替代控制功能。單元的自動(dòng)替代控制功能。例例7-6和例和例7-8的區(qū)別:的區(qū)別: E D A技術(shù)與應(yīng)用7.4 LPM_RO
47、M的定制和使用示例的定制和使用示例7.4.1 LPM_ROM的調(diào)用的調(diào)用(1)創(chuàng)建一個(gè)原理圖)創(chuàng)建一個(gè)原理圖工程文件(假設(shè)工程名工程文件(假設(shè)工程名為為SIN_GNT)。)。(2)在原理圖編輯窗)在原理圖編輯窗雙擊,跳出雙擊,跳出Symbol對(duì)對(duì)話框,單擊話框,單擊MegaWizard Plug-In Manager按鈕按鈕。 E D A技術(shù)與應(yīng)用7.4 LPM_ROM的定制和使用示例的定制和使用示例7.4.1 LPM_ROM的調(diào)用的調(diào)用(3)選擇)選擇Memory Compiler的的ROM:1-PORT項(xiàng),設(shè)文件名為項(xiàng),設(shè)文件名為ROM78,F(xiàn)PGA是是Cyclone III系列,文本表述
48、選擇系列,文本表述選擇Verilog。 E D A技術(shù)與應(yīng)用7.4 LPM_ROM的定制和使用示例的定制和使用示例7.4.1 LPM_ROM的調(diào)用的調(diào)用(4)設(shè)置此)設(shè)置此ROM模塊的參數(shù)。模塊的參數(shù)。 E D A技術(shù)與應(yīng)用7.4 LPM_ROM的定制和使用示例的定制和使用示例7.4.1 LPM_ROM的調(diào)用的調(diào)用(4)設(shè)置此)設(shè)置此ROM模塊的參數(shù)。模塊的參數(shù)。 E D A技術(shù)與應(yīng)用7.4 LPM_ROM的定制和使用示例的定制和使用示例7.4.1 LPM_ROM的調(diào)用的調(diào)用(5)配置初始化文件,使用上一節(jié)設(shè)置的正弦波數(shù)據(jù)初始化)配置初始化文件,使用上一節(jié)設(shè)置的正弦波數(shù)據(jù)初始化文件文件DATA
49、7X8.mif。 E D A技術(shù)與應(yīng)用7.4.2 簡(jiǎn)易正弦信號(hào)發(fā)生器設(shè)計(jì)簡(jiǎn)易正弦信號(hào)發(fā)生器設(shè)計(jì) 計(jì)數(shù)器或地址信號(hào)發(fā)生器計(jì)數(shù)器或地址信號(hào)發(fā)生器:由:由7位計(jì)數(shù)器擔(dān)任,位計(jì)數(shù)器擔(dān)任,7位輸出。位輸出。 正弦信號(hào)數(shù)據(jù)存儲(chǔ)器正弦信號(hào)數(shù)據(jù)存儲(chǔ)器ROM:由:由LPM_ROM模塊構(gòu)成,模塊構(gòu)成,7位位地址線,地址線,8為數(shù)據(jù)線,含有為數(shù)據(jù)線,含有128個(gè)個(gè)8位波形數(shù)據(jù)(一個(gè)正弦波位波形數(shù)據(jù)(一個(gè)正弦波形周期)。形周期)。 工程工程SIN_GNT頂層原理圖設(shè)計(jì)頂層原理圖設(shè)計(jì):由地址信號(hào)發(fā)生器和正弦:由地址信號(hào)發(fā)生器和正弦數(shù)據(jù)數(shù)據(jù)ROM組成。組成。 8位位D/A。 E D A技術(shù)與應(yīng)用7.4.2 簡(jiǎn)易正弦信號(hào)發(fā)
50、生器設(shè)計(jì)簡(jiǎn)易正弦信號(hào)發(fā)生器設(shè)計(jì) 地址發(fā)生器的時(shí)鐘地址發(fā)生器的時(shí)鐘CLK的輸入頻率的輸入頻率f0與每周期的波形數(shù)據(jù)與每周期的波形數(shù)據(jù)點(diǎn)數(shù)(點(diǎn)數(shù)(128點(diǎn)),以及點(diǎn)),以及D/A輸出的頻率輸出的頻率f的關(guān)系是:的關(guān)系是:f=f0/128。 設(shè)計(jì)設(shè)計(jì)頂層文件,創(chuàng)建工程,全程編譯,頂層文件,創(chuàng)建工程,全程編譯,RTL電路圖,仿真,電路圖,仿真,時(shí)序分析,引腳鎖定,編譯下載,在系統(tǒng)讀寫(xiě)測(cè)試和嵌入時(shí)序分析,引腳鎖定,編譯下載,在系統(tǒng)讀寫(xiě)測(cè)試和嵌入式邏輯分析儀測(cè)試。式邏輯分析儀測(cè)試。頂層設(shè)計(jì)原理圖頂層設(shè)計(jì)原理圖電路仿真波形電路仿真波形 E D A技術(shù)與應(yīng)用7.4.3 正弦信號(hào)發(fā)生器硬件實(shí)現(xiàn)和測(cè)試。正弦信號(hào)發(fā)
51、生器硬件實(shí)現(xiàn)和測(cè)試。假設(shè)使用假設(shè)使用55F+板,使用嵌入式邏輯分析儀測(cè)試和觀察輸出波形板,使用嵌入式邏輯分析儀測(cè)試和觀察輸出波形引腳鎖定引腳鎖定: CLK-專用輸入口(引腳專用輸入口(引腳 G1) Q7: 0-8個(gè)個(gè)I/O端口端口(引腳(引腳Y15,AB14,AB13,Y13,AA13,AA14,AB15,AA15) RST-鍵鍵K1(引腳(引腳AA3) EN-鍵鍵K2(引腳(引腳AB3) E D A技術(shù)與應(yīng)用7.4.3 正弦信號(hào)發(fā)生器硬件實(shí)現(xiàn)和測(cè)試。正弦信號(hào)發(fā)生器硬件實(shí)現(xiàn)和測(cè)試。假設(shè)使用假設(shè)使用55F+板,使用嵌入式邏輯分析儀測(cè)試和觀察輸出波形板,使用嵌入式邏輯分析儀測(cè)試和觀察輸出波形Sig
52、nalTap II參數(shù)設(shè)置參數(shù)設(shè)置: 采樣采樣深度:深度:4K 采樣采樣時(shí)鐘:信號(hào)源時(shí)鐘時(shí)鐘:信號(hào)源時(shí)鐘CLK 觸發(fā)觸發(fā)信號(hào):技術(shù)使能控制信號(hào):技術(shù)使能控制EN=1SignalTap II實(shí)時(shí)測(cè)試圖實(shí)時(shí)測(cè)試圖SignalTap II波形顯示圖波形顯示圖 E D A技術(shù)與應(yīng)用7.5 在系統(tǒng)存儲(chǔ)器數(shù)據(jù)讀寫(xiě)編輯器應(yīng)用在系統(tǒng)存儲(chǔ)器數(shù)據(jù)讀寫(xiě)編輯器應(yīng)用 功能功能:直接通過(guò):直接通過(guò)JTAG口讀取或改寫(xiě)口讀取或改寫(xiě)FPGA內(nèi)處于工內(nèi)處于工作狀態(tài)的存儲(chǔ)器中的數(shù)據(jù),讀取過(guò)程不影響作狀態(tài)的存儲(chǔ)器中的數(shù)據(jù),讀取過(guò)程不影響FPGA的的正常工作。正常工作。 用處用處:在系統(tǒng)了解:在系統(tǒng)了解ROM中加載的數(shù)據(jù),讀取基于中
53、加載的數(shù)據(jù),讀取基于EAB/M9K的的RAM中采樣獲得的數(shù)據(jù),對(duì)嵌入在由中采樣獲得的數(shù)據(jù),對(duì)嵌入在由FPGA資源構(gòu)建的資源構(gòu)建的CPU中的數(shù)據(jù)中的數(shù)據(jù)RAM和程序和程序ROM中中的信息讀取和數(shù)據(jù)修改等。的信息讀取和數(shù)據(jù)修改等。 E D A技術(shù)與應(yīng)用以以7.4節(jié)的簡(jiǎn)易正弦信號(hào)發(fā)生器為例節(jié)的簡(jiǎn)易正弦信號(hào)發(fā)生器為例(1)打開(kāi)在系統(tǒng)存儲(chǔ)單元編輯窗口打開(kāi)在系統(tǒng)存儲(chǔ)單元編輯窗口:使計(jì)算機(jī)與開(kāi)發(fā)板上:使計(jì)算機(jī)與開(kāi)發(fā)板上FPGA的的JTAG口處于正常連接狀態(tài)。打開(kāi)工程口處于正常連接狀態(tài)。打開(kāi)工程SIN_GNT,下,下載載SOF文件。文件。ToolIn-System Memory Content Editor,
54、在彈,在彈出的編輯窗口,單擊右上角出的編輯窗口,單擊右上角Setup,在彈出的,在彈出的Hardware Setup對(duì)話框中選擇對(duì)話框中選擇Hardware Settings選項(xiàng)卡,雙擊選項(xiàng)卡,雙擊USB-Blaster,單擊單擊Close,編輯窗口會(huì)顯示,編輯窗口會(huì)顯示USB-Blaster和器件的型號(hào)。和器件的型號(hào)。 E D A技術(shù)與應(yīng)用以以7.4節(jié)的簡(jiǎn)易正弦信號(hào)發(fā)生器為例節(jié)的簡(jiǎn)易正弦信號(hào)發(fā)生器為例(2)讀取讀取ROM中的數(shù)據(jù)中的數(shù)據(jù):在編輯窗口中先選中窗口左上角:在編輯窗口中先選中窗口左上角的的ID名名ROM8,再單擊上排的一個(gè)向上的小箭頭按鈕,再單擊上排的一個(gè)向上的小箭頭按鈕(或(或使
55、使用在系統(tǒng)存儲(chǔ)單元編輯用在系統(tǒng)存儲(chǔ)單元編輯窗口中的菜單窗口中的菜單ProcessingRead Data from In-System Memory),下方出現(xiàn)通過(guò)),下方出現(xiàn)通過(guò)JTAG口從口從FPGA內(nèi)內(nèi)部部ROM中讀出的波形數(shù)據(jù)。中讀出的波形數(shù)據(jù)。通過(guò)通過(guò)JTAG口從口從FPGA內(nèi)部?jī)?nèi)部ROM中讀出來(lái)中讀出來(lái)的波形數(shù)據(jù),應(yīng)該與加載進(jìn)去的的波形數(shù)據(jù),應(yīng)該與加載進(jìn)去的正弦波數(shù)正弦波數(shù)據(jù)初始化文件據(jù)初始化文件DATA7X8.mif一致。一致。 E D A技術(shù)與應(yīng)用以以7.4節(jié)的簡(jiǎn)易正弦信號(hào)發(fā)生器為例節(jié)的簡(jiǎn)易正弦信號(hào)發(fā)生器為例(3)寫(xiě)數(shù)據(jù)寫(xiě)數(shù)據(jù):在圖形編輯窗口中,編輯波形數(shù)據(jù),再:在圖形編輯窗口
56、中,編輯波形數(shù)據(jù),再選中窗選中窗口左上角的口左上角的ID名名ROM8,單擊上排的一個(gè)向下的小箭頭按鈕,單擊上排的一個(gè)向下的小箭頭按鈕(或使用在系統(tǒng)存儲(chǔ)單元編輯或使用在系統(tǒng)存儲(chǔ)單元編輯窗口中的菜單窗口中的菜單Processing Write Data to In-System Memory),將編輯后所有的數(shù)據(jù)通),將編輯后所有的數(shù)據(jù)通過(guò)過(guò)JTAG口下載于口下載于FPGA中的中的LPM_ROM中,可從示波器和中,可從示波器和SignalTap II上同步觀察到波形的變化。上同步觀察到波形的變化。SignalTap II采樣波形采樣波形 E D A技術(shù)與應(yīng)用以以7.4節(jié)的簡(jiǎn)易正弦信號(hào)發(fā)生器為例節(jié)的
57、簡(jiǎn)易正弦信號(hào)發(fā)生器為例(4)輸入輸出數(shù)據(jù)文件輸入輸出數(shù)據(jù)文件:使用:使用在系統(tǒng)存儲(chǔ)單元編輯在系統(tǒng)存儲(chǔ)單元編輯窗口中的窗口中的菜單菜單EditExport Data to File或或EditImport Data from File,將在系統(tǒng)讀出的數(shù)據(jù)以將在系統(tǒng)讀出的數(shù)據(jù)以.mif或或.hex的格式文件存入計(jì)算機(jī)中,的格式文件存入計(jì)算機(jī)中,或?qū)⒋祟惛袷降奈募傧到y(tǒng)地下載到或?qū)⒋祟惛袷降奈募傧到y(tǒng)地下載到FPGA中去。中去。 E D A技術(shù)與應(yīng)用7.6 LPM嵌入式鎖相環(huán)調(diào)用嵌入式鎖相環(huán)調(diào)用 嵌入式模擬鎖相環(huán)嵌入式模擬鎖相環(huán):可與一輸入的時(shí)鐘信號(hào)同步,:可與一輸入的時(shí)鐘信號(hào)同步,并以其作為參考信
58、號(hào)實(shí)現(xiàn)鎖相,從而輸出一至多個(gè)并以其作為參考信號(hào)實(shí)現(xiàn)鎖相,從而輸出一至多個(gè)同步倍頻或分頻的片內(nèi)時(shí)鐘,以供邏輯系統(tǒng)應(yīng)用。同步倍頻或分頻的片內(nèi)時(shí)鐘,以供邏輯系統(tǒng)應(yīng)用。 優(yōu)點(diǎn)優(yōu)點(diǎn):與直接來(lái)自外部的時(shí)鐘相比,這種鎖相環(huán)片:與直接來(lái)自外部的時(shí)鐘相比,這種鎖相環(huán)片內(nèi)時(shí)鐘可減少時(shí)鐘延時(shí)和時(shí)鐘變形,減少片外干擾;內(nèi)時(shí)鐘可減少時(shí)鐘延時(shí)和時(shí)鐘變形,減少片外干擾;還可改善時(shí)鐘的建立時(shí)間和保持時(shí)間,是系統(tǒng)穩(wěn)定還可改善時(shí)鐘的建立時(shí)間和保持時(shí)間,是系統(tǒng)穩(wěn)定高速工作的保證。高速工作的保證。 能輸出含小數(shù)的能輸出含小數(shù)的精確頻率精確頻率,能提供,能提供任意相移任意相移和和輸出輸出信號(hào)占空比信號(hào)占空比。 E D A技術(shù)與應(yīng)用建立
59、片內(nèi)鎖相環(huán)建立片內(nèi)鎖相環(huán)PLL模塊的步驟:模塊的步驟:(1)定制一個(gè)新模塊定制一個(gè)新模塊:在原理圖編輯窗右鍵單擊,選擇:在原理圖編輯窗右鍵單擊,選擇InsertSymbol,進(jìn)入元件調(diào)用對(duì)話框,單擊,進(jìn)入元件調(diào)用對(duì)話框,單擊MegaWizard Plug-In Manager按鈕。在彈出的窗口中選擇按鈕。在彈出的窗口中選擇Create a new custom選項(xiàng),定制一個(gè)新模塊。選項(xiàng),定制一個(gè)新模塊。以以7.4節(jié)的簡(jiǎn)易正弦信號(hào)發(fā)生器為例,在頂層設(shè)計(jì)中加入鎖相環(huán)節(jié)的簡(jiǎn)易正弦信號(hào)發(fā)生器為例,在頂層設(shè)計(jì)中加入鎖相環(huán) E D A技術(shù)與應(yīng)用建立片內(nèi)鎖相環(huán)建立片內(nèi)鎖相環(huán)PLL模塊的步驟:模塊的步驟:(1
60、)定制一個(gè)新模塊定制一個(gè)新模塊:在左欄選擇在左欄選擇I/O項(xiàng)下的項(xiàng)下的ALTPLL,再選,再選擇擇Cyclone III器件和器件和Verilog語(yǔ)言,輸入設(shè)計(jì)文件存放的路徑語(yǔ)言,輸入設(shè)計(jì)文件存放的路徑和文件名。和文件名。以以7.4節(jié)的簡(jiǎn)易正弦信號(hào)發(fā)生器為例,在頂層設(shè)計(jì)中加入鎖相環(huán)節(jié)的簡(jiǎn)易正弦信號(hào)發(fā)生器為例,在頂層設(shè)計(jì)中加入鎖相環(huán) E D A技術(shù)與應(yīng)用建立片內(nèi)鎖相環(huán)建立片內(nèi)鎖相環(huán)PLL模塊的步驟:模塊的步驟:(2)設(shè)置輸入時(shí)鐘頻率設(shè)置輸入時(shí)鐘頻率:?jiǎn)螕魡螕鬘ext, inclk0為為20MHz(55F+開(kāi)發(fā)板上配置了此晶振),有兩個(gè)獨(dú)立的專用時(shí)鐘輸入腳分開(kāi)發(fā)板上配置了此晶振),有兩個(gè)獨(dú)立的專用時(shí)鐘輸入腳分別是
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《家庭護(hù)士》課件
- 2023-2024學(xué)年福建省福州市福清市高一(下)期中地理試卷
- 高速公路施工總承包合同段春節(jié)節(jié)后復(fù)工工作計(jì)劃及保障措施
- 2024年山東省日照市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2024年福建省福州市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2024年四川省眉山市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2021年貴州省安順市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 湖南省張家界市(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)部編版摸底考試(上學(xué)期)試卷及答案
- 2024年ATM機(jī)項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 2025年P(guān)S鋁合金板項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模板
- 監(jiān)控系統(tǒng)說(shuō)明
- 西方古代國(guó)家定義的歷史流變
- 針對(duì)行政拘留的行政復(fù)議申請(qǐng)書(shū)
- 三相同步發(fā)電機(jī)的基本工作原理
- 青年干部成長(zhǎng)成才成功
- GB/T 29636-2023疑似毒品中甲基苯丙胺檢驗(yàn)
- 2023年全國(guó)中小學(xué)思政課教師網(wǎng)絡(luò)培訓(xùn)研修總結(jié)心得體會(huì)
- 老年人能力評(píng)估標(biāo)準(zhǔn)表
- 卷內(nèi)目錄及卷內(nèi)備考表
- 國(guó)開(kāi)大學(xué)2023年01月11110《工程地質(zhì)》期末考試答案
- 2023春國(guó)家開(kāi)放大學(xué)-02272數(shù)據(jù)結(jié)構(gòu)(本)-期末考試題帶答案
評(píng)論
0/150
提交評(píng)論