//------------------------------------------------------------------------------------//此程序為ADC轉換程序,可以選擇向ADC0BUSY寫1或用定時器0,1,2,3作為ADC的啟動信號。////------------------------------------------------------------------------------------//頭文件定義//------------------------------------------------------------------------------------//#include <c8051f330.h> #include <stdio.h> //-----------------------------------------------------------------------------// 定義16位特殊功能寄存器//----------------------------------------------------------------------------- sfr16 ADC0 = 0xbd; sfr16 TMR0RL = 0xca; sfr16 TMR1RL = 0xca; sfr16 TMR2RL =0xca; sfr16 TMR3RL =0xca; sfr16 TMR0 = 0xCC; sfr16 TMR1 = 0xCC; sfr16 TMR2 = 0xcc; sfr16 TMR3 = 0xcc; //-----------------------------------------------------------------------------// 全局變量定義//-----------------------------------------------------------------------------char i;int result; //-----------------------------------------------------------------------------//定義常量//-----------------------------------------------------------------------------#define SYSCLK 49000000 #define SAMPLE_RATE 50000 //------------------------------------------------------------------------------------// 定義函數//------------------------------------------------------------------------------------void SYSCLK_Init (void);void PORT_Init (void);void Timer0_Init (int counts);void Timer1_Init (int counts);void Timer2_Init (int counts);void Timer3_Init (int counts);void ADC0_Init(void);void ADC0_ISR (void);void ADC0_CNVS_ADC0h(void);//------------------------------------------------------------------------------------// 主程序//------------------------------------------------------------------------------------ void main (void) { int ADCRESULT[50] ; int k; PCA0MD &= ~0x40; // 禁止看門狗 SYSCLK_Init (); PORT_Init (); Timer0_Init (SYSCLK/SAMPLE_RATE); //Timer1_Init (SYSCLK/SAMPLE_RATE); //選擇相應的啟動方式 //Timer2_Init (SYSCLK/SAMPLE_RATE); //Timer3_Init (SYSCLK/SAMPLE_RATE); ADC0_Init(); EA=1; while(1) { //ADC0_CNVS_ADC0h(); k=ADC0; ADCRESULT[i]=result; //此處設斷點,觀察ADCRESULT的結果 } }
上傳時間: 2013-10-13
上傳用戶:SimonQQ
基于VHDL的FPGA和Nios II 實例精煉【作者:劉福奇;出版社:北京航空航天大學出版社】(本書優酷視頻地址:http://www.youku.com/playlist_show/id_5882081.html) 內容簡介:本書分為4個部分:Quartus Ⅱ軟件的基本操作、VHDL語法介紹、FPGA設計實例和Nios Ⅱ設計實例;總結了編者幾年來的FPGA設計經驗,力求給初學者或是想接觸這方面知識的讀者提供一種快速入門的方法;適合電子相關專業的大學生、FPGA的初學者以及對FPGA有興趣的電子工程師。初學者可以按照步驟學習。本書中提及到時間計算問題,不光提出有時間戳的方法, 還介紹了一種通過讀取定時器的寄存器來計算時間的方法。其實,有人認為,本書最好的部分是:DMA的實現說明(本書從3個方面講述了DMA的使用)。現在學習Verilog HDL的人或許比較多,但是用VHDL的人可以學習下,這本書還是很不錯的。
上傳時間: 2014-07-10
上傳用戶:米米陽123
Verilog_HDL的基本語法詳解(夏宇聞版):Verilog HDL是一種用于數字邏輯電路設計的語言。用Verilog HDL描述的電路設計就是該電路的Verilog HDL模型。Verilog HDL既是一種行為描述的語言也是一種結構描述的語言。這也就是說,既可以用電路的功能描述也可以用元器件和它們之間的連接來建立所設計電路的Verilog HDL模型。Verilog模型可以是實際電路的不同級別的抽象。這些抽象的級別和它們對應的模型類型共有以下五種: 系統級(system):用高級語言結構實現設計模塊的外部性能的模型。 算法級(algorithm):用高級語言結構實現設計算法的模型。 RTL級(Register Transfer Level):描述數據在寄存器之間流動和如何處理這些數據的模型。 門級(gate-level):描述邏輯門以及邏輯門之間的連接的模型。 開關級(switch-level):描述器件中三極管和儲存節點以及它們之間連接的模型。 一個復雜電路系統的完整Verilog HDL模型是由若干個Verilog HDL模塊構成的,每一個模塊又可以由若干個子模塊構成。其中有些模塊需要綜合成具體電路,而有些模塊只是與用戶所設計的模塊交互的現存電路或激勵信號源。利用Verilog HDL語言結構所提供的這種功能就可以構造一個模塊間的清晰層次結構來描述極其復雜的大型設計,并對所作設計的邏輯電路進行嚴格的驗證。 Verilog HDL行為描述語言作為一種結構化和過程性的語言,其語法結構非常適合于算法級和RTL級的模型設計。這種行為描述語言具有以下功能: · 可描述順序執行或并行執行的程序結構。 · 用延遲表達式或事件表達式來明確地控制過程的啟動時間。 · 通過命名的事件來觸發其它過程里的激活行為或停止行為。 · 提供了條件、if-else、case、循環程序結構。 · 提供了可帶參數且非零延續時間的任務(task)程序結構。 · 提供了可定義新的操作符的函數結構(function)。 · 提供了用于建立表達式的算術運算符、邏輯運算符、位運算符。 · Verilog HDL語言作為一種結構化的語言也非常適合于門級和開關級的模型設計。因其結構化的特點又使它具有以下功能: - 提供了完整的一套組合型原語(primitive); - 提供了雙向通路和電阻器件的原語; - 可建立MOS器件的電荷分享和電荷衰減動態模型。 Verilog HDL的構造性語句可以精確地建立信號的模型。這是因為在Verilog HDL中,提供了延遲和輸出強度的原語來建立精確程度很高的信號模型。信號值可以有不同的的強度,可以通過設定寬范圍的模糊值來降低不確定條件的影響。 Verilog HDL作為一種高級的硬件描述編程語言,有著類似C語言的風格。其中有許多語句如:if語句、case語句等和C語言中的對應語句十分相似。如果讀者已經掌握C語言編程的基礎,那么學習Verilog HDL并不困難,我們只要對Verilog HDL某些語句的特殊方面著重理解,并加強上機練習就能很好地掌握它,利用它的強大功能來設計復雜的數字邏輯電路。下面我們將對Verilog HDL中的基本語法逐一加以介紹。
標簽: Verilog_HDL
上傳時間: 2014-12-04
上傳用戶:cppersonal
The Virtex™-4 user access register (USR_ACCESS_VIRTEX4) is a 32-bit register thatprovides direct access to bitstream data by the FPGA fabric. It is useful for loadingPowerPC™ 405 (PPC405) processor caches and/or other data into the FPGA after the FPGAhas been configured, thus achieving partial reconfiguration. The USR_ACCESS_VIRTEX4register is programmed through the bitstream with a command that writes a series of 32-bitwords.
標簽: USR_ACCESS PowerPC XAPP 719
上傳時間: 2013-12-23
上傳用戶:yuanwenjiao
FSM 分兩大類:米里型和摩爾型。 組成要素有輸入(包括復位),狀態(包括當前狀態的操作),狀態轉移條件,狀態的輸出條件。 設計FSM 的方法和技巧多種多樣,但是總結起來有兩大類:第一種,將狀態轉移和狀態的操作和判斷等寫到一個模塊(process、block)中。另一種是將狀態轉移單獨寫成一個模塊,將狀態的操作和判斷等寫到另一個模塊中(在Verilog 代碼中,相當于使用兩個“always” block)。其中較好的方式是后者。其原因 如下: 首先FSM 和其他設計一樣,最好使用同步時序方式設計,好處不再累述。而狀態機實現后,狀態轉移是用寄存器實現的,是同步時序部分。狀態的轉移條件的判斷是通過組合邏輯判斷實現的,之所以第二種比第一種編碼方式合理,就在于第二種編碼將同步時序和組合邏輯分別放到不同的程序塊(process,block) 中實現。這樣做的好處不僅僅是便于閱讀、理解、維護,更重要的是利于綜合器優化代碼,利于用戶添加合適的時序約束條件,利于布局布線器實現設計。顯式的 FSM 描述方法可以描述任意的FSM(參考Verilog 第四版)P181 有限狀態機的說明。兩個 always 模塊。其中一個是時序模塊,一個為組合邏輯。時序模塊設計與書上完全一致,表示狀態轉移,可分為同步與異步復位。
標簽: 狀態
上傳時間: 2015-01-02
上傳用戶:aa17807091
設計工程師通常在FPGA上實現FIFO(先進先出寄存器)的時候,都會使用由芯片提供商所提供的FIFO。但是,由于其通用性使得其針對性變差,某些情況下會變得不方便或者將增加硬件成本。此時,需要進行自行FIFO設計。本文提供了一種基于信元的FIFO設計方法以供設計者在適當的時候選用。這種方法也適合于不定長包的處理。
上傳時間: 2013-11-05
上傳用戶:ch3ch2oh
設計了一種基于FPGA純硬件方式實現方向濾波的指紋圖像增強算法。設計采用寄存器傳輸級(RTL)硬件描述語言(Verilog HDL),利用時分復用和流水線處理等技術,完成了方向濾波指紋圖像增強算法在FPGA上的實現。整個系統通過了Modelsim的仿真驗證并在Terasic公司的DE2平臺上完成了硬件測試。設計共消耗了3716個邏輯單元,最高處理速度可達92.93MHz。以50MHz頻率工作時,可在0.5s以內完成一幅256&amp;#215;256指紋圖像的增強處理。
上傳時間: 2013-11-06
上傳用戶:rishian
摘要:介紹用一片GAL16V8實現的模≤2n可編程計數器。它是基于“最大長度移位寄存器式計數器”的原理設計而成的.電路簡單可靠.同時介紹一種由它組成的實用電路——由GAL實現時、分、秒計時的數字鐘電路。 關鍵詞:GAL 最大長度移位寄存器式計數器
上傳時間: 2013-11-12
上傳用戶:comua
通用陣列邏輯GAL實現基本門電路的設計 一、實驗目的 1.了解GAL22V10的結構及其應用; 2.掌握GAL器件的設計原則和一般格式; 3.學會使用VHDL語言進行可編程邏輯器件的邏輯設計; 4.掌握通用陣列邏輯GAL的編程、下載、驗證功能的全部過程。 二、實驗原理 1. 通用陣列邏輯GAL22V10 通用陣列邏輯GAL是由可編程的與陣列、固定(不可編程)的或陣列和輸出邏輯宏單元(OLMC)三部分構成。GAL芯片必須借助GAL的開發軟件和硬件,對其編程寫入后,才能使GAL芯片具有預期的邏輯功能。GAL22V10有10個I/O口、12個輸入口、10個寄存器單元,最高頻率為超過100MHz。 ispGAL22V10器件就是把流行的GAL22V10與ISP技術結合起來,在功能和結構上與GAL22V10完全相同,并沿用了GAL22V10器件的標準28腳PLCC封裝。ispGAl22V10的傳輸時延低于7.5ns,系統速度高達100MHz以上,因而非常適用于高速圖形處理和高速總線管理。由于它每個輸出單元平均能夠容納12個乘積項,最多的單元可達16個乘積項,因而更為適用大型狀態機、狀態控制及數據處理、通訊工程、測量儀器等領域。ispGAL22V10的功能框圖及引腳圖分別見圖1-1和1-2所示。 另外,采用ispGAL22V10來實現諸如地址譯碼器之類的基本邏輯功能是非常容易的。為實現在系統編程,每片ispGAL22V10需要有四個在系統編程引腳,它們是串行數據輸入(SDI),方式選擇(MODE)、串行輸出(SDO)和串行時鐘(SCLK)。這四個ISP控制信號巧妙地利用28腳PLCC封裝GAL22V10的四個空腳,從而使得兩種器件的引腳相互兼容。在系統編程電源為+5V,無需外接編程高壓。每片ispGAL22V10可以保證一萬次在系統編程。 ispGAL22V10的內部結構圖如圖1-3所示。 2.編譯、下載源文件 用VHDL語言編寫的源程序,是不能直接對芯片編程下載的,必須經過計算機軟件對其進行編譯,綜合等最終形成PLD器件的熔斷絲文件(通常叫做JEDEC文件,簡稱為JED文件)。通過相應的軟件及編程電纜再將JED數據文件寫入到GAL芯片,這樣GAL芯片就具有用戶所需要的邏輯功能。 3.工具軟件ispLEVER簡介 ispLEVER 是Lattice 公司新推出的一套EDA軟件。設計輸入可采用原理圖、硬件描述語言、混合輸入三種方式。能對所設計的數字電子系統進行功能仿真和時序仿真。編譯器是此軟件的核心,能進行邏輯優化,將邏輯映射到器件中去,自動完成布局與布線并生成編程所需要的熔絲圖文件。軟件中的Constraints Editor工具允許經由一個圖形用戶接口選擇I/O設置和引腳分配。軟件包含Synolicity公司的“Synplify”綜合工具和Lattice的ispVM器件編程工具,ispLEVER軟件提供給開發者一個簡單而有力的工具。
上傳時間: 2013-11-17
上傳用戶:看到了沒有
第二部分:DRAM 內存模塊的設計技術..............................................................143第一章 SDR 和DDR 內存的比較..........................................................................143第二章 內存模塊的疊層設計.............................................................................145第三章 內存模塊的時序要求.............................................................................1493.1 無緩沖(Unbuffered)內存模塊的時序分析.......................................1493.2 帶寄存器(Registered)的內存模塊時序分析...................................154第四章 內存模塊信號設計.................................................................................1594.1 時鐘信號的設計.......................................................................................1594.2 CS 及CKE 信號的設計..............................................................................1624.3 地址和控制線的設計...............................................................................1634.4 數據信號線的設計...................................................................................1664.5 電源,參考電壓Vref 及去耦電容.........................................................169第五章 內存模塊的功耗計算.............................................................................172第六章 實際設計案例分析.................................................................................178 目前比較流行的內存模塊主要是這三種:SDR,DDR,RAMBUS。其中,RAMBUS內存采用阻抗受控制的串行連接技術,在這里我們將不做進一步探討,本文所總結的內存設計技術就是針對SDRAM 而言(包括SDR 和DDR)。現在我們來簡單地比較一下SDR 和DDR,它們都被稱為同步動態內存,其核心技術是一樣的。只是DDR 在某些功能上進行了改進,所以DDR 有時也被稱為SDRAM II。DDR 的全稱是Double Data Rate,也就是雙倍的數據傳輸率,但是其時鐘頻率沒有增加,只是在時鐘的上升和下降沿都可以用來進行數據的讀寫操作。對于SDR 來說,市面上常見的模塊主要有PC100/PC133/PC166,而相應的DDR內存則為DDR200(PC1600)/DDR266(PC2100)/DDR333(PC2700)。
上傳時間: 2013-10-18
上傳用戶:宋桃子