欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      Modelsim 仿真方法總結

      時間:2019-05-12 12:59:34下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《Modelsim 仿真方法總結》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《Modelsim 仿真方法總結》。

      第一篇:Modelsim 仿真方法總結

      Modelsim 仿真方法總結

      Modeling 仿真工具是Model公司開發(fā)的。它支持Verilog、VHDL以及他們的混合仿真。Modelsim各版本的使用方法大體一致,Modelsim仿真主要分為前仿真和后仿真。下面來具體介紹modelsim的仿真方法,涉及quartus-modelsim聯(lián)合(使用)仿真的差異會特別提示。

      前仿真與后仿真說明 1.1 前仿真

      前仿真也稱為功能仿真、行為仿真。旨在驗證電路的功能是否符合設計要求,其特點是不考慮延遲(包括門延遲與線延遲),主要驗證電路與理想情況是否一致。前仿真需要用到RTL級代碼(由源代碼經(jīng)過綜合后產(chǎn)生)與Testbench。

      1.2)后仿真

      后仿真也稱為時序仿真或者布局布線仿真。是指在電路已經(jīng)映射到特定的工藝環(huán)境以后,綜合考慮門延遲與線延遲的影響,驗證電路在一定的時序條件下是否存在時序違規(guī)以及能否滿足設計構想的過程。需要用到的文件是——從布局布線結果中抽象出來的門級網(wǎng)表、testbench和后綴名為sdo或者sdf的標準時延文件。

      注:擴展名為sdo和sdf的標準時延文件包含門延遲與實際布線延遲,能較好的反應芯片的實際工作情況。

      二)modelsim仿真主要有以下幾個步驟:

      (1)建立庫并映射庫到物理目錄;(2)編譯源代碼(包括Testbench);(3)執(zhí)行仿真; 解釋: ①庫:modelsim中有兩類仿真庫。一種是工作庫,默認名為work;另一種是資源庫。Work庫中存放當前工程下所有已經(jīng)編譯過的文件,所以編譯前一定要建立一個work庫。資源庫存放work庫中已經(jīng)編譯文件所要調(diào)用的資源,這樣的資源可能有很多,它們被存放在不同的資源庫內(nèi)。(例如要想對綜合在cyclone芯片中的設計做后仿真,就需要有一個名為cyclone_ver的資源庫。)

      映射庫用于將已經(jīng)預編譯好的文件所在目錄映射為一個modelsim可識別的庫。(此即是為仿真庫建立一個邏輯映像的行為過程,后面會提到,在modelsim中新建庫時,create a new library and a logical mapping to it或a map to an existing libraryd的提示)

      上述三個步驟是大的框架,前仿真和后仿真均是按照這個框架進行的,建立modelsim工程對前后仿真來說都不是必須的。下面分別介紹每一步的操作。

      2.1)建立庫

      在執(zhí)行一個仿真前先建立一個單獨的文件夾,將操作對象文件放在該文件夾下面。然后啟動modelsim軟件將modelsim當前路徑改動到此文件下。修改方法是File>Change Directory。

      注意:上面說的是獨立運行modelsim仿真的情況。當采用quartus聯(lián)合modelsim仿真時,在quartus里面設置第三方EDA仿真工具后,編譯成功會自動在quartus工程目錄下面創(chuàng)建一個simulationmodelsim的文件夾,此文件夾等同于獨立運行moddelsim仿真時最先建立的文件夾。另quartus聯(lián)合modelsim仿真,modelsim默認路徑即為其自動創(chuàng)建文件夾simulationmodelsim下,不必人為更改。

      啟動modelsim后,建立仿真庫。點擊file>new>library,出現(xiàn)對話框,選擇a new library and a logical mapping to it(已默認),在library name 中輸入要創(chuàng)建庫的名稱。

      總結步驟為:啟動modelsim-->點擊file-->chang directory(如需更改路徑的話);再file-->new-->(project)-->library,進行相關設置。即可。

      2.2)編寫源代碼及testbench;在編寫目標測試文件(testbench)之前,我們先寫完目標文件(既可在quartus中編寫,也可以在modelsim中編寫),把它編譯進工作庫。(當然此步也可以等到和測試文件寫完以后一起編譯)。源代碼的編寫就不用介紹了,下面介紹編寫testbench的兩種方法。

      A)可以在modelsim內(nèi)直接編寫測試文件,而且modelsim提供各種testbench模板,我們只需更改其中小部分即可。在modelsim中執(zhí)行File>New>Source>Library或者直接點新建文件,會出現(xiàn)一個verilog(或VHDL)文本編輯頁面,編輯測試文件即可。另modelsim中提供各種測試文件模板,直接拿過來用會減少工作量。在verilog文本編輯頁面空白處右鍵點擊Show Language Templates,然后會出現(xiàn)一個加載工程,接著在剛才文本編輯窗口左邊出現(xiàn)一個Language Templates窗口,雙擊Creat Testbench會出現(xiàn)一個創(chuàng)建向導,選擇Specify Design Unit工作庫下,work工作庫中的目標文件(即為目標文件配套testbench),點Next??梢灾付═estbench的名稱以及要編譯到的庫等,此處我們使用默認設置直接點Finish。這時在Testbench內(nèi)會出現(xiàn)對目標文件的各個端口的定義還有調(diào)用函數(shù)接下來,設計者可以自己往Testbench內(nèi)添加內(nèi)容了,我們只需更改其中的少量部分,即可完成testbench,然后保存為.v格式即可。按照前面的方法(點中文件后右鍵,選中compile即進行該文件的編譯,或者點擊菜單欄中的compile菜單,然后選中要編譯的文件)把Testbench文件也編譯到工作庫中。

      B)在 Quartus內(nèi)編寫并編譯 Testbench,之后將Testbench 和目標文件放在同一個文件夾下,按照前面的方法把 Testbench 文件和目標文件都編譯到工作庫中之后。

      另如果在工作庫中沒有該文件(在Testbench文件沒有端口的情況下),則在Simulate——>Start Simulate卡片中去掉優(yōu)化選項Enable optimization之后再重新編譯,即可在工作庫中找到該文件。

      三)執(zhí)行仿真(分別說明前仿真和后仿真)3.1)前仿真

      前仿真相對來說簡單些,在執(zhí)行到上面一步,把需要的文件編譯到作庫后,我們只需點simulation>start simulation或快捷按鈕。會出現(xiàn)startsimulation對話框,點擊Design標簽選擇work庫(工作庫)中的測試文件然后點ok既可以。在主界面中會多出來一個Objects窗口,里面顯示 Testbench 里定義的所信號引腳,在Workspace里也會多出來一個Sim標簽。右鍵點測試文件,選擇Add->Add to Wave,然后將出現(xiàn)Wave窗口,現(xiàn)在就可以仿真了。3.2)后仿真

      后仿真與前仿真步驟大體相同,只不過中間需要添加仿真庫(和所選器件資源庫,例如在原理圖文件中用到IP core,我們這里就要把相關的_mf.v庫加進來。)網(wǎng)表和延時文件的步驟。

      后仿真的前提是quartus已經(jīng)對要仿真的目標文件進行編譯,注意引腳的分派。并生成modelsim仿真所需要的.vo文件(網(wǎng)表文件)和.sdo文件(時延文件)。具體操作過程又有兩種方法,一種是通過Quartus調(diào)用Modelsim,Quartus在編譯之后自動把仿真需要的.vo文件以及需要的仿真庫加到modelsim中,操作簡單;一種是手動將需要的文件和庫加入modelsim進行仿真,這種方法可以增加主觀能動性,充分發(fā)揮modelsim的強大仿真功能。

      A)通過quartus調(diào)用modelsim;使用這種方法時首先要對Quartus進行設置。先運行Quartus,打開要仿真的工程,點菜單欄的Assignments,點EDA Tool settings,選中左邊Category中的Simulation.,在右邊的Tool name中選ModelSim(Verilog),選中下面的Run Gate Level Simulation automatically after complication。

      Quartus中的工程準備好之后點擊start complication按鈕,此時modelsim會自動啟動,而quartus處于等待狀態(tài)(前提是系統(tǒng)環(huán)境變量中用戶變量中PATH要設置好modelsim安裝路徑)。而且work庫中出現(xiàn)了需要仿真的文件。Modelsim自動將quartus生成的.vo文件編譯到work庫,并建立相應的資源庫。

      編寫測試臺程序,最好放在生成的.vo文件所在的目錄,以方便在需要手動仿真時使用。點Compile在出現(xiàn)的對話框中選中剛寫好的測試文件,然后點Compile按鈕,編譯結束后點Done,這時在Work庫中會出現(xiàn)測試臺文件。

      點擊simulate->Start Simulation或快捷按鈕 會出現(xiàn)start simulate對話框。點擊Design標簽選擇Work庫下的測試文件,然后點擊Libraries標簽在Search Library中點擊Add按鈕,選擇仿真所需要的資源庫(如果不知道需要選擇哪個庫,可以先直接點Compile看出現(xiàn)的錯誤提示中說需要的庫名,然后再重復上述步驟)。

      再點start simulate對話框的SDF標簽。在出現(xiàn)的對話框的SDF File框內(nèi)加入.sdo時延文件路徑。在Apply To Region框內(nèi)有一個“/”,在“/”的前面輸入測試臺文件名,在它的后面輸入測試臺程序中調(diào)用被測試程序時給被測試程序起的名稱。(一般為DUT)

      B)手動仿真;

      手動仿真需要自己添加文件和編譯庫,但可以充分發(fā)揮modelsim強大的仿真功能。操作時也要先對quartus進行設置,設置與前面相同只是不要選中Run Gate Level Simulation automatically after complication。然后啟動modelsim,將當前路徑改到“工程文件夾simulationmodelsim”下。向該文件夾中手動添加所需要的仿真文件,包括.vo文件、相關芯片資源庫(后綴_atoms.v)以及原理圖情況下的IP core相關資源(后綴-mf.v)。然后在modelsim中點編譯,將這些文件編譯到工作庫下,點擊simulate->Start Simulation或快捷按鈕 會出現(xiàn)start simulate對話框。這里和A情況相比只有Libraries標簽在Search Library時不一樣,其余2項都一樣。Libraries標簽在Search Library下選中simulationmodelsim下work庫。后面觀察波形與前面方法一致。

      兩種方法的區(qū)別在于,modelsim仿真所需要的.vo文件以及.sdo文件,和資源庫的建立方法不同,手動仿真需要自己添加這些文件到工作庫下。建議使用手動添加的方式,有利于我們對軟件使用的更好理解。

      以上方法可供參考,modelsim軟件自帶的教程也是一個不錯的學習路徑,在help>SE PDF Documentation>Tutorial里面有詳細的功能講解,使用時可以看看。

      第二篇:modelsim仿真小結(最終版)

      Modelsim仿真小結

      Modelsim的基本仿真流程大致分以下幾個步驟:建庫、編譯工程、前后仿真、調(diào)試等。Modelsim仿真既可以在modelsim界面操作,也可以用do文件實現(xiàn),這里結合學習的教程、網(wǎng)上看到的資料,和實際遇到的一些問題,分別做一整理小結。

      1.建庫

      建庫包括Altera庫和Xilinx庫,同時都包括Verilog和VHDL。這里只建了Verilog庫,VHDL和Verilog步驟相同。

      對于Altera庫主要包括lpm元件庫、Mega_Function庫atera_mf、altera原語庫altera_primitive和各器件系列模型庫。前三種是調(diào)用altera模塊的必備庫,第四種是進行綜合后功能仿真和布線后時序仿真需要的庫,和器件系列有關,只選對應系列即可。

      Altera庫創(chuàng)建和編譯步驟如下:

      a)在Modelsim安裝目錄下新建文件夾,命名altera_lib,以存放編譯后的庫文件,可以在altera_lib下新建Verilog和VHDL兩個子文件夾,分別存放Verilog和VHDL庫。b)打開Modelsim,新建Library,file->new->library..c)如下圖,創(chuàng)建lpm庫,路徑E:modeltech_10.1aaltera_libVeriloglpm

      d)添加庫文件,并編譯,compile-> compile …,出現(xiàn)compile source files窗口,library 指定到lpm下,查找范圍,選quartus安裝目錄下… edasim_lib目錄里的仿真原型文件:220model.v,點compile,點done。

      到此,lpm庫建立完畢。

      e)同理,建立altera_mf庫添加 altera_mf.v,建立primitive庫添加altera_primitive.v 建立各系列的模型庫,命名可用系列名加_ver“xxx_ver”,也可隨意吧,添加各系列的xxx_atoms.v。

      這里,也可以把以上庫放在一個文件夾,這樣做簡單,一次就搞定,分開也就是條理清楚,沒人去看,所以沒必要。

      f)修改modelsim.ini文件,為的是讓modelsim能自動map到已經(jīng)編譯的這些庫上。先去掉只讀屬性,在[Library]和[vcom]之間加上:庫名=庫路徑[絕對路徑或者相對路徑],相對路徑是相對于modelsim安裝路徑,modelsim安裝路徑用$MODEL_TECH表示。

      這里所有庫都放在E:modeltech_10.1aaltera_lib下,庫名是altera_lib,這里只添加一句: altera_lib = E:modeltech_10.1aaltera_lib

      g)保存退出,改回modelsim.ini只讀屬性,防止亂改。至此altera庫建立完畢。

      Xlinx庫創(chuàng)建和編譯步驟如下:

      相比altera,xilinx建庫很方便。xilinx有批處理命令,直接在console命令窗口,輸入compxlib命令,調(diào)出編譯庫的窗口,先改掉modelsim安裝目錄下modelsim.ini只讀屬性。設置如下圖:

      Next,選擇語言:

      Next,選擇需要編譯的器件:

      Netx-> next,選擇輸出路徑,launch compile process,等待編譯完成。完成后改回modelsim.ini只讀屬性。至此xilinx庫建立完畢。

      2.編譯工程

      編譯工程主要包括:code、testbench、建立工程、建立工程庫、映射、編譯等。Code主要有code思想和風格,在Verilog部分涉及。Testbench,下邊給出一個公用模板,基于這個方便修改,可以根據(jù)自己的習慣建一個temp_tb.v。

      Modelsim界面編譯工程:

      a)新建工程:打開modelsim,file-> new-> project..,指定工程名、路徑、工程庫。

      b)Add existing file

      c)Add testbench file ….d)編譯,compile –> complie all

      e)編譯語法查錯,直到編譯通過。至此編譯完畢。

      3.功能和時序仿真

      仿真是在編譯的基礎上,進行的功能調(diào)試,包括綜合前功能仿真、綜合后功能仿真和布局布線后時序仿真。

      Modelsim界面綜合前仿真:

      a)指定頂層,開始仿真;simulation-> start simulation …,在work 庫中,指定testbench,ok,開始仿真。

      b)查看仿真結果,打開wave,信號,加入wave

      c)運行,查看波形。Run-> run all ….至此,簡單的modelsim界面綜合前仿真介紹完畢。

      Modelsim界面綜合后仿真:

      綜合后仿真需要quartus綜合后的網(wǎng)表文件(以altera為例),a)綜合后的網(wǎng)表的生成: quartus工程名右鍵-> setting –> EDA Tool Setting, 雙擊Simulation,選擇EDA軟件modelsim,選擇輸出網(wǎng)表路徑,如圖

      b)More settings ….將 Generate netlist for functional simulation only 設置為ON

      c)保存,全編譯。

      d)

      檢查一下?/modelsim/Psyth/source 里面,可以發(fā)現(xiàn),已經(jīng)生成了一個*.vo 文件。這個就是需要的網(wǎng)表文件。(VHDL 的輸出網(wǎng)表是*.vho 后綴名的)

      e)將vo文件添加到工程,指定TestBench 文件top_tb.v,同前邊一樣進行仿真。

      e)得到的仿真結果

      Modelsim界面布局布線后仿真:

      布局布線后仿真需要綜合網(wǎng)表文件和添延時文件*.sdo(Verilog)或*_vhd.sdo(VHDL);

      a)QuartusII 里面設置重新把Generate netlist for functional simulation only 設置成OFF。

      b)指定延時文件

      這里,region要為頂層文件在tb里的例化名。c)運行,查看波形,波形帶有延時

      4.用tcl文件.do 進行modelsim仿真

      在modelsim中使用do文件是非常方便的進行仿真的一種方法,的項目比較大,特別是幾個人分開做的時候,前后模塊的聯(lián)合仿真比較重要,查看的信號比較多,使用了do文件可以自動仿真,省去很多體力活。

      下面是編寫do文件的一般步驟:

      a).quit-sim : 首先退出原來仿真的工程。

      b).cd : 設置工作目錄的路徑,就是你所要建立的工作目錄work要放在哪里。

      c).vlib work

      : 在工作目錄下建立一個work目錄,請注意不要用操作系統(tǒng)直接新建一 個work的文件夾,因為用操作系統(tǒng)建立的work文件夾并沒有modelsim SE自動生成的_info文件。還有個問題是,當你的軟件工程里需要用到軟核時,可能會需要一些庫,但這些庫ISE軟件中是沒有的,此時就需要我們自己新建庫了,并映射到當前目錄下。我們只自己新建的庫一般放在work庫前面建立。

      d).vmap work : 將新建的work庫映射到當前工作目錄下(當前目錄就是第一步中的目錄了)。其他新建的庫也要這樣的方法映射。

      e).vlog +acc –work work “file_path/*.v” : 編譯“file_path”目錄下所有.v文件,并將 其添加進工作庫(work)中,包括IP生成的V文件也要編譯的?;蛘撸簐log-f top_tb.f,top_tb.f是.v的列表文件。編譯時可以分開單獨編譯,但是一定要注意順序,先編譯被調(diào)用的文件。在綜合后仿真和布局布線后仿真的時候,這里添加綜合后網(wǎng)表和tb即可。VHDL 用vcom編譯。

      對于xilinx工程在仿真的時候還需要用到一個文件,那就是glbl.v這個庫文件。它是存放在xilinx安裝目錄下,我們直接編譯它并添加時工作庫(work)就可以了。特別需要說明的是,在仿真軟核的時候,在XPS軟件里點擊simulation-> generate simulation hdl files會在工程目錄中生成一個simulaton文件夾,這個文件夾里的東西就是軟核仿真時所需要的仿真文件了。所以我們需把simulaton里所以的v文件都編譯一次,這樣才能仿真軟核。

      f).vsim-L altera_lib-novopt work.top_tb : 這是沒有調(diào)用IP Core時的仿真命令,注意后面的參數(shù)top_tb必須為Testbench中的模塊名。布局布線后仿真是這里要指定延時文件,vsim-L altera_lib-novopt-sdfmax /top_tb/top=top_v.sdo work.top_tb g).do vawe.do 運行添加wave tcl,這里可以給信號分組,添加顏色,設置波形屬性等。h).run –all 設定運行時間,run 1000ms等。

      i).在do里可以用file copy/file delete 來對臨時文件進行操作。

      至此,modelsim仿真總結完畢。這里僅為了簡單記錄仿真方法和流程,旨在簡單明了,對更深入的和更詳細的有待進一步補充。

      附件 一、testbench 模板

      //////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: // Design Name: // Module Name: // Target Device: // Tool versions: // Description: //

      // Dependencies: //

      // Revision: //

      // Additional Comments: //

      ////////////////////////////////////////////////////////////////////////////////

      `timescale 1ns / 1ps module top_tb;

      //*************************Parameter Declarations****************************** parameter

      CLK_PERIOD = 20;//clk = 50Mhz

      //************************Internal Declarations*********************** //************************** Register Declarations ****************************

      reg

      clk;reg

      reset;

      //********************************Wire Declarations************************** //******************************Main Body of Code*************************** //--initial reg data--initial begin

      end //----------Generate Reference Clock input to tb----------------

      initial

      begin

      clk = 1'b1;end

      always

      #(CLK_PERIOD/2)clk =!clk;

      //--Resets--

      initial

      begin

      rst_n = 1'b1;

      #(10*CLK_PERIOD)rst_n = 1'b0;

      #(100*CLK_PERIOD)rst_n = 1'b1;

      end

      //-----------------------------Data Transfer--

      initial begin

      #(10*CLK_PERIOD);@(negedge data)

      begin

      end end

      //-----------------------------simulation end--

      initial begin #(10*CLK_PERIOD);if()

      //end sign

      begin

      $display(“-------TEST PASSED-------”);

      end else begin

      $display(“

      ERROR: TEST FAILED!

      ”);end $stop;end

      //------------------------Instantiate TOP module------------------------

      top #(.parameter1

      (1),//.parameter2

      (0)

      //)top_inst(.a(a),);

      Endmodule ////////////////////////////////////////////////////////////////////////////////

      附件二、do 模板

      //////////////////////////////////////////////////////////////////////////////// #!/bin/bash #this bash shell document is used to verilog project simulation #author:iyoyoo

      echo “***************** end pre-project ********************************” quit-sim

      echo “***************** go to work dir ********************************” #cd / #cd D:/quartus/EP4CE15F/lcd/simulation

      echo “***************** start to setup work lib************************” vlib work echo “***************** start to compile ******************************” vlog-f top_tb.f

      echo “***************** set up reference library ***********************” vmap altera_lib E:/modeltech_10.1a/altera_lib

      echo “***************** delet pre-temp files *************************” #file delete../simulation/pika_ani.mif #file delete../simulation/modelsim/top_v.sdo

      echo “***************** copy temp file *********************************” #file copy../source/pika_ani.mif../simulation/ #file copy../simulation/modelsim/top_v.sdo../simulation/

      echo “***************** start to simulation **************************” #-pli novas.dll

      ---for debussy #-sdfmax /top_tb/top=top_v.sdo

      -----for post synthesis sim

      vsim-L altera_lib-novopt work.top_tb

      echo “***************** add signal to vawe **************************” do vawe.do

      echo “***************** start to run

      ******************************” run-all

      echo “***************** delete temp files ***************************” #file delete../simulation/pika_ani.mif #file delete../simulation/modelsim/top_v.sdo ////////////////////////////////////////////////////////////////////////////////

      附件三、file.f模板

      //////////////////////////////////////////////////////////////////////////////// +licq_all+ +access+r

      //../simulation/modelsim/top.vo

      -for post synthesis simulation

      ../source/top.v

      ../simulation/top_tb.v

      +libext+vmd+.v-y $QUARTUS_ROOTDIR/eda/sim_lib ////////////////////////////////////////////////////////////////////////////////

      附件三、file.f模板

      ////////////////////////////////////////////////////////////////////////////////

      view signals stucture wave onerror {resume} quietly WaveActivateNextPane {} 0

      #-color Green for all signal is green #-color Green Blue Yellow Pink Orchid Red Salmon Orange

      # top_tb group add wave-itemcolor Blue-noupdate-expand-group top_tb-format Logic-radix hexadecimal /top_tb/*

      # sub group add wave-itemcolor Green-noupdate-expand-group sub-format Logic-radix hexadecimal /top_tb/sub/*

      TreeUpdate [SetDefaultTree] WaveRestoreCursors {{Cursor 1} {10000 ns} 0} configure wave-namecolwidth 364 configure wave-valuecolwidth 100 configure wave-justifyvalue left configure wave-signalnamewidth 0 configure wave-snapdistance 10 configure wave-datasetprefix 0 configure wave-rowmargin 4 configure wave-childrowmargin 2 configure wave-gridoffset 0 configure wave-gridperiod 1 configure wave-griddelta 40 configure wave-timeline 0 configure wave-timelineunits ps update WaveRestoreZoom {10000 ns} {10000 ns}

      ////////////////////////////////////////////////////////////////////////////////

      第三篇:verilog圖像翻轉報告_modelsim仿真

      Verilog大作業(yè)

      系名信息工程系 專業(yè)電子科學與技術 6010202036-李貝 6010202043-王玉斌 6010202034-解海洋 6010202035-冷健 指導教師史再峰

      2012年 10 月 27 日

      BMP(全稱Bitmap)是Window操作系統(tǒng)中的標準圖像文件格式,可以分成兩類:設備相關位圖(DDB)和設備無關位圖(DIB),使用非常廣。它采用位映射存儲格式,除了圖像深度可選以外,不采用其他任何壓縮,因此,BMP文件所占用的空間很大。BMP文件的圖 像深度可選lbit、4bit、8bit及24bit。BMP文件存儲數(shù)據(jù)時,圖像的掃描方式是按從左到右、從下到上的順序。由于BMP文件格式是Windows環(huán)境中交換與圖有關的數(shù)據(jù)的一種標準,因此在Windows環(huán)境中運行的圖形圖像軟件都支持BMP圖像格式。組成

      典型的BMP圖像文件由四部分組成:

      1:位圖頭文件數(shù)據(jù)結構,它包含BMP圖像文件的類型、顯示內(nèi)容等信息;

      2:位圖信息數(shù)據(jù)結構,它包含有BMP圖像的寬、高、壓縮方法,以及定義顏色等信息;

      3:調(diào)色板,這個部分是可選的,有些位圖需要調(diào)色板,有些位圖,比如真彩色圖(24位的BMP)就不需要調(diào)色板;

      4:位圖數(shù)據(jù),這部分的內(nèi)容根據(jù)BMP位圖使用的位數(shù)不同而不同,在24位圖中直接使用RGB,而其他的小于24位的使用調(diào)色板中顏色索引值。對應的數(shù)據(jù)結構

      1:BMP文件組成

      BMP文件由文件頭、位圖信息頭、顏色信息和圖形數(shù)據(jù)四部分組成。

      圖像文件頭

      1)1-2:(這里的數(shù)字代表的是“字”,即兩個字節(jié),下同)圖像文件頭。

      0x4d42=’BM’,表示是Windows支持的BMP格式。(注意:查ascii表B 0x42,M0x4d,bfType 為兩個字節(jié),B為low字節(jié),M為high字節(jié)所以bfType=0x4D42,而不

      是0x424D,但注意)2)3-6:整個文件大小。4690 0000,為00009046h=36934。

      3)7-8:保留,必須設置為0。4)9-10:保留,必須設置為0。

      5)11-14:從文件開始到位圖數(shù)據(jù)之間的偏移量(14+40+4*(2^biBitCount))。4600 0000,為00000046h=70,上面的文件頭就是35字=70字節(jié)。

      位圖信息頭

      6)15-18:位圖圖信息頭長度。

      7)19-22:位圖寬度,以像素為單位。8000 0000,為00000080h=128。

      8)23-26:位圖高度,以像素為單位。9000 0000,為00000090h=144。

      9)27-28:位圖的位面數(shù),該值

      總是1。0100,為0001h=1。

      10)29-30:每個像素的位數(shù)。有1(單色),4(16色),8(256色),16(64K色,高彩色),24(16M色,真彩色),32(4096M色,增強型真彩色)。1000為0010h=16。

      11)31-34:壓縮說明:有0(不壓縮),1(RLE 8,8位RLE壓縮),2(RLE 4,4位RLE壓縮,3(Bitfields,位域存放)。RLE簡單地說是采用像素數(shù)+像素值的方式進行壓縮。T408采用的是位域存放方式,用兩個字節(jié)表示一個像素,位域分配為r5b6g5。圖中0300 0000為00000003h=3。12)35-38:用字節(jié)數(shù)表示的位圖數(shù)據(jù)的大小,該數(shù)必須是4的倍數(shù),數(shù)值上等于(≥位圖寬度的最小的4的倍數(shù))×位圖高度×每個像素位數(shù)。0090 0000為00009000h=80×90×2h=36864。

      13)39-42:用象素/米表示的水平分辨率。A00F 0000為0000 0FA0h=4000。

      14)43-46:用象素/米表示的垂直分辨率。A00F 0000為0000 0FA0h=4000。

      15)47-50:位圖使用的顏色索引數(shù)。設為0的話,則說明使用所有調(diào)色板項。

      16)51-54:對圖象顯示有重要影響的顏色索引的數(shù)目。如果是0,表示都重要。彩色板

      17)(55+0)到(50-1+2^biBitCount):彩色板規(guī)范。對于調(diào)色板中的每個表項,用下述方法

      來描述RGB的值: 1字節(jié)用于藍色分量 1字節(jié)用于綠色分量 1字節(jié)用于紅色分量

      1字節(jié)用于填充符(設置為0)對于24-位真彩色圖像就不使用彩色板,因為位圖中的RGB值就代表了每個象素的顏色。

      如,彩色板為00F8 0000 E007 0000 1F00 0000 0000 0000,其中:

      00F8為F800h = 1111 1000 0000 0000(二進制),是藍色分量的掩碼。

      E007 為 07E0h = 0000 0111 1110 0000(二進制),是綠色分量的掩碼。

      1F00為001Fh = 0000 0000 0001 1111(二進制),是紅色分量的掩碼。

      0000 總設置為0。

      將掩碼跟像素值進行“與”運算再進行移位操作就可以得到各色分量值??纯囱诖a,就可以明白事實上在每個像素值的兩個字節(jié)16位中,按從高到低取5、6、5位分別就是r、g、b分量值。取出分量值后把r、g、b值分別乘以8、4、8就可以補齊第個分量為一個字節(jié),再把這三個字節(jié)按rgb組合,放入存儲器(同樣要反序),就可以轉換為24位標準BMP格式

      了。圖像數(shù)據(jù)陣列

      18)55(無調(diào)色板)-bfSize:每兩個字節(jié)表示一個像素。陣列中的第一個字節(jié)表示位圖左下角的象素,而最后一個字節(jié)表示位圖右上角的象素。

      存儲算法

      BMP文件通常是不壓縮的,所以它們通常比同一幅圖像的壓縮圖像文件格式要大很多。例如,一個800×600的24位幾乎占據(jù)1.4MB空間。因此它們通常不適合在因特網(wǎng)或者其它低速或者有容量限制的媒介上進行傳輸。根據(jù)顏色深度的不同,圖像上的一個像素可以用一個或者多個字節(jié)表示,它由n/8所確定(n是位深度,1字節(jié)包含8個數(shù)據(jù)位)。圖片瀏覽器等基于字節(jié)的ASCII值計算像素的顏色,然后從調(diào)色板中讀出相應的值。更為詳細的信息請參閱下面關于位圖文件的部分。n位2n種顏色的位圖近似字節(jié)數(shù)可以用下面的公式計算:BMP文件大小約等于 54+4*2的n次方+(w*h*n)/8,其中高度和寬度都是像素數(shù)。需要注意的是上面公式中的54是位圖文件的文件頭,是彩色調(diào)色板的大小。另外需要注意的是這是一個近似值,對于n位的位圖圖像來說,3 [1] 盡管可能有最多2n中顏色,一個特定的圖像可能并不會使用這些所有的顏色。由于彩色調(diào)色板僅僅定義了圖像所用的顏色,所以實際的彩色調(diào)色板將小于。如果想知道這些值是如何得到的,請參考下面文件格式的部分。由于存儲算法本身決定的因素,根據(jù)幾個圖像參數(shù)的不同計算出的大小與實際的文件大小將會有一些細小的差別。源代碼:

      `timescale 1ns/100ps module transport;parameter longsize=65554;reg [24:1] meme[longsize:1],b;

      integer e,m,n,i,j,w,clk;

      always@(*)begin initial fork begin w=$fopen(“l(fā)ena.bmp”,“rb”);

      e=$fread(meme,w);

      $fclose(w);end always #50 clk=~clk;

      join always begin

      m=$fopen(“l(fā)ena.txt”);

      n=0;

      always@(posedge clk)

      begin repeat(18)begin

      n=n+1;b=meme[n];

      $fwrite(m,“%h”,b);

      end end

      always@(posedge clk)

      begin

      for(j=0;j<=255;j=j+1)for(i=1;i<=256;i=i+1)

      begin n=18+256*i-j;b=meme[n];

      $fwrite(m,“%h”,b);end end

      $fclose(m);

      end

      end endmodule

      仿真后Objects中的數(shù)值:

      仿真后波型:

      轉換后在lena.txt中的數(shù)值:

      使用到的軟件:

      在winhex中的數(shù)值:

      原圖

      經(jīng)verilog轉換后的圖:

      設計說明書: 首先用$fread系統(tǒng)任務將BMP圖片的二進制代碼讀入存儲器meme中;由initial子語句產(chǎn)生clk時鐘信號;由于讀出的二進制代碼的前54個字節(jié)是BMP位圖的基本代碼,因此在對圖片進行翻轉時前54個字節(jié)的位置不變。由于文件格式為256*256*24bit文件,所以后面為256*256個像素,每24位代表一個像素,因為BMP文件的數(shù)據(jù)是從左到右,從下到上的。也就是說,從文件中最先讀到的是圖象最下面一行的左邊第一個象素,然后是左邊第二個象素??接下來是倒數(shù)第二行左邊第一個象素,左邊第二個象素??依次類推,最后得到的是最上面一行的最右一個象素。所以要實現(xiàn)圖片的順時針旋轉應該把meme中像素逆時針旋轉90

      度。

      其次,在always子語句中用repeat語句在每一個clk上升沿把meme中的前十八個單元經(jīng)緩存器b依次讀入lena.txt中。然后用for語句在每一個clk信號上升沿來臨時把翻轉后256*256

      個像素經(jīng)緩存器b依次讀入lena.txt中。

      最后用WinHex軟件把得到的lena.txt文件轉換成二進制數(shù)據(jù)另存為.Bmp文件即可得到翻轉

      后的圖片。李貝大作業(yè)工作總結

      這次的大作業(yè)對我們每一個人都是一個挑戰(zhàn),以前,我們學得知識很死,總不會學以致用,每天都感覺無所事事。通過這次大作業(yè)的完成,鍛煉了自己的解決問題能力。

      剛接觸這個大作業(yè)的時候,給人一種很高端的感覺,但也意味著一切都待從頭開始,首先就是對BMP文件的理解,經(jīng)過大量的查閱資料,知道了BMP文件的構成,了解了對于256*256*24bit文件,其大小應該為256*256*3+54=196662字節(jié);自此豁然開朗;對于bmp文件和2進制之間轉化的問題,經(jīng)過許多曲折,終于得到了winhex,經(jīng)過親手應用,逐漸掌握了這個軟件,完成了2進制與bmp文件之間的轉化;在編寫程序時,同樣遇到了很大的阻力,感覺課堂上學的東西完全不夠用,通過自己以及團隊對verilog語言的進一步學習,知道了其系統(tǒng)函數(shù)$fread可以從bmp文件中讀取二進制數(shù)字,在對時鐘信號處理時,對周期的大小也進行了考慮,通過這次大作業(yè),使我更加熟悉了硬件描述語言,對modelsim這款軟件的操作也更加熟練啦,懂得了團隊合作的重要性!總之,收獲很大!

      冷健大作業(yè)工作總結

      終于完成了這次verilog大作業(yè)。在完成大作業(yè)的過程中,我們小組遇見了不少的難題。遇到很多不會的東西,但是通過我與小組隊員的通力合作,通過請教專業(yè)的同學,通過上網(wǎng) 7 搜索資料。我們還是完成了。雖然有點不盡如人意。通過這次的大作業(yè),讓我們更加深刻的了解了合作的意義。組員之間相互合作,那就無論什么困難都可以解決。這就是團隊力量的重要性。還有一點感想就是打鐵還需自身硬。自己沒有點真功夫是不行的。所以平時一定要多積累,多看書,平時多看書,那么實際生活中就多一條解決途徑。就可以少走些彎路,少吃些苦。?還有一點,我們需要仔細和耐性,由于在編寫程序的過程中,有一些疏忽和遺漏,總是個別字符出錯或者符號出錯?;仡^又得花時間去檢查去糾正。所以就必須特別強調(diào)細心

      和耐心。以上就是我的心得。解海洋大作業(yè)工作總結

      在這次的大作業(yè),使我懂得了,知識與實踐動手能力的不同,雖然經(jīng)過一段時間的verilog的學習,對語法知識有一定的了解,但真正要自己動手還是有所能力的欠缺。而且還不知道從何入手,還是參考了前輩一些經(jīng)驗,知道了怎么做,按什么順序做。首先了解BMP位圖的格式,還要想到怎么把圖讀進去等等很多的問題。不過在這次的鍛煉中,我對verilog語言有了更深的理解,同時也學到小組合作的精神。

      王玉斌大作業(yè)工作總結

      這次verilog大作業(yè)是四個人一起完成的作品,在這次大作業(yè)中學到了很多,雖然有些地方和老師的要求,但是在考試的緊張復習中還是完成了大作業(yè)。讓我學到了很多關于verilog圖像相位的知識,對于以后的學習有很大幫助。

      在完成作業(yè)過程中遇到了很多困難:

      首先,我們不知道BMP圖片能直接轉換為二進制代碼,后來跟同學交流了解了可以直接轉換為二進制代碼,BMP圖片輸入的時候出現(xiàn)了輸入不進去的問題。還有在處理256*256的圖片時,我們誤認為把一張圖片壓縮成256*256就可以,后來才發(fā)現(xiàn)是剪切,二不是壓縮,這樣導致后來讀出的文件中含有不確定值X。

      其次是起初我們仿真不出波形,開始不知道從何下手,通過我們共同努力,從網(wǎng)上,課本,資料查找,發(fā)現(xiàn)我們的仿真時間選擇過小。導致波形無法顯示,最后增大了仿真時間,得到

      了波形。

      最后,個人覺得有些地方用matlab可以更簡便,比如把程序直接導入matlab函數(shù)中,方便以后調(diào)用。總之,大作業(yè)的成功是我們四個人共同努力的成果,讓我們學到了很多課堂上沒學到的東西,同時也遇到了很多困難,也有很多分歧,但是最終在一起的努力下我們完成大

      作業(yè)。

      第四篇:altera_modelsim6.1g仿真總結

      軟件環(huán)境說明:quartusII 7.2 sp3+altera_modelsim6.1g

      (作者:劉國華)

      1,軟件的安裝

      詳細請看《如何破解ModelSim-Altera 6.1g.pdf》。(一個注意的地方就是環(huán)境變量設置完后一定要重新啟動)2,軟件的設置

      《如何解決在Quartus II無法使用ModelSim-Altera模擬的問題.pdf》。3,用altera_modelsim6.1g做功能仿真,設置地方有3處如下:

      接著就是運行仿真軟件,進行仿真: 方法有兩種:

      ①編譯完后,通過自動運行

      ②編譯完后,手動運行,一般運行Gate Level Simulation

      仿真圖如下,由于是功能仿真,所以沒有延時信息出現(xiàn):

      4,關于do文件的使用技巧問題:

      執(zhí)行的默認腳本在:工程所在目錄simulationmodelsim下,例如我的工程:

      該do文件的內(nèi)容為: transcript on if {[file exists gate_work]} { #判斷庫是否存在,存在的話就先刪除

      vdel-lib gate_work-all } vlib gate_work

      #建立一個庫 vmap work gate_work #映射庫

      vlog-vlog01compat-work work +incdir+.{counter.vo} #編譯文件 vlog-vlog01compat-work work +incdir+E:/pratice/verilog/my_counter {E:/pratice/verilog/my_counter/testbench.v}

      #編譯文件 vsim-t 1ps-L cyclone_ver-L gate_work-L work top_tb #啟動仿真 add wave * #把testbench.v的頂層信號加入到波形窗口中 view structure view signals #打開信號窗口 run –all #執(zhí)行仿真、modelsim窗口指示的就是這個腳本:

      如把以下的選項勾起,并指定一個do文件:

      這個時候上面那個counter_run_msim_gate_verilog.do文件的腳本就會發(fā)生以下變化: transcript on if {[file exists gate_work]} { vdel-lib gate_work-all } vlib gate_work vmap work gate_work

      vlog-vlog01compat-work work +incdir+.{counter.vo} vlog-vlog01compat-work work +incdir+E:/pratice/verilog/my_counter {E:/pratice/verilog/my_counter/testbench.v}

      vsim-t 1ps-L cyclone_ver-L gate_work-L work top_tb #執(zhí)行自己寫的do文件,這樣的話,就可以很好的控制自己想看的信號 do E:/pratice/verilog/my_counter/simulation/modelsim/my.do my.do文件如下: view signal view wave add wave * #將設計文件的內(nèi)部信號cnt以無符號十進制的形式加入到波形圖 add wave-radix unsigned /top_tb/tb_counter/cnt

      run –all

      5,用altera_modelsim6.1g做布局布線后的仿真(后仿真),設置地方有2處如下:

      仿真圖如下,可以看到下圖明顯存在延時信息:

      第五篇:仿真機總結

      七月仿真機總結

      這個月學習班仿真機我們練習了事故處理和冷態(tài)啟動,本次的練習總結如下:

      事故處理過程中我主要是配合鍋爐輔機的調(diào)整。

      一、空預器跳閘,立即關閉各風煙擋板,打掉一臺磨,調(diào)整爐膛負壓正常,視壓力快速減負荷,視排煙溫度,調(diào)整燃燒。仿真機三臺磨可以維持排煙溫度,正常運行中如果無法維持再打掉一臺磨投一層油槍,保證燃燒穩(wěn)定。

      二、兩臺磨組斷煤,立即加大運行磨組出力,同時投AC層油槍,將跳閘磨冷風全開,熱風全關,防止磨出口溫度高跳閘。視壓力減負荷。調(diào)整監(jiān)視好各水位、氣溫。

      三、一臺電泵跳閘,立即將另一臺電泵出力加到最大,打掉一臺磨,快速減負荷,視水位繼續(xù)減小磨出力。由于一臺電泵運行氣溫波動比較大加強調(diào)整。待水位穩(wěn)定后檢查備用泵,處理跳閘泵,盡快恢復。

      四、減溫水全部中斷,立即打掉一臺磨,降低其它磨組出力,適當減負荷,同時將減溫水調(diào)整門關至百分之十左右,防止突然來水氣溫突降。

      冷態(tài)啟動過程從設備的檢查恢復到點火掛閘。期間操作還算順利,但在最后掛閘后汽機開始沖轉沒能及時發(fā)現(xiàn),檢查不到位,粗心大意。

      本次事故過程中我負責加減負荷,但現(xiàn)在小網(wǎng)運行,加減負荷不能大幅度操作,遇到事故也不能隨便解除AGC。這也給我們敲響了警鐘,在今后遇到問題一定要多考慮,切記盲目操作。加強學習,保證機組的安全運行。

      童曉霖

      下載Modelsim 仿真方法總結word格式文檔
      下載Modelsim 仿真方法總結.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現(xiàn)有涉嫌版權的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權內(nèi)容。

      相關范文推薦

        仿真復習總結范文大全

        系統(tǒng)的特性:整體性、管良性、目的性、環(huán)境適應性 ? ? ? ? 復習要點 系統(tǒng)仿真的概述 系統(tǒng)仿真中的隨機變量 系統(tǒng)仿真的模型 ? 系統(tǒng)仿真的結果分析? 系統(tǒng)仿真的方法? 系統(tǒng)仿真的應用?......

        仿真繪圖總結(大全)

        Simulink仿真繪圖總結:建議使用方法4,方法1,2不宜使用。 1. 運行仿真模型,用Scope觀察結果,用ALT+PrintScreen抓取圖形,Ctrl+V粘貼到Word。2. 使用Scope打印功能,在Word中插入圖形......

        仿真培訓總結

        仿真培訓總結 今天是我第一次學習**電廠仿真機系統(tǒng),我先從冷態(tài)啟動開始學習。首先是投入水系統(tǒng),依次投入循環(huán)水,開式水,凝輸水,汽包上水,除氧器上水,凝汽器上水,凝結水,閉式水,定冷水......

        仿真培訓基地總結

        ××發(fā)電廠仿真培訓基地總結 ××××年將要過去,回顧仿真機一年的培訓情況,在各級領導的指導下我們做了大量的工作,取得了一定的成果,簡要總結如下: 一、對內(nèi)培訓:加強對內(nèi)培訓,夯......

        仿真教學總結

        仿真教學工作總結 大同電力高級技工學校 韓云 2010年10月 仿真教學工作總結 大同電力高級技工學校 韓云 我于2006年被評為仿真高級指導教師后,主要從事仿真專業(yè)課教學,四多......

        運動仿真總結

        一. 用于變形物體或特殊軌跡運動的物體 1.做關聯(lián)動畫時,注意“會變形的零件”要在“裝配體中”(插入新零件)建模得到,好讓新零件與其他零件相應部位關聯(lián),從而使改變這些原有零件......

        仿真培訓總結

        仿真培訓總結 2011年7月25日至29日,由中國化工教育協(xié)會與北京東方仿真軟件技術有限公司聯(lián)合舉辦的2011年“假期仿真軟件培訓班”在北京電子科技職業(yè)學院舉行,共有來自全國十幾......

        外貿(mào)仿真實驗總結

        通過上機實際操作,比較深刻的了解到外貿(mào)實務當中的一些工作。通過仿真的實際操作,較為熟悉的掌握了外貿(mào)出口的部分技能,以下是對這一學期上課內(nèi)容的小結: 一、達成交易: 1.與客戶......