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

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

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

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

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

      電子科技大學(xué)逆向工程實(shí)驗(yàn)報(bào)告作業(yè)[五篇]

      時(shí)間:2019-05-15 08:57:30下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《電子科技大學(xué)逆向工程實(shí)驗(yàn)報(bào)告作業(yè)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《電子科技大學(xué)逆向工程實(shí)驗(yàn)報(bào)告作業(yè)》。

      第一篇:電子科技大學(xué)逆向工程實(shí)驗(yàn)報(bào)告作業(yè)

      電子科技大學(xué)

      學(xué)生姓名:馬儂學(xué)

      號(hào):

      指導(dǎo)教師:何興高

      期:實(shí) 驗(yàn) 報(bào) 告

      20152*03**0*

      2016.7.15

      一. 題目名稱:簡(jiǎn)易記事本軟件逆向分析 二. 題目?jī)?nèi)容

      由于記事本功能簡(jiǎn)單,稍有經(jīng)驗(yàn)的程序員都可以開發(fā)出與記事本功能近似的小軟件,所以在一些編程語(yǔ)言工具書上也會(huì)出現(xiàn)仿照記事本功能作為參考的示例。為了便于分析因此選取了一個(gè)簡(jiǎn)易的記事本,因此本實(shí)驗(yàn)將著重研究從源程序到機(jī)器碼的詳細(xì)過(guò)程而不注重程序本身的功能。另一方面簡(jiǎn)易源程序代碼約130多行。本實(shí)驗(yàn)?zāi)康氖橇私庠闯绦蚴窃趺匆徊讲阶兂蓹C(jī)器碼的又是怎么在計(jì)算機(jī)上運(yùn)行起來(lái)的。

      三. 知識(shí)點(diǎn)及介紹

      利用逆向工程技術(shù),從可運(yùn)行的程序系統(tǒng)出發(fā),運(yùn)用解密、反匯編、系統(tǒng)分析、程序理解等多種計(jì)算機(jī)技術(shù),對(duì)軟件的結(jié)構(gòu)、流程、算法、代碼等進(jìn)行逆向拆解和分析,推導(dǎo)出軟件產(chǎn)品的源代碼、設(shè)計(jì)原理、結(jié)構(gòu)、算法、處理過(guò)程、運(yùn)行方法及相關(guān)文檔等。隨著用戶需求的復(fù)雜度越來(lái)越高軟件開發(fā)的難度也在不斷地上升快速高效的軟件開發(fā)已成為項(xiàng)目成敗的關(guān)鍵之一。為了提高程序員的產(chǎn)品率開發(fā)工具的選擇尤為重要因?yàn)殚_發(fā)工具的自動(dòng)化程度可以大大減少程序員繁瑣重復(fù)的工作使其集中關(guān)注他所面臨的特定領(lǐng)域的問(wèn)題。為此當(dāng)前的IDE不可避地要向用戶隱藏著大量的操作細(xì)節(jié)而這些細(xì)節(jié)包含了大量的有價(jià)值的技術(shù)。

      四. 工具及介紹:

      在對(duì)軟件進(jìn)行逆向工程時(shí),不可避免地需要用到多種工具,工具的合理使用,可以加快調(diào)試速度,提高逆向工程的效率。對(duì)于逆向工程的調(diào)試環(huán)節(jié)來(lái)說(shuō),沒(méi)有動(dòng)態(tài)調(diào)試器將使用的調(diào)試工作很難進(jìn)行。可以看出,各種有效的工具在逆向工程中占據(jù)著相當(dāng)重要的地位,有必要對(duì)它們的用法做一探討。

      PE Explorer簡(jiǎn)介:PE Explorer是功能超強(qiáng)的可視化Delphi、C++、VB程序解析器,能快速對(duì)32位可執(zhí)行程序進(jìn)行反編譯,并修改其中資源。

      功能極為強(qiáng)大的可視化漢化集成工具,可直接瀏覽、修改軟件資源,包括菜單、對(duì)話框、字符串表等; 另外,還具備有 W32DASM 軟件的反編譯能力和PEditor 軟件的 PE 文件頭編輯功能,可以更容易的分析源代碼,修復(fù)損壞了的資源,可以處理 PE 格式的文件如:EXE、DLL、DRV、BPL、DPL、SYS、CPL、OCX、SCR 等 32 位可執(zhí)行程序。該軟件支持插件,你可以通過(guò)增加插件加強(qiáng)該軟件的功能,原公司在該工具中捆綁了 UPX 的脫殼插件、掃描器和反匯編器.,出口,進(jìn)口和延遲導(dǎo)入表的功能,使您可以查看所有的可執(zhí)行文件使用的外部功能,和其中包含的DLL或庫(kù)的基礎(chǔ)上進(jìn)行分類的結(jié)果。這里一個(gè)非常有用的功能是語(yǔ)法的Viewer,它顯示功能的調(diào)用語(yǔ)法,它知道和可以讓你擴(kuò)大自己的定義的語(yǔ)法數(shù)據(jù)庫(kù)。非常好用。

      Dumpbin是VC自帶的二進(jìn)制轉(zhuǎn)儲(chǔ)工具可以將PE/COFF文件以文字可讀的方式顯示出來(lái)。Microsoft COFF 二進(jìn)制文件轉(zhuǎn)儲(chǔ)器(DUMPBIN.EXE)顯示有關(guān)通用對(duì)象文件格式(COFF)二進(jìn)制文件的信息??梢允褂?DUMPBIN 檢查 COFF 對(duì)象文件、標(biāo)準(zhǔn) COFF 對(duì)象庫(kù)、可執(zhí)行文件和動(dòng)態(tài)鏈接庫(kù)(DLL)。具有提供此DLL中所輸出的符號(hào)的清單的功能。

      LINK.exe 將通用對(duì)象文件格式(COFF)對(duì)象文件和庫(kù)鏈接起來(lái),以創(chuàng)建可執(zhí)行(.exe)文件或動(dòng)態(tài)鏈接庫(kù)(DLL)。

      五. 源程序

      notepad.cpp:

      notepad::notepad(QWidget *parent): QMainWindow(parent), ui(new Ui::notepad){ ui->setupUi(this);this->setWindowTitle(“new file”);QObject::connect(ui->NewFileaction, SIGNAL(triggered()), this, SLOT(NewFile()));QObject::connect(ui->OpenFileaction, SIGNAL(triggered()), this, SLOT(OpenFile()));QObject::connect(ui->SaveFileaction, SIGNAL(triggered()), this, SLOT(SaveFile()));QObject::connect(ui->SaveAsFileaction, SIGNAL(triggered()), this, SLOT(SaveAsFile()));QObject::connect(ui->Coloraction, SIGNAL(triggered()), this, SLOT(SetColor()));QObject::connect(ui->Fontaction, SIGNAL(triggered()),this, SLOT(SetFont()));QObject::connect(ui->Aboutaction, SIGNAL(triggered()), this, SLOT(About()));QObject::connect(ui->Helpaction, SIGNAL(triggered()), this, SLOT(Help()));} notepad::~notepad(){ delete ui;} void notepad::changeEvent(QEvent *e){ QMainWindow::changeEvent(e);switch(e->type()){ case QEvent::LanguageChange: ui->retranslateUi(this);break;default: break;} } void notepad::NewFile(){ this->setWindowTitle(“new file”);ui->Text->clear();} void notepad::OpenFile(){ QString filename = QFileDialog::getOpenFileName(this, “get file”,QDir::currentPath(), “(*.*)”);if(!filename.isEmpty()){ QFile *file = new QFile;file->setFileName(filename);if(file->open(QIODevice::ReadOnly)== true){ QTextStream in(file);ui->Text->setText(in.readAll());this->setWindowTitle(filename);} else { QMessageBox::information(this, “ERROR Occurs”, “file not exist”);} file->close();delete file;} } void notepad::SaveFile(){ QString filename = this->windowTitle();// if(filename.compare(“new file”)!= 0)// { QFile *file = new QFile;file->setFileName(filename);if(file->open(QIODevice::WriteOnly)== true){ QTextStream out(file);outtoPlainText();file->close();delete file;} else { QMessageBox::information(this, “ERROR Occurs”, “file open error”);} // } } void notepad::SaveAsFile(){ QString filename = QFileDialog::getSaveFileName(this, “save file”,QDir::currentPath());QFile *file = new QFile;file->setFileName(filename);if(file->open(QIODevice::WriteOnly)== true){ QTextStream out(file);outtoPlainText();file->close();delete file;} else { QMessageBox::information(this, “ERROR Occurs”, “file open error”);} } void notepad::SetColor(){ QColor color = QColorDialog::getColor(Qt::white, this);if(color.isValid()== true){ ui->Text->setTextColor(color);} else { QMessageBox::information(this, “ERROR Occurs”, “set color error”);} } void notepad::SetFont(){ bool ok;QFont font = QFontDialog::getFont(&ok, QFont(“Arial”, 18), this, “set font”);if(ok){ ui->Text->setFont(font);} else { QMessageBox::information(this, “ERROR Occurs”, “set font error”);} } void notepad::About(){ Dialog mychild;mychild.exec();} void notepad::Help(){ QDesktopServices::openUrl(QUrl("004km.cn并不是PE文件,但它也是可執(zhí)行文件,它運(yùn)行的環(huán)境是虛擬8086模式,并非保護(hù)模式。

      由PE格式的布局圖。PE文件使用的是一個(gè)平面地址空間,所有代碼和數(shù)據(jù)都合并在一起,組成一個(gè)很大的結(jié)構(gòu)。主要有:.text是在編譯或匯編結(jié)束時(shí)產(chǎn)生的一種塊,它的內(nèi)容全是指令代碼;.rdata是運(yùn)行期只讀數(shù)據(jù);.data是初始化的數(shù)據(jù)塊;.bss是未初始化的數(shù)據(jù)節(jié);.idata包含其它外來(lái)DLL的函數(shù)及數(shù)據(jù)信息,即輸入表;.rsrc 包含模塊的全部資源:如圖標(biāo)、菜單、位圖等。

      現(xiàn)在使用PEExplorer對(duì)編譯的notepad.exe程序進(jìn)行逆向。如圖5所示。由圖可以知道程序入口點(diǎn)是0x000028DFh。當(dāng)程序被加載到內(nèi)存執(zhí)行時(shí),第一條指令將從這里取得。注意,這個(gè)地址是相對(duì)虛擬地址(RVM),程序的入口點(diǎn)地址還要道基地址才能得出。

      PEExplorer逆向notepad.exe和數(shù)據(jù)目錄

      節(jié)區(qū)頭數(shù)據(jù),分別是讀到了數(shù)據(jù)目錄和區(qū)段頭信息。

      4)調(diào)用協(xié)定

      調(diào)用協(xié)定規(guī)定了函數(shù)調(diào)用的參數(shù)傳遞方式及返回值的傳遞方式。它是應(yīng)用程序二進(jìn)制兼容的必要面規(guī)范。常見的調(diào)用協(xié)定有如下方式:1__stdcall 用于調(diào)用Win32API函數(shù)。采用__stdcall約定時(shí),函數(shù)參數(shù)按照從右到左的順序入棧,被調(diào)用的函數(shù)在返回前清理傳送參數(shù)的棧,函數(shù)參數(shù)個(gè)數(shù)固定。由于函數(shù)體本身知道傳進(jìn)來(lái)的參數(shù)個(gè)數(shù),因此被調(diào)用的函數(shù)可以在返回前用一條retn指令直接清理傳遞參數(shù)的堆棧。2_cdecl: 是C調(diào)用約定,按從右至左的順序壓參數(shù)入棧,由調(diào)用者把參數(shù)彈出棧。對(duì)于傳送參數(shù)的內(nèi)存棧是由調(diào)用者來(lái)維護(hù)的(正因?yàn)槿绱耍瑢?shí)現(xiàn)可變參數(shù)的函數(shù)只能使用該調(diào)用約定)。另外,在函數(shù)名修飾約定方面也有所不同。fastcall 快速調(diào)用方式。它的主要特點(diǎn)就是快,因?yàn)樗峭ㄟ^(guò)寄存器來(lái)傳送參數(shù)的。實(shí)際上,它用ECX和EDX傳送前兩個(gè)雙字(DWORD)或更小的參數(shù),剩下的參數(shù)仍舊自右向左壓棧傳送,被調(diào)用的函數(shù)在返回前清理傳送參數(shù)的內(nèi)存棧。4參數(shù)傳遞分析在目標(biāo)程序中有這樣一個(gè)函數(shù)聲明如下:

      BOOLShowFileInfo(HWNDhwnd,HDChDC,HDROPhDropInfo)發(fā)生調(diào)用地方為:

      ShowFileInfo(hwnd,hDC,hDropInfo);可以看到最后一條指令是堆棧平衡用的,傳遞了三個(gè)參數(shù),每個(gè)參數(shù)的大小都為4個(gè)字節(jié),所以大小剛好是0x0Ch。還可以看到第一個(gè)壓棧的參數(shù)是hDropInfo,另外兩參數(shù)都是用ebp來(lái)做基址尋址取到的,說(shuō)明前兩個(gè)參數(shù)不是局部變量。參數(shù)傳遞方向從右到左依次壓棧。

      5)堆棧平衡

      參數(shù)傳遞后由調(diào)用者或被調(diào)用者負(fù)責(zé)平衡堆棧,但函數(shù)使用了局部變量,那堆棧又是如何保持平衡的呢?這里引入了一個(gè)叫棧幀(StackFrame)的概念。棧幀實(shí)質(zhì)就一個(gè)函數(shù)棧所用的堆??臻g。每個(gè)函數(shù)都平衡了,那么整個(gè)程序棧也就平衡了。如圖8所示,函數(shù)體的第一條指令就是保存ebp寄存器,它存的就是上一個(gè)函數(shù)的棧幀邊界。第二條指令就是制定當(dāng)前函數(shù)的棧幀的起始位置。第三條

      指令就是為函數(shù)分配局部變量的堆??臻g了。函數(shù)棧的平衡

      根椐VC/C++的調(diào)用協(xié)定,寄存器EAX、ECX、EDX是易變寄存器,也就是說(shuō)調(diào)用函數(shù)不能假定被調(diào)用函數(shù)不改變它們的值。因此,調(diào)用函數(shù)想保留它們的值,在調(diào)用一個(gè)函數(shù)之前應(yīng)自已先把它們保存起來(lái)了。另外的5個(gè)通用寄存器(EBX、ESP、EBP、ESI、EDI),則是非易變的。被調(diào)用函數(shù)在使用它們之前必須先保存。

      所以上圖的匯編指令就不難理解了。函數(shù)執(zhí)行完畢后,只需把先前保存在棧中的EBP彈到ESP就保持了棧的平衡了。情況確實(shí)如此。如圖9所示,最后一條指令是popebp,然后返回。根據(jù)返回指令,還可行知此函數(shù)使用的是cdecl調(diào)用協(xié)定。因?yàn)樗鼪](méi)有參數(shù)的堆棧平衡。函數(shù)返回平衡堆棧 七. 心得體會(huì)

      逆向工程是一個(gè)實(shí)踐性很強(qiáng)的課程,通過(guò)上機(jī)實(shí)驗(yàn)使我在本次課程的學(xué)習(xí)中收獲很多,通過(guò)對(duì)程序的逆向分析,本人對(duì)計(jì)算機(jī)技術(shù)有了更深的認(rèn)識(shí)。感謝何興高老師的諄諄教誨和精彩地講課,何老師為人隨和熱情,治學(xué)嚴(yán)謹(jǐn)細(xì)心。同時(shí)希望能進(jìn)一步學(xué)習(xí)更多和逆向工程相關(guān)的知識(shí)。

      第二篇:現(xiàn)代電子實(shí)驗(yàn)報(bào)告 電子科技大學(xué)

      基于FPGA的現(xiàn)代電子實(shí)驗(yàn)設(shè)計(jì)報(bào)告

      ——數(shù)字式秒表設(shè)計(jì)(VHDL)

      學(xué)院:物理電子學(xué)院

      專業(yè):

      學(xué)號(hào):

      學(xué)生姓名:

      指導(dǎo)教師:

      實(shí)驗(yàn)地點(diǎn):

      實(shí)驗(yàn)時(shí)間:

      劉曦 科研樓303

      摘要:

      通過(guò)使用VHDL語(yǔ)言開發(fā)FPGA的一般流程,重點(diǎn)介紹了秒表的基本原理和相應(yīng)的設(shè)計(jì)方案,最終采用了一種基于 FPGA 的數(shù)字頻率的實(shí)現(xiàn)方法。該設(shè)計(jì)采用硬件描述語(yǔ)言VHDL,在軟件開發(fā)平臺(tái)ISE上完成。該設(shè)計(jì)的秒表能準(zhǔn)確地完成啟動(dòng),停止,分段,復(fù)位功能。使用 ModelSim 仿真軟件對(duì)VHDL 程序做了仿真,并完成了綜合布局布線,最終下載到EEC-FPGA實(shí)驗(yàn)板上取得良好測(cè)試效果。

      關(guān)鍵詞:FPGA,VHDL,ISE,ModelSim

      目錄

      緒論.........................................................4

      第一章實(shí)驗(yàn)任務(wù)…………………………………..5

      第二章系統(tǒng)需求和解決方案計(jì)劃………..5

      第三章設(shè)計(jì)思路…………………………………..6

      第四章系統(tǒng)組成和解決方案………………..6

      第五章各分模塊原理……………………………8

      第六章仿真結(jié)果與分析………………………..11

      第七章分配引腳和下載實(shí)現(xiàn)…………………13

      第八章實(shí)驗(yàn)結(jié)論…………………...………………14 緒論:

      1.1 課程介紹:

      《現(xiàn)代電子技術(shù)綜合實(shí)驗(yàn)》課程通過(guò)引入模擬電子技術(shù)和數(shù)字邏輯設(shè)計(jì)的綜合應(yīng)用、基于MCU/FPGA/EDA技術(shù)的系統(tǒng)設(shè)計(jì)等綜合型設(shè)計(jì)型實(shí)驗(yàn),對(duì)學(xué)生進(jìn)行電子系統(tǒng)綜合設(shè)計(jì)與實(shí)踐能力的訓(xùn)練與培養(yǎng)。

      通過(guò)《現(xiàn)代電子技術(shù)綜合實(shí)驗(yàn)》課程的學(xué)習(xí),使學(xué)生對(duì)系統(tǒng)設(shè)計(jì)原理、主要性能參數(shù)的選擇原則、單元電路和系統(tǒng)電路設(shè)計(jì)方法及仿真技術(shù)、測(cè)試方案擬定及調(diào)測(cè)技術(shù)有所了解;使學(xué)生初步掌握電子技術(shù)中應(yīng)用開發(fā)的一般流程,初步建立起有關(guān)系統(tǒng)設(shè)計(jì)的基本概念,掌握其基本設(shè)計(jì)方法,為將來(lái)從事電子技術(shù)應(yīng)用和研究工作打下基礎(chǔ)。

      本文介紹了基于FPGA的數(shù)字式秒表的設(shè)計(jì)方法,設(shè)計(jì)采用硬件描述語(yǔ)言VHDL,在軟件開發(fā)平臺(tái)ISE上完成,可以在較高速時(shí)鐘頻率(48MHz)下正常工作。該數(shù)字頻率計(jì)采用測(cè)頻的方法,能準(zhǔn)確的測(cè)量頻率在10Hz到100MHz之間的信號(hào)。使用ModelSim仿真軟件對(duì)VHDL程序做了仿真,并完成了綜合布局布線,最終下載到芯片Spartan3A上取得良好測(cè)試效果。1.2VHDL語(yǔ)言簡(jiǎn)介: VHDL 的英文全名是 Very-High-Speed Integrated Circuit Hardware Description Language,誕生于 1982 年。1987 年底,VHDL被 IEEE 和美國(guó)國(guó)防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語(yǔ)言。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語(yǔ)句外,VHDL的語(yǔ)言形式和描述風(fēng)格與句法是十分類似于一般的計(jì)算機(jī)高級(jí)語(yǔ)言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱可視部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。

      VHDL語(yǔ)言的特點(diǎn): VHDL 語(yǔ)言能夠成為標(biāo)準(zhǔn)化的硬件描述語(yǔ)言并獲得廣泛應(yīng)用,它自身必然具有很多其他硬件描述語(yǔ)言所不具備的優(yōu)點(diǎn)。歸納起來(lái),VHDL 語(yǔ)言主要具有以下優(yōu)點(diǎn):(1)VHDL 語(yǔ)言功能強(qiáng)大,設(shè)計(jì)方式多樣(2)VHDL 語(yǔ)言具有強(qiáng)大的硬件描述能力(3)VHDL 語(yǔ)言具有很強(qiáng)的移植能力(4)VHDL 語(yǔ)言的設(shè)計(jì)描述與器件無(wú)關(guān)(5)VHDL 語(yǔ)言程序易于共享和復(fù)用 由于 VHDL 語(yǔ)言是一種描述、模擬、綜合、優(yōu)化和布線的標(biāo)準(zhǔn)硬件描述語(yǔ)言,因此它可以使設(shè)計(jì)成果在設(shè)計(jì)人員之間方便地進(jìn)行交流和共享,從而減小硬件電路設(shè)計(jì)的工作量,縮短開發(fā)周期。1.3FPGA簡(jiǎn)介

      FPGA(Field-Programmable Gate Array),即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。

      以硬件描述語(yǔ)言(Verilog或VHDL)所完成的電路設(shè)計(jì),可以經(jīng)過(guò)簡(jiǎn)單的綜合與布局,快速的燒錄至 FPGA 上進(jìn)行測(cè)試,是現(xiàn)代 IC設(shè)計(jì)驗(yàn)證的技術(shù)主流。這些可編輯元件可以被用來(lái)實(shí)現(xiàn)一些基本的邏輯門電路(比如AND、OR、XOR、NOT)或者更復(fù)雜一些的組合功能比如解碼器或數(shù)學(xué)方程式。在大多數(shù)的FPGA里面,這些可編輯的元件里也包含記憶元件例如觸發(fā)器(Flip-flop)或者其他更加完整的記憶塊。系統(tǒng)設(shè)計(jì)師可以根據(jù)需要通過(guò)可編輯的連接把FPGA內(nèi)部的邏輯塊連接起來(lái),就好像一個(gè)電路試驗(yàn)板被放在了一個(gè)芯片里。一個(gè)出廠后的成品FPGA的邏輯塊和連接可以按照設(shè)計(jì)者而改變,所以FPGA可以完成所需要的邏輯功能。

      FPGA一般來(lái)說(shuō)比ASIC(專用集成電路)的速度要慢,實(shí)現(xiàn)同樣的功能比ASIC電路面積要大。但是他們也有很多的優(yōu)點(diǎn)比如可以快速成品,可以被修改來(lái)改正程序中的錯(cuò)誤和更便宜的造價(jià)。廠商也可能會(huì)提供便宜的但是編輯能力差的FPGA。因?yàn)檫@些芯片有比較差的可編輯能力,所以這些設(shè)計(jì)的開發(fā)是在普通的FPGA上完成的,然后將設(shè)計(jì)轉(zhuǎn)移到一個(gè)類似于ASIC的芯片上。另外一種方法是用CPLD(Complex Programmable Logic Device,復(fù)雜可編程邏輯器件)。

      FPGA設(shè)計(jì)流程:

      對(duì)于目標(biāo)文件為FPGA的HDL設(shè)計(jì),其一般流程如下:

      1、文本編輯

      用任何文本編輯器都可以進(jìn)行,通常 VHDL文件保存為vhd文件,Verilog 文件保存為 v文件。

      2、使用編譯工具編譯源文件

      HDL 的編譯器有很多,ACTIVE 公司,MODELSIM 公司,SYNPLICITY 公司,SYNOPSYS 公司,VERIBEST公司等都有自己的編譯器。

      3、邏輯綜合

      將源文件調(diào)入邏輯綜合軟件進(jìn)行綜合。綜合的目的是在于將設(shè)計(jì)的源文件由語(yǔ)言轉(zhuǎn)換為實(shí)際的電路。但是此時(shí)還沒(méi)有在芯片中形成真正的電路。這一步的最終目的是生成門電路級(jí)的網(wǎng)表(Netlist)。

      4、布局、布線

      將第 3 步生成的網(wǎng)表文件調(diào)入 PLD 廠家提供的軟件中進(jìn)行布線,即把設(shè)計(jì)好的邏輯安放到 CPLD/FPGA 內(nèi)。這一步的目的是生成用于下載(編程 Programming)的編程文件。在這一步,將用到第 3 步生成的網(wǎng)表,并根據(jù) CPLD /FPGA 廠商的器件容量,結(jié)構(gòu)等進(jìn)行布局、布線。這就好像在設(shè)計(jì) PCB 時(shí)的布局布線一樣。先將各個(gè)設(shè)計(jì)中的門根據(jù)網(wǎng)表的內(nèi)容和器件的結(jié)構(gòu)放在器件的特定部位。然后,在根據(jù)網(wǎng)表中提供的各門的連接,把各個(gè)門的輸入輸出連接起來(lái)。最后,生成一個(gè)供編程的文件。這一步同時(shí)還會(huì)加一些時(shí)序信息(Timing)到你的設(shè)計(jì)項(xiàng)目中去,以便于你做后仿真。

      5、后仿真

      利用在布局布線中獲得的精確參數(shù),用仿真軟件驗(yàn)證電路的時(shí)序。(也叫布局布線仿真或時(shí)序仿真)。這一步主要是為了確定你的設(shè)計(jì)在經(jīng)過(guò)布局布線之后,是不是還滿足你的設(shè)計(jì)要求。

      6、編程,下載

      如果前幾步都沒(méi)有發(fā)生錯(cuò)誤,并且符合設(shè)計(jì)要求,這一步就可以將由適配器等產(chǎn)生的配置或下載文件通過(guò)編程器或下載電纜下載到目標(biāo)芯片中。

      7、硬件測(cè)試

      硬件測(cè)試的目的是為了在更真實(shí)的環(huán)境中檢驗(yàn) HDL設(shè)計(jì)的運(yùn)行情況,特別是對(duì)于 HDL 程序設(shè)計(jì)上不是十分規(guī)范,語(yǔ)義上含有一定歧義的程序。

      一、實(shí)驗(yàn)任務(wù)——設(shè)計(jì)一個(gè)秒表:

      秒表的計(jì)時(shí)范圍為00’00”00 ~ 59’59”99。有兩個(gè)按鈕開關(guān)Start/Stop和Split/Reset,控制秒表的啟動(dòng)、停止、分段和復(fù)位:

      1,在秒表已經(jīng)被復(fù)位的情況下,按下“Start/Stop”鍵,秒表開始計(jì)時(shí)。

      2,在秒表正常運(yùn)行的情況下,如果按下“Start/Stop”鍵,則秒表暫停計(jì)時(shí)。3,再次按下該鍵,秒表繼續(xù)計(jì)時(shí)。

      4,在秒表正常運(yùn)行的情況下,如果按下“Split/Reset”鍵,顯示停止在按鍵時(shí)的時(shí)間,但秒表仍然在計(jì)時(shí); 5,再次按下該鍵,秒表恢復(fù)正常顯示。

      6,在秒表暫停計(jì)時(shí)的情況下,按下“Split/Reset”鍵,秒表復(fù)位歸零。

      二、系統(tǒng)需求和解決方案計(jì)劃:

      在項(xiàng)目開始設(shè)計(jì)時(shí),首先要確定系統(tǒng)的需求并發(fā)展出一個(gè)針對(duì)這些需求的計(jì)劃。

      按照秒表的設(shè)計(jì)要求,整個(gè)電路需要下面這些組成部分: 2.1 分頻器:

      對(duì)晶體振蕩器產(chǎn)生的時(shí)鐘信號(hào)進(jìn)行分頻,產(chǎn)生時(shí)間基準(zhǔn)信號(hào)。2.2 計(jì)數(shù)器:

      對(duì)時(shí)間基準(zhǔn)脈沖進(jìn)行計(jì)數(shù),完成計(jì)時(shí)功能。2.3 數(shù)據(jù)鎖存器:

      鎖存數(shù)據(jù)使顯示保持暫停。2.4 控制器:

      控制計(jì)數(shù)器的運(yùn)行、停止以及復(fù)位產(chǎn)生鎖存器的使能信號(hào)。2.5 掃描顯示的控制電路:

      包括掃描計(jì)數(shù)器、數(shù)據(jù)選擇器和7段譯碼器,控制8個(gè)數(shù)碼管以掃描方式顯示計(jì)時(shí)結(jié)果。2.6 按鍵消抖電路:

      消除按鍵輸入信號(hào)抖動(dòng)的影響,輸出單脈沖。

      三、設(shè)計(jì)思路:

      從FPGA開發(fā)板的電路可以看出,其不具備對(duì)按鍵輸入的消抖功能,故須編寫消抖功能的模塊代碼。消除按鍵抖動(dòng)的影響;每按一次鍵,只輸出一個(gè)脈沖,其寬度為一個(gè)時(shí)鐘周期。由開發(fā)板電路結(jié)構(gòu)可以看出,其為共陽(yáng)結(jié)構(gòu),故在其運(yùn)行為低有效。

      8個(gè)數(shù)碼顯示管共用一個(gè)段位,故為了將時(shí)鐘顯示在8個(gè)數(shù)碼管上,需要一定頻率(本秒表為1KHz)的信號(hào)進(jìn)行掃描,使得我們?nèi)庋劭瓷先ナ?個(gè)數(shù)碼管同時(shí)顯示的。為了實(shí)現(xiàn)秒表暫停和復(fù)位的功能,需要鎖存器模塊將時(shí)鐘數(shù)據(jù)鎖存起來(lái),并且結(jié)合控制電路滿足秒表的功能。

      FPGA開發(fā)板的晶振頻率為48MHz,而實(shí)際電路需要的頻率為1KHz,故須建立分頻模塊,將48MHz的晶振頻率分頻成1KHz。在構(gòu)建計(jì)數(shù)范圍從00’00”00-59’59”99的秒表時(shí),從數(shù)碼管顯示的角度可知,需要建立模六和模十兩種計(jì)數(shù)模塊進(jìn)行組合形成。設(shè)計(jì)圖如下:

      四、系統(tǒng)組成和解決方案:

      在項(xiàng)目開始設(shè)計(jì)時(shí),首先要確定系統(tǒng)的需求并發(fā)展出一個(gè)針對(duì)這些需求的計(jì)劃。按照數(shù)字式秒表工作原理的描述,需要下面這些主要的子系統(tǒng): 1,控制電路;

      2,由石英振蕩器和數(shù)字分頻器構(gòu)成的時(shí)基信號(hào)發(fā)生器; 3,按鍵開關(guān)(按鍵消抖); 4,計(jì)數(shù)器; 5,數(shù)據(jù)鎖存器; 6,掃描顯示的控制子系統(tǒng)(包括顯示譯碼和掃描控制); 7,六個(gè)數(shù)碼管(LED顯示電路)。

      設(shè)計(jì)框圖如下:

      五、各分模塊原理:

      5.1、48M-1K分頻器

      對(duì)晶振振蕩器產(chǎn)生的時(shí)鐘信號(hào)進(jìn)行分頻,產(chǎn)生時(shí)間基準(zhǔn)信號(hào)。由于FPGA開發(fā)板的晶振頻率為48MHz,故在設(shè)計(jì)分頻器模塊時(shí),為了將頻率分頻成1KHz,即將輸入的信號(hào)源每48000個(gè)周期轉(zhuǎn)換成輸出的一個(gè)周期。因此利用上升沿計(jì)數(shù)手段,將0-47999用16位二進(jìn)制數(shù)表示,而在從0-47999的計(jì)數(shù)過(guò)程中,該二進(jìn)制數(shù)的最高位只有一次狀態(tài)變化,故可取對(duì)應(yīng)二進(jìn)制數(shù)的最高位來(lái)輸出達(dá)到分頻到1KHz的目的。如下代碼為將晶振振蕩器48MHz頻率分頻成1KHz信號(hào):

      5.2、計(jì)數(shù)器

      對(duì)時(shí)間基準(zhǔn)脈沖進(jìn)行計(jì)數(shù),完成計(jì)時(shí)功能。實(shí)現(xiàn)數(shù)字秒表的設(shè)計(jì)需要模6和模10計(jì)數(shù)器進(jìn)行組合??紤]到秒表的暫停和清零等功能,在設(shè)計(jì)計(jì)數(shù)器模塊時(shí),必須有時(shí)鐘輸入端、使能以及清零端。在有時(shí)鐘信號(hào)輸入的情況下,當(dāng)使能端無(wú)效時(shí),計(jì)數(shù)器不能進(jìn)行計(jì)數(shù);當(dāng)清零端有效時(shí),計(jì)數(shù)重新歸為0值。而為了實(shí)現(xiàn)計(jì)數(shù)的目的,故必須將各個(gè)計(jì)數(shù)器級(jí)聯(lián)來(lái)實(shí)現(xiàn)從00’00”00-59’59”99的計(jì)數(shù),使得級(jí)聯(lián)的各技術(shù)模塊有共同的清零端與使能端,因此該單個(gè)模塊需要有輸出進(jìn)位以及該時(shí)刻的計(jì)數(shù)值并且前一級(jí)的進(jìn)位端連在下一級(jí)的使能端上。如下為模6和模10計(jì)數(shù)器代碼:

      5.2.1、模6計(jì)數(shù)器

      為了實(shí)現(xiàn)在秒表計(jì)數(shù)是0-5的計(jì)數(shù)部分,故須設(shè)計(jì)一個(gè)模6計(jì)數(shù)器,輸入時(shí)鐘信號(hào)、使能和清零,遇上升沿則記一次數(shù),當(dāng)從0記到5時(shí),進(jìn)位端(用于與下一級(jí)計(jì)數(shù)器級(jí)聯(lián))有效,且遇上升沿后從5變到0,并且輸出的還有每一時(shí)刻的計(jì)數(shù)值。

      5.2.2、模10計(jì)數(shù)器

      為了實(shí)現(xiàn)在秒表計(jì)數(shù)是0-9的計(jì)數(shù)部分,故須設(shè)計(jì)一個(gè)模10計(jì)數(shù)器,輸入時(shí)鐘信號(hào)、使能和清零,遇上升沿則記一次數(shù),當(dāng)從0記到9時(shí),進(jìn)位端(用于與下一級(jí)計(jì)數(shù)器級(jí)聯(lián))有效,且遇上升沿后從9變到0,并且輸出的還有每一時(shí)刻的計(jì)數(shù)值。

      5.3、控制電路

      控制計(jì)數(shù)器的運(yùn)行、暫停以及復(fù)位;產(chǎn)生鎖存器的使能信號(hào)。從如下狀態(tài)圖可知,在設(shè)計(jì)控制模塊時(shí),為實(shí)現(xiàn)開發(fā)板上控制秒表的運(yùn)行暫停和清零功能,必須設(shè)置兩個(gè)控制輸入端,以及需要時(shí)鐘信號(hào)輸入端。在時(shí)鐘信號(hào)輸入情況下,由狀態(tài)圖顯示,在輸入不同的控制信號(hào)是,控制模塊需輸出信號(hào)控制計(jì)數(shù)器及其他各模塊的清零和使能端,即當(dāng)外部控制運(yùn)行/暫停鍵首次按下時(shí),控制模塊輸出控制技術(shù)模塊最開始的計(jì)數(shù)器模塊使能有效,各模塊清零無(wú)效;當(dāng)?shù)诙伟聪聲r(shí)為暫停信號(hào),控制模塊控制鎖存器鎖存并控制顯示。當(dāng)清零控制鍵按下時(shí),控制模塊控制技術(shù)模塊清零,故要兩個(gè)輸出使能端。

      5.4、鎖存器

      鎖存數(shù)據(jù),使顯示保持鎖定。為達(dá)到鎖存數(shù)據(jù)目的,則必須要有對(duì)應(yīng)的8個(gè)數(shù)碼顯示數(shù)據(jù)輸入,當(dāng)其中兩個(gè)數(shù)碼數(shù)據(jù)為不變的,故只需輸入6組由4位二進(jìn)制碼構(gòu)成的數(shù)據(jù)、1KHz時(shí)鐘信號(hào)以及控制模塊作用的使能端。當(dāng)使能端有效的情況下,將輸入6組數(shù)據(jù)輸出。5.5、消抖電路

      消除按鍵輸入信號(hào)抖動(dòng)的影響,輸出單脈沖。在手動(dòng)控制按鍵輸入控制信號(hào)前,由于人為因素,會(huì)導(dǎo)致輸入信號(hào)不穩(wěn)定等問(wèn)題,故須添加一個(gè)消抖模塊,使得每次按鍵只會(huì)產(chǎn)生一個(gè)脈沖。故除1KHz時(shí)鐘信號(hào)輸入外,還需要一個(gè)按鍵控制信號(hào)輸入端以及一個(gè)按鍵消抖后輸出信號(hào)。

      5.6、譯碼器

      包括掃描計(jì)數(shù)器、3-8譯碼器、數(shù)據(jù)選擇器以及7段譯碼器;控制8個(gè)數(shù)碼管一掃描方式顯示計(jì)時(shí)結(jié)果。譯碼模塊的功能是對(duì)之前計(jì)數(shù)模塊的計(jì)數(shù)值進(jìn)行譯碼,使其可以在數(shù)碼管上顯示出來(lái)。在8個(gè)數(shù)碼管中有兩個(gè)數(shù)碼管顯示是不變的,故不需要輸出,所以譯碼模塊要求輸入需要譯碼的6組數(shù)據(jù)以及1KHz時(shí)鐘信號(hào)。譯碼模塊除了要求對(duì)每一個(gè)可能的值(0-9)進(jìn)行譯碼外,還有設(shè)計(jì)要求8個(gè)數(shù)碼管顯示共用一個(gè)段位,故還需設(shè)計(jì)一個(gè)3-8譯碼模塊對(duì)8個(gè)數(shù)碼顯示管進(jìn)行選擇,使其輪流顯示,在1KHz的掃描下,使人看上去是8個(gè)數(shù)碼管同時(shí)顯示的。

      l

      5.7、計(jì)數(shù)器模塊

      由模6和模10計(jì)數(shù)器級(jí)聯(lián)而成。為了實(shí)現(xiàn)從00’00”00-59’59”99的計(jì)數(shù),需要將4個(gè)模10計(jì)數(shù)模塊和2個(gè)模6計(jì)數(shù)模塊級(jí)聯(lián),并且為了達(dá)到設(shè)計(jì)要求是這6個(gè)計(jì)數(shù)器工作在100Hz的時(shí)鐘信號(hào)下,可利用一個(gè)模10的計(jì)數(shù)模塊對(duì)1KHz進(jìn)行分頻,輸出的信號(hào)頻率即為100Hz,該總計(jì)數(shù)模塊最終需輸出6組計(jì)數(shù)數(shù)據(jù)以及其最終的進(jìn)位。

      5.8、top文件

      由以上各個(gè)文件相互連接而成,以及硬件的管腳管腳分布。將之前所建立的各個(gè)模塊級(jí)聯(lián)起來(lái),從按鍵輸入信號(hào)到按鍵消抖模塊再進(jìn)而連接到控制器,通過(guò)控制模塊對(duì)總計(jì)數(shù)器模塊、鎖存器模塊、譯碼器模塊、分頻器模塊相互連接起來(lái),并設(shè)置晶振輸入信號(hào)以及兩個(gè)按鍵控制信號(hào)輸入,再由譯碼器模塊知,秒表設(shè)計(jì)的最終輸出由一個(gè)3-8對(duì)應(yīng)的8位位選信號(hào)和一組7位的段選信號(hào)組成。最后對(duì)總文件的輸出進(jìn)行管腳分配,并下載到FPGA開發(fā)板上驗(yàn)證設(shè)計(jì)。

      六、仿真結(jié)果與分析::

      6.11000HZ信號(hào)的產(chǎn)生

      6.210位計(jì)數(shù)器的產(chǎn)生

      由圖可得,10位計(jì)數(shù)器從0000計(jì)到1001

      6.3 6位計(jì)數(shù)器的產(chǎn)生

      由圖可得,6位計(jì)數(shù)器從0000計(jì)到0101。

      6.4七段數(shù)碼管顯示數(shù)字

      6.5鎖存器

      由圖可得,當(dāng)沒(méi)有時(shí)鐘信號(hào)時(shí)Q不變。6.6分頻器 1000Hz-100Hz

      七、分配引腳和下載實(shí)現(xiàn):

      全部仿真通過(guò)后,就運(yùn)行ISE 的設(shè)計(jì)實(shí)現(xiàn),然后再打開XILINX PACE,在里面分配引腳,即實(shí)現(xiàn)設(shè)計(jì)的輸入輸出端口與實(shí)際芯片的輸入輸出端口的對(duì)應(yīng)連接。

      比如七段LED 管的控制信號(hào)就連接到實(shí)際電路的七個(gè)引腳。需要注意的是一些端口是固定的,不能胡亂的連接。比如時(shí)基信號(hào)即石英振蕩器所提供的信號(hào)就只能由P181 輸入。同時(shí)還要考慮內(nèi)部的可配制邏輯塊CLB 的數(shù)量是否夠滿足程序的綜合要求。一切都準(zhǔn)備就緒后就可以運(yùn)行Configure Device,選擇要下載的位文件(.bit)便可開始。

      八、實(shí)驗(yàn)結(jié)論:

      8.1、本次實(shí)驗(yàn)實(shí)現(xiàn)了秒表的計(jì)數(shù),復(fù)位,暫停,鎖顯等功能,讓我充分了解和認(rèn)識(shí)到ISE 和Modelsim軟件的強(qiáng)大功能和FPGA 技術(shù)的優(yōu)越性。并對(duì)軟件開發(fā)產(chǎn)生了興趣。

      8.2、仿真和下載實(shí)現(xiàn)是兩個(gè)不同的檢驗(yàn),仿真從軟件內(nèi)部來(lái)檢驗(yàn)程序的合理性和正確性,準(zhǔn)確性較高。而下載實(shí)現(xiàn)是從外部來(lái)觀察程序的實(shí)現(xiàn)效果,更直觀,但不具有準(zhǔn)確性。8.3、有時(shí)候下載實(shí)現(xiàn)了所有的功能,但是仿真通不過(guò),這可能是因?yàn)槌绦蛑杏行┎糠植⒉煌晟茖?dǎo)致。從外部來(lái)看,效果是一樣的,但實(shí)際程序卻存在漏洞。附:參考文獻(xiàn):

      《數(shù)字設(shè)計(jì)原理與實(shí)踐》作者:(美)John F.Wakerly編 《FPGA應(yīng)用開發(fā)入門與典型實(shí)例》華清遠(yuǎn)見嵌入式培訓(xùn)中心編

      附件:(源程序)

      1.TOP文件:

      library IEEE;use IEEE.STD_LOGIC_1164.ALL;

      entity top is

      Port(S_S : in STD_LOGIC;

      S_R : in STD_LOGIC;clk : in STD_LOGIC;

      Out8: out STD_LOGIC_VECTOR(7 downto 0);Seg : out STD_LOGIC_VECTOR(6 downto 0));end top;

      architecture Behavioral of top is

      COMPONENT fenpingqi_48m_1k PORT(clk : IN std_logic;

      q : OUT std_logic);END COMPONENT;

      COMPONENT counter PORT(clk : IN std_logic;

      eng : IN std_logic;

      clear : IN std_logic;

      ou : OUT std_logic;

      daout1 : OUT std_logic_vector(3 downto 0);

      daout2 : OUT std_logic_vector(3 downto 0);

      daout3 : OUT std_logic_vector(3 downto 0);

      daout4 : OUT std_logic_vector(2 downto 0);daout5 : OUT std_logic_vector(3 downto 0);daout6 : OUT std_logic_vector(2 downto 0));

      END COMPONENT;

      COMPONENT keydb PORT(clk : IN std_logic;key_in : IN std_logic;

      key_out : OUT std_logic);END COMPONENT;

      COMPONENT control PORT(clk : IN std_logic;q : IN std_logic;p : IN std_logic;

      j_clr : OUT std_logic;j_en : OUT std_logic;s_en : OUT std_logic);END COMPONENT;COMPONENT latch PORT(cnt_0 : IN std_logic_vector(3 downto 0);cnt_00 : IN std_logic_vector(3 downto 0);cnt_1 : IN std_logic_vector(3 downto 0);cnt_11 : IN std_logic_vector(2 downto 0);cnt_2 : IN std_logic_vector(3 downto 0);cnt_22 : IN std_logic_vector(2 downto 0);display_in : IN std_logic;

      cnt0 : OUT std_logic_vector(3 downto 0);cnt00 : OUT std_logic_vector(3 downto 0);cnt1 : OUT std_logic_vector(3 downto 0);cnt11 : OUT std_logic_vector(2 downto 0);cnt2 : OUT std_logic_vector(3 downto 0);cnt22 : OUT std_logic_vector(2 downto 0));END COMPONENT;

      COMPONENT display PORT(clk_1k : IN std_logic;

      cnt0 : IN std_logic_vector(3 downto 0);

      cnt00 : IN std_logic_vector(3 downto 0);

      cnt1 : IN std_logic_vector(3 downto 0);

      cnt11 : IN std_logic_vector(2 downto 0);

      cnt2 : IN std_logic_vector(3 downto 0);

      cnt22 : IN std_logic_vector(2 downto 0);

      output: out STD_LOGIC_VECTOR(7 downto 0);

      seg : OUT std_logic_vector(7 downto 1));END COMPONENT;

      signal clk_1k,clk_100:std_logic;signal S_S_out,S_R_out:std_logic;signal clr_A,ena_A,lock_A:std_logic;signal co_out1,co_out2,co_out3,co_out4,co_out5:std_logic;signal dao1,dao2,dao3,dao5,daoA,daoB,daoC,daoE:std_logic_vector(3 0);signal dao4,dao6,daoD,daoF:std_logic_vector(2 downto 0);signal Dig:std_logic_vector(2 downto 0);

      begin

      Inst_fenpingqi_48000: fenpingqi_48m_1k PORT MAP(clk =>clk,q => clk_1k);

      Inst_counter: counter PORT MAP(clk =>clk_1k ,eng =>ena_A ,clear =>clr_A ,daout1 =>dao1 ,daout2 => dao2,daout3 => dao3,daout4 => dao4,daout5 => dao5,daout6 => dao6);

      Inst_keydb1: keydb PORT MAP(clk =>clk_1k ,key_in => S_S,downto

      key_out =>S_S_out);

      Inst_keydb2: keydb PORT MAP(clk =>clk_1k , key_in => S_R, key_out =>S_R_out);Inst_control: control PORT MAP(clk =>clk_1k , q =>S_S_out , p =>S_R_out , j_clr =>clr_A , j_en =>ena_A , s_en =>lock_A);Inst_latch: latch PORT MAP(cnt_0 => dao1, cnt_00 => dao2, cnt_1 => dao3, cnt_11 => dao4, cnt_2 => dao5, cnt_22 => dao6, display_in =>lock_A , cnt0 =>daoA, cnt00 =>daoB, cnt1 =>daoC, cnt11 =>daoD, cnt2 =>daoE, cnt22 =>daoF);Inst_display: display PORT MAP(clk_1k => clk_1k, cnt0 =>daoA , cnt00 =>daoB, cnt1 =>daoC, cnt11 =>daoD, cnt2 =>daoE, cnt22 =>daoF, output => Out8, seg =>Seg);

      end Behavioral;

      2.模10計(jì)算器:

      entity counter10 is

      Port(clr : in STD_LOGIC;clk : in STD_LOGIC;

      en : in STD_LOGIC;

      co : out STD_LOGIC;daout : out STD_LOGIC_VECTOR(3 downto 0));end counter10;

      architecture Behavioral of counter10 is signal count:std_logic_vector(3 downto 0);begin process(clk,clr,count)begin if clr='1' then count<=“0000”;co<='0';elsif(clk='1' and clk'event)then if en='1' then if count=“1001” then count<=“0000”;else count<=count+1;end if;end if;end if;if count=“1001”and en='1' then co<='1';else co<='0';end if;daout<=count;end process;

      end Behavioral;3.模6計(jì)算器:

      entity counter6 is

      Port(clr : in STD_LOGIC;clk : in STD_LOGIC;

      en : in STD_LOGIC;

      co : out STD_LOGIC;daout : out STD_LOGIC_VECTOR(2 downto 0));end counter6;

      architecture Behavioral of counter6 is signal count:std_logic_vector(2 downto 0);

      begin process(clk,clr,count)begin if clr='1' then count<=“000”;

      co<='0';elsif(clk='1' and clk'event)then if en='1' then if count=“101” then count<=“000”;else count<=count+1;end if;end if;end if;if count=“101”and en='1' then co<='1';else co<='0';end if;daout<=count;end process;end Behavioral;

      4.計(jì)算器級(jí)聯(lián):

      entity counter is

      Port(clk : in STD_LOGIC;eng : in STD_LOGIC;

      clear : in STD_LOGIC;

      ou : out STD_LOGIC;

      daout1 : out STD_LOGIC_VECTOR(3 downto 0);

      daout2 : out STD_LOGIC_VECTOR(3 downto 0);

      daout3 : out STD_LOGIC_VECTOR(3 downto 0);

      daout4 : out STD_LOGIC_VECTOR(2 downto 0);

      daout5 : out STD_LOGIC_VECTOR(3 downto 0);

      daout6 : out STD_LOGIC_VECTOR(2 downto 0));end counter;

      architecture Behavioral of counter is COMPONENT fenpingqi_1k_100 PORT(clk : IN std_logic;

      q : OUT std_logic);END COMPONENT;

      COMPONENT counter10 PORT(clr : IN std_logic;

      clk : IN std_logic;

      en : IN std_logic;

      co : OUT std_logic;

      daout : OUT std_logic_vector(3 downto 0));END COMPONENT;

      COMPONENT counter6 PORT(clr : IN std_logic;

      clk : IN std_logic;

      en : IN std_logic;

      co : OUT std_logic;

      daout : OUT std_logic_vector(2 downto 0));END COMPONENT;

      signal clk_100:std_logic;signal clr_A,ena_A:std_logic;signal co_out1,co_out2,co_out3,co_out4,co_out5:std_logic;

      begin Inst_fenpingqi_10: fenpingqi_1k_100 PORT MAP(clk =>clk,q => clk_100);

      Inst_counter10_1: counter10 PORT MAP(clr => clear,clk =>clk_100 ,en =>eng,co => co_out1,daout => daout1);Inst_counter10_2: counter10 PORT MAP(clr => clear,clk =>clk_100 ,en => co_out1,co => co_out2,daout => daout2);Inst_counter10_3: counter10 PORT MAP(clr => clear,clk =>clk_100 ,en => co_out2,co => co_out3,daout => daout3);

      Inst_counter6_1: counter6 PORT MAP(clr =>clear ,clk =>clk_100,en =>co_out3,co =>co_out4 ,daout => daout4);Inst_counter10_4: counter10 PORT MAP(clr => clear,clk =>clk_100 ,en => co_out4,co => co_out5,daout => daout5);Inst_counter6_2: counter6 PORT MAP(clr =>clear,clk =>clk_100,en =>co_out5,co =>ou,daout => daout6);

      end Behavioral;

      5.控制電路:

      entity control is

      Port(clk : in STD_LOGIC;

      q : in STD_LOGIC;

      p : in STD_LOGIC;j_clr : out STD_LOGIC;j_en : out STD_LOGIC;s_en : out STD_LOGIC);end control;

      architecture Behavioral of control is signal state:std_logic_vector(1 downto 0):=“00”;signal next_state:std_logic_vector(1 downto 0);signal key:std_logic_vector(1 downto 0);

      begin key<=q&p;process(state,key)begin case state is when“00”=> if key=“10” then next_state<=“01”;else next_state<=state;end if;when“01”=> case key is when“10”=>next_state<=“11”;when“01”=>next_state<=“10”;when others=>next_state<=state;end case;when“10”=> if key=“01” then next_state<=“01”;else next_state<=state;end if;when others=> case key is when“10”=>next_state<=“01”;when“01”=>next_state<=“00”;when others=>next_state<=state;end case;end case;end process;process(clk)begin if rising_edge(clk)then state<=next_state;end if;end process;process(state)begin case state is when“00”=> j_clr<='1';j_en<='1';s_en<='1';when“01”=> j_clr<='0';j_en<='1';s_en<='1';when“10”=> j_clr<='0';j_en<='1';s_en<='0';when others=> j_clr<='0';j_en<='0';s_en<='1';end case;end process;end Behavioral;

      6.分頻器(2個(gè)): entity fenpingqi_48m_1k is

      Port(clk : in STD_LOGIC;

      q : out STD_LOGIC);end fenpingqi_48m_1k;

      architecture Behavioral of fenpingqi_48m_1k is signal counter:STD_LOGIC_VECTOR(15 downto 0);begin process(clk)begin if(clk='1'and clk'event)then if counter=47999 then counter<=(others=>'0');else

      counter<=counter+1;end if;end if;

      q<= counter(15);end process;

      end Behavioral;

      entity fenpingqi_1k_100 is

      Port(clk : in STD_LOGIC;

      q : out STD_LOGIC);end fenpingqi_1k_100;architecture Behavioral of fenpingqi_1k_100 is signal counter:STD_LOGIC_vector(3 downto 0);

      begin process(clk)begin if(clk='1'and clk'event)then if counter=9 then counter<=“0000”;else

      counter<=counter+1;end if;end if;q<=counter(3);end process;end Behavioral;

      7.顯示電路:

      entity display is

      Port(clk_1k : in STD_LOGIC;

      cnt0 : in STD_LOGIC_VECTOR(3 downto 0);

      cnt00 : in STD_LOGIC_VECTOR(3 downto 0);

      cnt1 : in STD_LOGIC_VECTOR(3 downto 0);

      cnt11 : in STD_LOGIC_VECTOR(2 downto 0);

      cnt2 : in STD_LOGIC_VECTOR(3 downto 0);

      cnt22 : in STD_LOGIC_VECTOR(2 downto 0);

      output: out STD_LOGIC_VECTOR(7 downto 0);seg : out STD_LOGIC_VECTOR(7 downto 1));end display;

      architecture Behavioral of display is signal dig:std_logic_vector(2 downto 0):=“000”;signal bcd:std_logic_vector(3 downto 0):=“1000”;signal seg7:std_logic_vector(7 downto 1):=“1111110”;

      begin process(clk_1k)begin if clk_1k'event and clk_1k='1' then dig<=dig+1;end if;end process;process(dig)begin case dig is when“000”=>bcd<=cnt0;when“001”=>bcd<=cnt00;when“010”=>bcd<=“1010”;when“011”=>bcd<=cnt1;when“100”=>bcd<='0'& cnt11;when“101”=>bcd<=“1010”;when“110”=>bcd<=cnt2;when“111”=>bcd<='0'&cnt22;when others=>bcd<=“1010”;end case;end process;process(bcd)begin case bcd is when“0000”=>seg7<=“0000001”;when“0001”=>seg7<=“1001111”;when“0010”=>seg7<=“0010010”;when“0011”=>seg7<=“0000110”;when“0100”=>seg7<=“1001100”;when“0101”=>seg7<=“0100100”;when“0110”=>seg7<=“1100000”;when“0111”=>seg7<=“0001111”;when“1000”=>seg7<=“0000000”;when“1001”=>seg7<=“0001100”;when others=>seg7<=“1111110”;end case;end process;process(dig)begin case dig is when“000”=>output<=“01111111”;when“001”=>output<=“10111111”;when“010”=>output<=“11011111”;when“011”=>output<=“11101111”;when“100”=>output<=“11110111”;when“101”=>output<=“11111011”;when“110”=>output<=“11111101”;when“111”=>output<=“11111110”;when others=>output<=“11111111”;end case;end process;seg<=seg7;end Behavioral;

      8.鎖存器:

      entity latch is

      Port(cnt_0 : in STD_LOGIC_VECTOR(3 downto 0);

      cnt_00 : in STD_LOGIC_VECTOR(3 downto 0);

      cnt_1 : in STD_LOGIC_VECTOR(3 downto 0);

      cnt_11 : in STD_LOGIC_VECTOR(2 downto 0);

      cnt_2 : in STD_LOGIC_VECTOR(3 downto 0);

      cnt_22 : in STD_LOGIC_VECTOR(2 downto 0);display_in : in STD_LOGIC;

      cnt0 : out STD_LOGIC_VECTOR(3 downto 0);

      cnt00 : out STD_LOGIC_VECTOR(3 downto 0);

      cnt1 : out STD_LOGIC_VECTOR(3 downto 0);

      cnt11 : out STD_LOGIC_VECTOR(2 downto 0);

      cnt2 : out STD_LOGIC_VECTOR(3 downto 0);

      cnt22 : out STD_LOGIC_VECTOR(2 downto 0));end latch;

      architecture Behavioral of latch is

      begin process(display_in,cnt_0,cnt_00,cnt_1,cnt_11,cnt_2,cnt_22)begin if display_in='1' then cnt0<=cnt_0;cnt00<=cnt_00;cnt1<=cnt_1;cnt11<=cnt_11;cnt2<=cnt_2;cnt22<=cnt_22;end if;end process;end Behavioral;

      9.消抖電路:

      entity keydb is

      Port(clk : in STD_LOGIC;key_in : in STD_LOGIC;key_out : out STD_LOGIC);end keydb;

      architecture Behavioral of keydb is signal k1,k2:STD_LOGIC;signal cnt : STD_LOGIC_VECTOR(1 DOWNTO 0);

      begin process(clk,key_in)begin if clk'event and clk ='0' then if cnt =3 then k1<='1';else k1<='0';cnt<=cnt+1;end if;k2<=k1;end if;if key_in ='0' then cnt<=“00”;end if;end process;key_out<= not k1 and k2;

      end Behavioral

      第三篇:電子科技大學(xué)實(shí)驗(yàn)報(bào)告格式

      九、實(shí)驗(yàn)結(jié)論:

      十、總結(jié)及心得體會(huì):

      十一、對(duì)本實(shí)驗(yàn)過(guò)程及方法、手段的改進(jìn)建議:

      報(bào)告評(píng)分:指導(dǎo)教師簽字:

      電子科技大學(xué)

      學(xué)生姓名:

      學(xué)號(hào):

      指導(dǎo)教師:

      日期:實(shí) 驗(yàn) 報(bào) 告年月日

      一、實(shí)驗(yàn)室名稱:

      二、實(shí)驗(yàn)項(xiàng)目名稱:

      三、實(shí)驗(yàn)原理:

      四、實(shí)驗(yàn)?zāi)康模?/p>

      五、實(shí)驗(yàn)內(nèi)容:

      六、實(shí)驗(yàn)器材(設(shè)備、元器件):

      七、實(shí)驗(yàn)步驟:

      八、實(shí)驗(yàn)數(shù)據(jù)及結(jié)果分析:

      第四篇:電子科技大學(xué)實(shí)驗(yàn)報(bào)告格式

      九、實(shí)驗(yàn)結(jié)論:

      十、總結(jié)及心得體會(huì):

      十一、對(duì)本實(shí)驗(yàn)過(guò)程及方法、手段的改進(jìn)建議:

      報(bào)告評(píng)分:

      指導(dǎo)教師簽字: 電子科技大學(xué)

      學(xué)生姓名:學(xué)

      號(hào):指導(dǎo)教師:日

      期:實(shí) 驗(yàn) 報(bào) 告

      ****年**月**日

      一、實(shí)驗(yàn)室名稱:

      二、實(shí)驗(yàn)項(xiàng)目名稱:

      三、實(shí)驗(yàn)原理:

      四、實(shí)驗(yàn)?zāi)康模?/p>

      五、實(shí)驗(yàn)內(nèi)容:

      六、實(shí)驗(yàn)器材(設(shè)備、元器件):

      七、實(shí)驗(yàn)步驟:

      八、實(shí)驗(yàn)數(shù)據(jù)及結(jié)果分析:

      第五篇:電子科技大學(xué)數(shù)學(xué)實(shí)驗(yàn)報(bào)告

      一、選擇題:(每題3分,共30分)

      1、若分式 有意義,則x的取值范圍是(A.B.C.D.x≠-1)

      2、一射擊運(yùn)動(dòng)員在一次射擊練習(xí)中打出的成績(jī)?nèi)缦卤硭荆哼@次成績(jī)的眾數(shù)是()A;6B;8C;10D;73、若一組數(shù)據(jù)1,2,3,x的極差為6,則x的值是()

      A.7B.8 C.9 D.7或-34、矩形的面積為120cm2,周長(zhǎng)為46cm,則它的對(duì)角線長(zhǎng)為()

      A.15cmB.16cmC.17cmD.18cm5、如圖,△ABC中,AB=AC=10,BD是AC邊上的高線,DC=2,則BD等于((A)4(B)6(C)8(D)

      第5題第7題第14題第17題).

      6、等腰梯形ABCD中,E、F、G、H分別是各邊的中點(diǎn),則四邊形EFGH的形狀是()

      A.平行四邊形 B.矩形 C.菱形 D.正方形

      7、函數(shù)y1=x(x≥0),(x>0)的圖象如圖所示,則結(jié)論:

      ①兩函數(shù)圖象的交點(diǎn)A的坐標(biāo)為(2,2); ②當(dāng)x>2時(shí),y2>y1;③當(dāng)x=1時(shí),BC=3; ④當(dāng)x逐漸增大時(shí),y1隨著x的增大而增大,y2隨著x的增大而減?。?/p>

      其中正確結(jié)論的序號(hào)是()

      A;①②B;①②④C;①②③④D;①③④

      8、如圖,將邊長(zhǎng)為8㎝的正方形ABCD折疊,使點(diǎn)D落在BC邊的中

      點(diǎn)E處,點(diǎn)A落在F處,折痕為MN,則線段CN的長(zhǎng)是()

      A.3cmB.4cmC.5cmD.6cm,則 的值為(C.14)

      9、已知A.12B.13D.1510、三角形三邊之比分別為①1:2:3,②3:4:5;③1.5:2:2.5,④4:5:6,其中可以構(gòu)成直角三角形的有()

      A.1個(gè)B.2個(gè)C.3個(gè)D.4個(gè)

      二、填空題:(每題3分,共24分)

      11、數(shù)據(jù)2,x,9,2,8,5的平均數(shù)為5,它的極差為

      12、用科學(xué)計(jì)數(shù)法表示:-0.034=。

      13、約分=

      第18題

      14、如圖,正方形網(wǎng)格中,每個(gè)小正方形的邊長(zhǎng)為1,則網(wǎng)格上的△ABC是______三角形.

      15、已知菱形ABCD的周長(zhǎng)為20cm,且相鄰兩內(nèi)角之比是1∶2,則菱形的兩條對(duì)角線的長(zhǎng)和面積分別是 ________.

      16、一個(gè)三角形的三邊長(zhǎng)分別為4,5,6,則連結(jié)各邊中點(diǎn)所得三角形的周長(zhǎng)為_________.17、如圖5,若點(diǎn) 在反比例函數(shù) 的圖象上,軸于點(diǎn),的面積為3,則.

      18、在矩形 中,,平分,過(guò) 點(diǎn)作 于,延長(zhǎng)、交于點(diǎn),下列結(jié)論中:① ;② ;③;④,正確的。(填寫正確的題號(hào))

      三、解答題:(19-25題每題8分,26題10分)

      19、(1)已知,求

      20、今年,蘇州市政府的一項(xiàng)實(shí)事工程就是由政府投人1 000萬(wàn)元資金.對(duì)城區(qū)4萬(wàn)戶家庭的老式水龍頭和13升抽水馬桶進(jìn)行免費(fèi)改造.某社區(qū)為配合政府完成該項(xiàng)工作,對(duì)社區(qū)內(nèi)1200戶家庭中的120戶進(jìn)行了隨機(jī)抽樣調(diào)查,并匯總成下表:

      改造

      情況 均不

      改造 改造水龍頭 改造馬桶

      1個(gè) 2個(gè) 3個(gè) 4個(gè) 1個(gè) 2個(gè)

      戶數(shù) 20 31 28 21 12 69 2

      (1)試估計(jì)該社區(qū)需要對(duì)水龍頭、馬桶進(jìn)行改造的家庭共有__戶;

      (2)改造后.一只水龍頭一年大約可節(jié)省5噸水,一只馬桶一年大約可節(jié)省15噸水.試估計(jì)該社區(qū)一年共可節(jié)約多少噸自來(lái)水?

      (3)在抽樣的120戶家庭中.既要改造水龍頭又要改造馬桶的家庭共有多少戶?

      21、如圖,在□ABCD中,已知點(diǎn)E和點(diǎn)F分別在AD和BC上,且AE=CF,連結(jié)CE和AF,試說(shuō)明四邊形AFCE是平行四邊形.22、如圖,在△ABO中,已知A(0,4),B(﹣2,0),D為線段AB的中點(diǎn).

      (1)求點(diǎn)D的坐標(biāo);(2)求經(jīng)過(guò)點(diǎn)D的反比例函數(shù)解析式.

      值(2)解分式方程:

      下載電子科技大學(xué)逆向工程實(shí)驗(yàn)報(bào)告作業(yè)[五篇]word格式文檔
      下載電子科技大學(xué)逆向工程實(shí)驗(yàn)報(bào)告作業(yè)[五篇].doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


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

      相關(guān)范文推薦

        電子科技大學(xué)實(shí)驗(yàn)報(bào)告(推薦閱讀)

        電子科技大學(xué)信息與軟件學(xué)院實(shí) 驗(yàn) 報(bào) 告(實(shí)驗(yàn))課程名稱 學(xué)生姓名學(xué)生學(xué)號(hào)電子科技大學(xué)教務(wù)處制表電 子 科 技 大 學(xué) 實(shí)驗(yàn)報(bào)告 學(xué)生姓名:學(xué) 號(hào):指導(dǎo)教師: 實(shí)驗(yàn)地點(diǎn):實(shí)驗(yàn)時(shí)間: 一、實(shí)......

        計(jì)算機(jī)組成原理實(shí)驗(yàn)報(bào)告 電子科技大學(xué)

        計(jì)算機(jī)專業(yè)類課程 實(shí)驗(yàn)報(bào) 告 課程名稱:計(jì)算機(jī)組成原理 學(xué)院專業(yè):計(jì)算機(jī)科學(xué)與工程 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)生姓名:** 學(xué)號(hào):20120600***** 指導(dǎo)教師:吳曉華 日期:2014年11月30日 實(shí) 驗(yàn)......

        電子科技大學(xué)微機(jī)實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)5

        實(shí)驗(yàn)五 基于ARM的模塊方式驅(qū)動(dòng)程序?qū)嶒?yàn) 【實(shí)驗(yàn)?zāi)康摹?1.掌握Linux 系統(tǒng)下設(shè)備驅(qū)動(dòng)程序的作用與編寫技巧 2.掌握Linux 驅(qū)動(dòng)程序模塊加載和卸載的方法 3.了解Linux 內(nèi)核中的ma......

        電子科技大學(xué)微機(jī)實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)4

        實(shí)驗(yàn)四基于ARM的嵌入式Linux開發(fā)環(huán)境建立 【實(shí)驗(yàn)?zāi)康摹?1.掌握嵌入式Linux 開發(fā)環(huán)境的基本流程。 2.熟悉Linux 操作系統(tǒng) 3.熟悉嵌入式開發(fā)平臺(tái)【實(shí)驗(yàn)內(nèi)容】在PC機(jī)虛擬機(jī)下的......

        電子科技大學(xué) C語(yǔ)言第一次上機(jī)實(shí)驗(yàn)報(bào)告

        電子科技大學(xué) 學(xué)院 標(biāo) 準(zhǔn) 實(shí) 驗(yàn) 報(bào) 告 (實(shí)驗(yàn))課程名稱 高級(jí)語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn) 電 子 科 技 大 學(xué) 實(shí) 驗(yàn) 報(bào) 告 實(shí)驗(yàn)時(shí)間: 10月12日晚 一、實(shí)驗(yàn)室名稱:校公共機(jī)房二、實(shí)驗(yàn)項(xiàng)目名......

        西安電子科技大學(xué)《Matlab》平時(shí)作業(yè)離線

        平時(shí)作業(yè)一、 填空題(2’×16=32’) 1、 Matlab的全稱為 2、 Matlab的工作界面主要由、eps表示:和3、 Matlab預(yù)定義變量ans表示:;nargin表示:。 4、 實(shí)現(xiàn)Fourier變換在Matlab中的......

        電子科技大學(xué) 數(shù)字信號(hào)處理 第二次編程作業(yè)

        第二次編程作業(yè) 加載信號(hào)(EEGdata.txt);分析信號(hào)的幅度譜,確定低通FIR數(shù)字濾波器的指標(biāo);分別利用各種窗函數(shù)(Rectangular, Hamming, Kaiser)設(shè)計(jì)此FIR濾波器;對(duì)信號(hào)加隨機(jī)噪聲,并......

        關(guān)于電子逆向工程與不正當(dāng)競(jìng)爭(zhēng)的法律爭(zhēng)議

        北京首矽致芯科技有限公司電子逆向工程芯片解密專業(yè)機(jī)構(gòu)最高法:自行研發(fā)或反向工程不是不正當(dāng)競(jìng)爭(zhēng)以不正當(dāng)方式獲得其他商家的商業(yè)秘密,是一種常見的不正當(dāng)競(jìng)爭(zhēng)行為。最高人......