欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: CPLD多波形信號發(fā)生器 [打印本頁]

作者: 51黑ss    時(shí)間: 2016-3-30 21:17
標(biāo)題: CPLD多波形信號發(fā)生器
      
摘    要
直接數(shù)字頻率合成(Direct Digital Synthesis,DDS)是20世紀(jì)60年代末出現(xiàn)的第三代頻率合成技術(shù),該技術(shù)從相位概念出發(fā),以時(shí)域采樣定理為基礎(chǔ),在時(shí)域中進(jìn)行頻率合成,它以可編程邏輯器件(CPLD)作為控制及數(shù)據(jù)處理的核心,可將波形數(shù)據(jù)用D/A轉(zhuǎn)換器快速恢復(fù)。基于CPLD和DDS技術(shù)的函數(shù)發(fā)生器可以實(shí)現(xiàn)信號波形的多樣化,同時(shí)大大提高輸出信號的帶寬。
整個(gè)設(shè)計(jì)采用MAX+ plus II開發(fā)平臺,VHDL編程實(shí)現(xiàn),基于可編程邏輯器件CPLD設(shè)計(jì)多波形信號發(fā)生器。用VHDL編程實(shí)現(xiàn),其設(shè)計(jì)過程簡單,極易修改,可移植性強(qiáng)。系統(tǒng)以CPLD為核心,采用直接數(shù)字合成技術(shù),輔以必要的模擬電路,構(gòu)成一個(gè)波形穩(wěn)定,精度較高的函數(shù)信號發(fā)生器。系統(tǒng)的特色在于除晶體振蕩器和A/D轉(zhuǎn)換外,全部集成在一片CPLD芯片上,使系統(tǒng)大大簡化。它可輸出頻率、幅度可調(diào)的正弦波、三角波、方波。另外由于CPLD具有可編程重置特性,因而可以方便地更換波形數(shù)據(jù),且簡單易行,帶來極大方便。
     
關(guān)鍵詞:信號發(fā)生器設(shè)計(jì);三相;VHDL;CPLD;MAX+ plus II
ABSTRACT
Direct digital frequency synthesize(DDFS) is a recently and rapidly developed technology which features high frequency resolution.This paper briefly introduces the basic principle of DDS. The basic principle and performance of CPLD chip.Then it mainly describes how to use CPLD chip to design a function generator of high accuracy.The principle of three-phase multi-signal generator based on CPLD and DDS technology is introduced.Based on these,the modules of CPLD design are given.
The multi-wave signal generator is designed based on program-mable logical component CPLD.The VHDL programming realization and the MAX+ plus II development platform. Besides the crystal oscillator and the A/D transformation,the entire system completely integrates on the CPLD chip.The multi-wave signal generator may output the sine-wave,the triangle-wave,the square-wave.Then downloaded under the situation which the entire system hardware connects do not change,and finally output the special profile which user needs.The multi-wave signal generator generates wave which the conventional function signal generators can’t make.Moreover because of the programmable reset feature of the CPLD,the generator can change the wave data conveniently and practice easily.The whole design realizes by the VHDL  programmer.Its design process has simple feature,easy modification and high transportation.
Keywords:Signal Generator Design;Three-phase;VHDL;CPLD;MAX+ plus II
目    錄
1       1
2基于CPLD的三相多波形函數(shù)發(fā)生器設(shè)計(jì)      3
2.1 波形發(fā)生器系統(tǒng)的設(shè)計(jì)方法及其技術(shù)指標(biāo)   3
2.1.1設(shè)計(jì)方式概述      3
2.1.2 三相函數(shù)多波形發(fā)生器技術(shù)指標(biāo)      5
2.1.3三相波形發(fā)生器設(shè)計(jì)方法概述      5
2.2 設(shè)計(jì)方案   6
2.2.1 三相函數(shù)發(fā)生器設(shè)計(jì)原理      6
2.2.2 多波形發(fā)生器的各個(gè)波形模塊設(shè)計(jì)方式簡介      9
2.3 調(diào)試部分   12
2.3.1  CPLD在使用中遇到的問題      12
2.3.2 控制電路的調(diào)試      13
2.3.3 DAC電路的調(diào)試      13
2.3.4  程序的調(diào)試      13
2.3.5 硬件電路的調(diào)試      13
結(jié)       15
參考文獻(xiàn)      16
附錄1 三相多波形函數(shù)發(fā)生器各模塊的程序      17
附錄2 元件介紹      23
1 DAC0832   23
2 LM324   24
3 PM7128SLC84-15芯片   25
附錄3電路原理圖      26
附錄4 英文資料及譯文      27
1英文資料   27
2英文譯文   36
      43

      
1 引 言
現(xiàn)代電子技術(shù)的核心技術(shù)是EDA(Electronic Design Automation)。EDA技術(shù)就是依賴強(qiáng)大的電子計(jì)算機(jī)在EDA開發(fā)平臺上,對硬件描述語言HDL(Hardware Description Language)系統(tǒng)邏輯描述手段完成的設(shè)計(jì)文件,自動的完成邏輯編譯、邏輯化簡、邏輯分割、邏輯綜合、結(jié)構(gòu)綜合(布局布線),以及邏輯優(yōu)化和仿真測試,直至實(shí)現(xiàn)既定的電子線路系統(tǒng)功能。EDA技術(shù)使得設(shè)計(jì)者的工作僅限于利用軟件的方式,即利用硬件描述語言和EDA軟件來完成對系統(tǒng)硬件功能的實(shí)現(xiàn)。
EDA使得電子技術(shù)領(lǐng)域各學(xué)科的界限更加模糊,更加護(hù)為包容:模擬與數(shù)字、軟件與硬件、系統(tǒng)與器件、行為與結(jié)構(gòu)、ASIC(Application Specific Integrated Circuit,專用集成電路)與FPGA(Field Programmable Gate Array)等。
EDA技術(shù)在21世紀(jì)得到的很大進(jìn)步,例如更大規(guī)模的FPGA和CPLD(Complex Programmable Logic Device)器件的不斷推出;軟硬件IP核(Intellectual Property)在電子行業(yè)的產(chǎn)業(yè)領(lǐng)域、技術(shù)領(lǐng)域和設(shè)計(jì)應(yīng)用領(lǐng)域得到進(jìn)一步的確認(rèn);系統(tǒng)級、行為驗(yàn)證級硬件描述語言(System C)的出現(xiàn),使復(fù)雜電子系統(tǒng)和驗(yàn)證趨于簡單。
硬件描述語言VHDL[全名是VHSIC(Very High Speed Integrated Circuit) Hardware Description Language]是EDA技術(shù)的重要組成部分,由美國國防部發(fā)起創(chuàng)建,由IEEE (The Institute of Electrical and Electronics Engineers)進(jìn)一步發(fā)展并發(fā)布,是硬件描述語言的業(yè)界標(biāo)準(zhǔn)之一。
VHDL語言具有很強(qiáng)的電路描述和建模能力,能從多個(gè)層次對數(shù)字系統(tǒng)進(jìn)行建模和描述,從而大大簡化了硬件設(shè)計(jì)任務(wù),提高了設(shè)計(jì)效率和可靠性。
VHDL具有與具體硬件電路無關(guān)和與設(shè)計(jì)平臺無關(guān)的特性,并且具有良好的電路行為描述和系統(tǒng)描述的能力,VHDL支持各種模式的設(shè)計(jì)方法:自頂向下與自頂向上或混合方法,在面對當(dāng)今電子產(chǎn)品生命周期縮短,需要多次重新設(shè)計(jì)以融入最新技術(shù)、改變工藝等方面,VHDL具有良好的適應(yīng)性。
向器件作編程或適配習(xí)慣上叫做下載,這要通過下載軟件平臺或者下載電纜實(shí)現(xiàn)。這是設(shè)計(jì)過程中的重要步驟,可以利用MAX+PLUSⅡ軟件在計(jì)算機(jī)上完成設(shè)計(jì)并下載到目標(biāo)器件中。EDA工具軟件大致可以分為5個(gè)模塊:設(shè)計(jì)輸入編輯器,仿真器,HDL綜合器,適配器,下載器等。
Direct Digital Synthesis(DDS)是20世紀(jì)60年代末出現(xiàn)的第三代頻率合成技術(shù)。該技術(shù)從相位概念出發(fā),以時(shí)域采樣定理為基礎(chǔ),在時(shí)域中進(jìn)行頻率合成,它以可編程邏輯器件(CPLD)作為控制及數(shù)據(jù)處理的核心,將存于Flash ROM的波形數(shù)據(jù)用D/A轉(zhuǎn)換器快速恢復(fù)。DDS頻率轉(zhuǎn)換速度快,頻率分辨率高,并在頻率轉(zhuǎn)換時(shí)可保持相位的連續(xù),因而易于實(shí)現(xiàn)多種調(diào)制功能。DDS是全數(shù)字化技術(shù),其幅度、相位、頻率均可實(shí)現(xiàn)程控,并可通過更換波形數(shù)據(jù)靈活實(shí)現(xiàn)任意波形。此外,DDS易于單片集成,體積小,價(jià)格低,功耗小,因此DDS技術(shù)近年來得到了飛速發(fā)展,其應(yīng)用也越來越廣泛。基于CPLD和DDS技術(shù)的函數(shù)發(fā)生器可以實(shí)現(xiàn)信號波形的多樣化,而且方便可靠,簡單經(jīng)濟(jì),系統(tǒng)易于擴(kuò)展,同時(shí)可大大提高輸出信號的帶寬。
CPLD為連續(xù)式互連結(jié)構(gòu),器件引腳到內(nèi)部邏輯單元,以及各邏輯單元之間,是通過全局互連總線中的多路選擇器或交叉矩陣選通構(gòu)成信號通路。其主要特點(diǎn)是內(nèi)部時(shí)間延時(shí)與器件邏輯結(jié)構(gòu)等無關(guān),各模塊之間提供了具有固定時(shí)延的快速互連通道,因此可以預(yù)測時(shí)間延時(shí),容易消除競爭冒險(xiǎn)等現(xiàn)象,便于各種邏輯電路設(shè)計(jì)。
本文的DDS系統(tǒng)以CPLD為核心,采用直接數(shù)字合成技術(shù),輔以必要的模擬電路,構(gòu)成一個(gè)波形穩(wěn)定,精度較高的函數(shù)信號發(fā)生器。本系統(tǒng)的特色在于CPLD中集成了大部分電路,使系統(tǒng)大大簡化,除輸出所需的正弦波、方波、三角波,還可進(jìn)行波形存儲,三種波形之間的相位差均為120°,是三相的CPLD系統(tǒng)。
DDS的理論依據(jù)是奈奎斯特抽樣定理。根據(jù)該定理,對于一個(gè)周期正弦波連續(xù)信號,可以沿其相位軸方向,以等量的相位間隔對其進(jìn)行相位/幅度抽樣,得到一個(gè)周期性的正弦信號的離散相位的幅度序列,并且對模擬幅度進(jìn)行量化,量化后的幅值采用相應(yīng)的二進(jìn)制數(shù)據(jù)編碼。這樣就把一個(gè)周期的正弦波連續(xù)信號轉(zhuǎn)換成為一系列離散的二進(jìn)制數(shù)字量,然后通過一定的手段固化在只讀存儲器ROM 中,每個(gè)存儲單元的地址即是相位取樣地址,存儲單元的內(nèi)容是已經(jīng)量化了的正弦波幅值。這樣的一個(gè)只讀存儲器就構(gòu)成了一個(gè)與2π周期內(nèi)相位取樣相對應(yīng)的正弦函數(shù)表,因它存儲的是一個(gè)周期的正弦波波形幅值,因此又稱其為正弦波形存儲器。此時(shí),正弦波形信號的相位與時(shí)間成線性關(guān)系。根據(jù)這一基本關(guān)系,在一定頻率的時(shí)鐘信號作用下,通過一個(gè)線性的計(jì)數(shù)時(shí)序發(fā)生器所產(chǎn)生的取樣地址對已得到的正弦波波形存儲器進(jìn)行掃描,進(jìn)而周期性地讀取波形存儲器中的數(shù)據(jù),其輸出通過數(shù)模轉(zhuǎn)換器及低通濾波器就可以合成一個(gè)完整的、具有一定頻率的正弦波信號。DDS電路一般包括系統(tǒng)時(shí)鐘、相位累加器、相位調(diào)制器、ROM 查找表、D/A轉(zhuǎn)換器和低通濾波器(LPF)。
基于CPLD和DDS技術(shù)的函數(shù)發(fā)生器可以實(shí)現(xiàn)信號波形的多樣化,而且方便可靠,簡單經(jīng)濟(jì),系統(tǒng)易于擴(kuò)展,同時(shí)可大大提高輸出信號的帶寬。
  
2基于CPLD的三相多波形函數(shù)發(fā)生器設(shè)計(jì)
2.1 波形發(fā)生器系統(tǒng)的設(shè)計(jì)方法及其技術(shù)指標(biāo)
2.1.1設(shè)計(jì)方式概述
在電子工程設(shè)計(jì)與測試中,常常需要一些具有特殊要求的信號,要求其波形產(chǎn)生多,頻率方便可調(diào)。通常的信號產(chǎn)生器難以滿足要求,市場上出售的任意信號產(chǎn)生器價(jià)格昂貴。在老師指導(dǎo)下,結(jié)合實(shí)際要求,我設(shè)計(jì)了一種基于CPLD的三相多波形函數(shù)發(fā)生器,能輸出正弦波、三角波、方波等波形信號,波形信號之間的相位差均為120˚。
復(fù)雜可編程邏輯器件CPLD器件可以代替許多分立元器件,從而大大降低了電路板的復(fù)雜程度。對于CPLD器件的設(shè)計(jì)一般可以分為設(shè)計(jì)輸入、設(shè)計(jì)實(shí)現(xiàn)和器件編程三個(gè)設(shè)計(jì)步驟以及相應(yīng)的功能仿真、時(shí)序仿真和器件測試三個(gè)設(shè)計(jì)驗(yàn)證過程。
設(shè)計(jì)輸入有多種方式,目前最常用的有電路圖和硬件描述語言兩種,對于簡單的設(shè)計(jì),可采用原理圖的方式設(shè)計(jì),對于復(fù)雜的設(shè)計(jì)可使用原理圖或硬件描述語言(Verilog, AHDL, VHDL語言),或者兩者混用,采用層次化設(shè)計(jì)方法,分模塊層次地進(jìn)行描述。
原理圖設(shè)計(jì)方法主要是按照數(shù)字系統(tǒng)的功能采用具體的邏輯器件組合來實(shí)現(xiàn)的把這些由具體器件實(shí)現(xiàn)邏輯功能的電路圖輸入到軟件當(dāng)中。這種設(shè)計(jì)方法比較直觀。      
硬件描述語言設(shè)計(jì)方法主要把數(shù)字系統(tǒng)的邏輯功能用硬件語言來描述,采用VHDL語言描述的數(shù)字系統(tǒng)大致有三種;其一稱為行為描述,它用幾個(gè)包含著若干順序語句的進(jìn)程描述輸入與輸出之間的轉(zhuǎn)換關(guān)系;其二是數(shù)據(jù)流描述,用一系列的并發(fā)信號賦值語句描述輸入與輸出之間的關(guān)系;其三為結(jié)構(gòu)描述方式,是通過元件之間的互聯(lián)關(guān)系描述輸出電路的結(jié)構(gòu)。無論是原理圖輸入還是描述語言輸入都各有其優(yōu)點(diǎn),原理圖設(shè)計(jì)適合于對器件比較熟悉,元件之間的互聯(lián)清楚,并且需要的設(shè)計(jì)比較簡單的情況,而對于器件不熟悉,設(shè)計(jì)復(fù)雜的情況來說,使用硬件描述語言要方便一些。
設(shè)計(jì)實(shí)現(xiàn):設(shè)計(jì)實(shí)現(xiàn)是指從設(shè)計(jì)輸入文件到熔絲圖文件(CPLD)的編譯過程。在該過程中,編譯軟件自動地對設(shè)計(jì)文件進(jìn)行綜合、優(yōu)化,并針對所選中的器件進(jìn)行映射、布局、布線、產(chǎn)生相應(yīng)的熔絲圖或位流數(shù)據(jù)文件,在此過程中,由于編譯軟件給系統(tǒng)管腳的分配是比較雜亂的,為了電路板布線的方便,用戶可以對輸入/輸出管腳進(jìn)行管腳鎖定。
器件編程:器件編程就是將熔絲圖文件或位流數(shù)據(jù)文件下載到相應(yīng)的CPLD器件中,并與CPLD器件的管腳相對應(yīng),所用的軟件是ALTARE公司提供的CPLDDN4,這是ALTARE公司CPLD系列的專用下載軟件。
設(shè)計(jì)校驗(yàn):對應(yīng)于設(shè)計(jì)輸入、設(shè)計(jì)實(shí)現(xiàn)和器件編程,設(shè)計(jì)驗(yàn)證分為了功能仿真、時(shí)序仿真、器件測試三個(gè)部分。功能仿真驗(yàn)證設(shè)計(jì)的邏輯功能,在設(shè)計(jì)輸入過程中,對部分功能或整個(gè)設(shè)計(jì)均可進(jìn)行仿真;時(shí)序仿真是在設(shè)計(jì)實(shí)現(xiàn)以后,針對器件的布局、布線方案進(jìn)行時(shí)延仿真,分析定時(shí)關(guān)系:器件測試是在器件編程后,通過實(shí)驗(yàn)或借助測試工具,測試器件最終的功能和性能指標(biāo)。
在設(shè)計(jì)中系統(tǒng)的接口電路、信號源的大多數(shù)邏輯控制都在CPLD中實(shí)現(xiàn)。
在該流程中仿真是重點(diǎn)。仿真又可分為功能仿真(前仿真)與時(shí)序仿真(后仿真)。根據(jù)電路設(shè)計(jì)編制仿真文件,在文件被綜合前進(jìn)行仿真,可驗(yàn)證電路功能;在保證電路已實(shí)現(xiàn)設(shè)計(jì)的功能后,進(jìn)行綜合并對綜合的結(jié)果進(jìn)行時(shí)序仿真,可驗(yàn)證電路的時(shí)序是否滿足要求。當(dāng)電路的前仿真與后仿真都滿足要求,則電路的設(shè)計(jì)是成功的。然后設(shè)置器件類型并進(jìn)行引腳鎖定,再對文件進(jìn)行適合于所加配置的邏輯綜合;通過后即完成設(shè)計(jì)。最后結(jié)合系統(tǒng)中的其它部分進(jìn)行連調(diào),如發(fā)現(xiàn)問題可修改設(shè)計(jì)。
本設(shè)計(jì)中使用了ALTERA公司提供的配套軟件MAX+PLUSII進(jìn)行文件的輸入、編譯和下載。MAX+PLUSII的軟件設(shè)計(jì)主要由設(shè)計(jì)輸入、項(xiàng)目編譯、項(xiàng)目校驗(yàn)和器件編程等四部分構(gòu)成。

圖2.1-1 CPLD設(shè)計(jì)流程圖

圖2.1-2 MUS+PLUSⅡ設(shè)計(jì)的主要組成部分
2.1.2 三相函數(shù)多波形發(fā)生器技術(shù)指標(biāo)
三種波形之間的相位差均為120°,可以同時(shí)輸出,具有三相的功能。對以下三種波形的頻率均要求:產(chǎn)生的頻率都可以預(yù)置;輸出的信號幅值能在100mv~3V的范圍內(nèi)調(diào)整。
對正弦波信號的要求為:信號頻率范圍:20Hz-20kHz之間可調(diào),步長為10Hz;
非線性失真系數(shù)≤3%。
對方波信號的要求是:信號頻率范圍:20Hz-20kHz;上升和下降時(shí)間<1μs;
對三角波信號的要求為:信號頻率范圍:20Hz-20kHz之間可調(diào)。
2.1.3三相波形發(fā)生器設(shè)計(jì)方法概述
Direct Digital Synthesis(DDS)是20世紀(jì)60年代末出現(xiàn)的第三代頻率合成技術(shù)。用DDS技術(shù)來設(shè)計(jì)制作一個(gè)基于CPLD的三相多波形函數(shù)發(fā)生器,并使它能輸出正弦波、三角波、方波等波形信號源,三種波形的相位差為120˚。
波形發(fā)生器中的CPLD芯片是DDS的控制及數(shù)據(jù)處理的核心,電路系統(tǒng)主要由時(shí)鐘信號發(fā)生器、波形數(shù)據(jù)產(chǎn)生器和A/D轉(zhuǎn)換電路組成。波形數(shù)據(jù)產(chǎn)生器由數(shù)控分頻器、三角波產(chǎn)生模塊、正弦波產(chǎn)生模塊、方波產(chǎn)生模塊等構(gòu)成。在時(shí)鐘信號發(fā)生器作用下,波形數(shù)據(jù)產(chǎn)生器生成頻率可變的波形數(shù)據(jù)數(shù)字信號,由 A/D轉(zhuǎn)換電路放大處理后輸出最終所需要的波形信號。
    各個(gè)模塊的實(shí)現(xiàn)主要采用MAX+ plus II開發(fā)平臺,由VHDL編程實(shí)現(xiàn)。先完成外圍電路的焊接之后,用CPLD的專屬下載軟件把編寫完的程序燒錄入CPLD芯片,再對整個(gè)波形發(fā)生器進(jìn)行調(diào)試,使其達(dá)到預(yù)期的效果。
2.2 設(shè)計(jì)方案
2.2.1 三相函數(shù)發(fā)生器設(shè)計(jì)原理
DDS制作的三相波形發(fā)生器主要由標(biāo)準(zhǔn)參考頻率源、相位累加器、波形存儲器、數(shù)模轉(zhuǎn)換器、低通平滑濾波器構(gòu)成。在時(shí)鐘脈沖的控制下,頻率控制字K由相位累加器得到相應(yīng)的相碼,相碼尋址波形存儲器進(jìn)行相碼——幅碼變換輸出不同的幅度編碼,再經(jīng)過數(shù)模變換器得到相應(yīng)的階梯波,最后經(jīng)低通濾波器對階梯波進(jìn)行平滑,即得到由頻率控制字決定的連續(xù)變化的輸出波形。其中,參考頻率源一般是一個(gè)高穩(wěn)定的晶體振蕩器,其輸出信號用于DDS中各部件同步工作。因此,DDS輸出的合成信號的頻率穩(wěn)定度與晶體振蕩器是一樣的。
DDS系統(tǒng)核心是N位相位累加器。相位累加器的結(jié)構(gòu)一般N位字長的二進(jìn)制加法器與一個(gè)由時(shí)鐘觸發(fā)的N位二進(jìn)制相位累加寄存器級聯(lián)構(gòu)成,加法器的一個(gè)輸入端與相位寄存器的輸出端相連,另一個(gè)輸入端是外部的頻率控制字K。在每一個(gè)參考時(shí)鐘脈沖輸入時(shí),把頻率字累加一次,并把相加后的結(jié)果送至累加寄存器的數(shù)據(jù)輸出端。由于相位累加器的輸出連接在波形存儲器的地址線上。因此其輸出的改變就相當(dāng)于進(jìn)行查表。系統(tǒng)中的參考時(shí)鐘通常是一個(gè)高穩(wěn)定性的晶體振動器,用來作為系統(tǒng)時(shí)鐘同步整個(gè)系統(tǒng)的各組成部分。在系統(tǒng)時(shí)鐘脈沖的作用下,相位累加器不停地累加.也即不停地查表,不停地把波形重新合成出來,當(dāng)相位累加器累加滿時(shí)就會產(chǎn)生一次溢出,完成一個(gè)周期性的動作,這個(gè)周期就是DDS合成信號的一個(gè)頻率周期,累加器的溢出頻率就是DDS輸出的信號頻率。。濾波器則進(jìn)一步平滑D/A轉(zhuǎn)換器輸出的近似所需波形的鋸齒階梯波.同時(shí)濾出不必要的雜波。

   
圖2.2-1 DDS的原理圖

圖2.2-2 相位累加器的結(jié)構(gòu)示意圖
若頻率控制字設(shè)為M,相位累加器為N位,參考時(shí)鐘頻率fс,則輸出頻率為Mfс/2a(a=N)。DDS的輸出頻率下限對應(yīng)于頻率控制字M=0的情形,即輸出頻率為f。=0。根據(jù)Nyquist采樣定理,DDS的輸出上限頻率為時(shí)鐘頻率的一半,即f。=½fс。但由于實(shí)際輸出低通濾波器的非理想特性,可實(shí)現(xiàn)的頻率上限為-2/5fo。即若參考頻率為 ,DDS的輸出頻率范圍是0—2/5fc。由于DDS的模塊化結(jié)構(gòu),其輸出波形由波形查找表中的數(shù)據(jù)來決定,因此,只需改變查找表中的數(shù)據(jù),即可以方便地利用DDS產(chǎn)生出正弦波之外的其他波形,如余弦波、方波、三角波。鋸齒波甚至調(diào)頻、調(diào)相波以及帶限的噪聲信號。
三相分時(shí)復(fù)用原理:分時(shí)復(fù)用的原理是各路信號只占用同一信道的不同時(shí)間間隙進(jìn)行信號傳輸。具體到本電路就是利用對正弦表尋址的高速度,使一個(gè)正弦表在不同時(shí)間段查尋不同相的正弦波的幅值,以達(dá)到減少正弦表所占用的CPLD資源的目的。
電路的具體實(shí)現(xiàn):三路在相位上互差120。的地址數(shù)據(jù)并行輸入通過一個(gè)三選一的選擇器來進(jìn)行選擇,選擇器的控制端接三進(jìn)制的計(jì)數(shù)器。如,計(jì)數(shù)器為0時(shí),輸出的是A相的地址。計(jì)數(shù)器為1時(shí),輸出的是B相的地址.計(jì)數(shù)器為2時(shí),輸出的是C相的地址。因此只要使輸入的三相地址周期性變化,就實(shí)現(xiàn)了并行輸入的三相地址數(shù)據(jù)在時(shí)間上形成了連續(xù),也就實(shí)現(xiàn)了三相地址數(shù)據(jù)的合成。這樣就可以利用一個(gè)正弦表來得到三相的正弦值,把正弦表減少到?jīng)]有采樣分時(shí)復(fù)用時(shí)的1/3。數(shù)據(jù)的分離:通過分時(shí)復(fù)用,使得通過查尋一個(gè)正弦表得到在相位上互差的三相正弦波的幅值,但是由于輸入的三相地址在時(shí)間上是連續(xù)的,即對ROM表尋址的地址只有一路,因此,雖然得到了三相正弦波的幅值,可是他們是按ADDRESS中各相之間的關(guān)系混合在一起的,因此,必需對所得到的幅值進(jìn)行分離。才能得到三相正弦波。由波形ADDRESS中各相地址的相互關(guān)系可知,分離數(shù)據(jù)只要把分時(shí)復(fù)用的合成部分反接即可。
參數(shù)選擇:相位累加器的字長決定了頻率分辨率.設(shè)計(jì)中取N=16。由于CPLD中硬件資源(主要是存儲器EAB容量)所限,需對相位累加器輸出的16位相位進(jìn)行截?cái)啵@里取16位相位的前l(fā)0位進(jìn)入相位,幅度轉(zhuǎn)換電路,即A=10,輸出數(shù)字幅度序列定位10位(D=10)。

圖2.2-3 正弦波波形數(shù)據(jù)產(chǎn)生模塊
這樣確定的基本參數(shù)如下:
(1)時(shí)鐘頻率和輸出帶寬根據(jù)已知的外部時(shí)鐘源的頻率fс=12MHz.那么本系統(tǒng)最高輸出頻率位2/5fo=4.8 MHz。
(2)頻率范圍由于要求輸出的信號頻率范圍比較大.因此在12MHz時(shí)鐘源引入CPLD后,在相位累加器之前增加了一個(gè)時(shí)鐘分頻器,可實(shí)現(xiàn)10、100、1000、10000次分頻。根據(jù)輸出信號的頻率和精度要求,選擇不同的分頻比將50MHz時(shí)鐘頻率降低,再作位相位累加器和波形產(chǎn)生電路的參考時(shí)鐘。
相位/幅度變換用CPLD實(shí)現(xiàn)相位/幅度變換電路是設(shè)計(jì)的一個(gè)難點(diǎn)。根據(jù)DDS原理,將不同波形的量化數(shù)據(jù)存儲于波形查找表中,即可完成多波形發(fā)生的功能。ROM 的功能在本方案選用的Altera公司生產(chǎn)的CPLD芯片中實(shí)現(xiàn),因此在實(shí)際設(shè)計(jì)中,要充分考慮表格數(shù)據(jù)的優(yōu)化問題。根據(jù)上面的參數(shù)選擇,取相位累加器字長M=16,截取前10位有效位,輸出幅度序列定位l0位。這樣直接實(shí)現(xiàn)正弦波形存儲需要210xl0bitROM。正弦查找表可調(diào)用Maxplux2軟件中的“l(fā)pm_rom”宏模塊實(shí)現(xiàn)。
CPLD器件選擇ALTERA公司的——EPM7128S84-15。它有128個(gè)宏單元、2500個(gè)等效邏輯門、15ns的速度、PLCC84封裝形式。除電源引腳、地線引腳、全局控制引腳和JTAG引腳外,共提供了64個(gè)可用I/O腳,這些引腳可以任意配置為輸入、輸出和雙向方式。該器件的特點(diǎn)如下:
l是 一 種高性能的CM0SE EPROM器件。
l器 件 可通過JTAG接口實(shí)現(xiàn)在線編程。
l內(nèi) 置 JTAG BST電路。
l可 編 程宏單元觸發(fā)器具有專用清除、置位、時(shí)鐘和時(shí)鐘使能控制。
l 可 配 置的擴(kuò)展乘積項(xiàng)分配,允許向每個(gè)宏單元提供多達(dá)32個(gè)乘積項(xiàng)。
EPM7128S器件是通過4個(gè)引腳的JTAG接口進(jìn)行在線編程(ISP)的。ISP允許快速、有效地在設(shè)計(jì)開發(fā)過程中重復(fù)編程。JTAG(Joint Test Action Group)是歐洲的JETAG組織提出的邊界掃描標(biāo)準(zhǔn),即IEEE1149. 1標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)提供了板級和芯片級的測試,所有JTAG測試功能僅需一條四線或五線的接口及相應(yīng)的軟件即能完成,利用JTAG能測試電路板的連接情況以及電路板的正確性。JTAG的接口信號為:
lTCK (Test Clock):用于控制狀態(tài)機(jī)及傳遞數(shù)據(jù)。
lTMS( Test Mode Select):選擇邊界掃描模式,控制狀態(tài)機(jī)測試操作。
lDI ( Test Data Input):在TCK的一升沿,接受串行數(shù)據(jù)。
lTDO( Test Data Output):在TCK的下降沿,輸出串行數(shù)據(jù)。
  我們采用的是并口下載電纜ByteBlaster,它可以對MAX7000S系列進(jìn)行在線編程。該下載電纜具有以下幾個(gè)部分:與PC機(jī)并行口相連的25針插頭、與PCB板插座相連的10針插頭以及25針到10針的變換電路。可用于實(shí)現(xiàn)波形相位、幅度變換查找表(ROM)結(jié)構(gòu)。DDS主要分為相位累加器、相位/幅度轉(zhuǎn)換單元(含ROM)、數(shù)模變換器以及低通濾波等幾個(gè)部分。
相位累加器和相位/幅度轉(zhuǎn)換單元用CPLD實(shí)現(xiàn),再將輸出外接至DAC器件,最后通過低通濾波器即可得到所需波形。
圖2.2-4 CPLD的外圍電路連接圖
2.2.2 多波形發(fā)生器的各個(gè)波形模塊設(shè)計(jì)方式簡介
數(shù)控分頻器:數(shù)控分頻器的功能是在輸入端輸入不同數(shù)據(jù)時(shí),對輸入時(shí)鐘產(chǎn)生不同的分頻比,輸出不同頻率的時(shí)鐘,以改變輸出信號的頻率。設(shè)計(jì)時(shí)利用并行預(yù)置數(shù)的減法計(jì)數(shù)器實(shí)現(xiàn),他的工作原理是:減法計(jì)數(shù)器在并行預(yù)置數(shù)的基礎(chǔ)上,在時(shí)鐘的作用下進(jìn)行減計(jì)數(shù),當(dāng)計(jì)數(shù)值為零時(shí)產(chǎn)生溢出信號,加載預(yù)置數(shù)據(jù),并且將溢出信號作為分頻器的輸出信號,實(shí)現(xiàn)分頻信號輸出。其分頻系數(shù)N為預(yù)置數(shù)的值。為了得到占空比為50 的矩形時(shí)鐘信號,將輸出再進(jìn)行二分頻。由此,該分頻器的總分頻系數(shù)為2N。
三角波波形數(shù)據(jù)產(chǎn)生模塊:該模塊可設(shè)計(jì)一個(gè)可逆計(jì)數(shù)器實(shí)現(xiàn)。設(shè)計(jì)時(shí)設(shè)置一變量作為工作狀態(tài)標(biāo)志,在此變量為全0時(shí),當(dāng)檢測到時(shí)鐘的上升沿時(shí)進(jìn)行加同一個(gè)數(shù)操作,為全1時(shí),進(jìn)行減同一個(gè)數(shù)操作。由于A/D轉(zhuǎn)換采用8位的DAC0832芯片,且設(shè)64個(gè)時(shí)鐘為一個(gè)三角波周期,則輸出Q每次加8/減8。
正弦波波形數(shù)據(jù)產(chǎn)生模塊:用加法計(jì)數(shù)器和譯碼電路完成。首先對幅度為1的正弦波的一個(gè)周期分為64個(gè)采樣點(diǎn),根據(jù)正弦波的函數(shù)關(guān)系計(jì)算得到每一點(diǎn)對應(yīng)的幅度值,然后量化為8位二進(jìn)制數(shù)據(jù),最大值為255,最小值為0,以此得到正弦波波表。加法計(jì)數(shù)器生成譯碼電路的64個(gè)輸入值,譯碼電路查波表輸出。無論是相位累加器波形合成法還是基于RAM查詢的波形合成法,都可以表示為合成信號的幅度與時(shí)間或是相位的關(guān)系,信號的幅度坐標(biāo)存放在波形存儲器中,通過地址發(fā)生器讀取波形數(shù)據(jù),完成數(shù)字波形。
方波波形數(shù)據(jù)產(chǎn)生模塊:設(shè)計(jì)一個(gè)比較器,經(jīng)過低通濾波器后的正弦波通過它后才能產(chǎn)生方波。通過交替送出全0和全1,并給以32個(gè)時(shí)鐘延時(shí)實(shí)現(xiàn),64個(gè)時(shí)鐘為一個(gè)周期。
數(shù)據(jù)選擇器:用CASE語句設(shè)計(jì)完成。在CORTROL的控制下選擇輸出一種波形數(shù)據(jù)輸出,同時(shí)完成兩種波形的線性組合。波形組合是將波形每一時(shí)刻的數(shù)值相加,為了不超出DAC0832的輸出范圍,做相應(yīng)的除2操作。
首先由控制寄存器將外部控制器送入的數(shù)據(jù)轉(zhuǎn)換為頻率和幅度控制字;然后再由分頻器根據(jù)頻率控制字進(jìn)行分頻并將輸出作為尋址計(jì)數(shù)器的時(shí)鐘;尋址計(jì)數(shù)器的尋址空間為360字節(jié),可對ROM中的查找表進(jìn)行尋址;而通過模360加法器可以產(chǎn)生120o的相位差。
控制寄存器的設(shè)計(jì):控制寄存器設(shè)計(jì)主要是將外部控制器輸入的數(shù)據(jù)轉(zhuǎn)換為頻率和幅度控制字。
分頻比可變的分頻器模塊設(shè)計(jì):該設(shè)計(jì)主要是根據(jù)頻率控制字決定分頻倍數(shù),從而輸出與頻率控制字相對應(yīng)的頻率時(shí)鐘,此模塊的輸出可作為尋址計(jì)數(shù)器的時(shí)鐘。
尋址計(jì)數(shù)器:主要用于產(chǎn)生對ROM尋址輸出波形數(shù)據(jù)的尋址信號,尋址空間為360字節(jié)。
模360加法器設(shè)計(jì):此模塊用來產(chǎn)生120°的相移,以形成三相相差為120°的輸出波形。由于尋址空間為360字節(jié),故在輸出尋址數(shù)大于360時(shí),須對360取模。
查找表ROM設(shè)計(jì):此模塊主要用于存儲各種波形數(shù)據(jù),以便通過尋址計(jì)數(shù)器尋址輸出并經(jīng)D/ A轉(zhuǎn)換來輸出各種波形,其中包括正弦波、三角波、方波。
CPLD幅度控制字經(jīng)D/A轉(zhuǎn)換輸出后,可作為查找表輸出DAC的參考電壓,該參考電壓可通過改變幅度控制字來進(jìn)行改變,從而改變輸出信號的幅度。
圖2.2-5 CPLD的內(nèi)部結(jié)構(gòu)設(shè)計(jì)框圖
A/D轉(zhuǎn)換采用了8位的DAC0832芯片。波形的產(chǎn)生是采用直接數(shù)字頻率合成技術(shù)DDFS按照不同頻率要求以頻率控制字n為步進(jìn)對相位增量進(jìn)行累加,以累加相位值作為地址碼讀取存放于ROM內(nèi)的波形數(shù)據(jù),經(jīng)D/A轉(zhuǎn)換和幅度控制,再濾波即可得到波形。輸出波形頻率與尋址脈沖頻率成正比,因此改變脈沖頻率就可以改變輸出波形頻率。D/A轉(zhuǎn)換電路的電路連接圖主要由DAC0832和 LM324構(gòu)成,附加了一些電容和電阻增加了其穩(wěn)定性,它先通過DAC0832信號對信號進(jìn)行數(shù)模轉(zhuǎn)換,恢復(fù)為模擬信號后再由LM324構(gòu)成的放大電路進(jìn)行放大處理,使波形發(fā)生器達(dá)到預(yù)期的效果。
圖2.2-6  DAC0832外圍連接圖
邏輯時(shí)序仿真:利用MAX+PLUXⅡ進(jìn)行系統(tǒng)仿真。在時(shí)序波形中,clk為系統(tǒng)的時(shí)鐘,這里設(shè)定仿真的時(shí)鐘為200ns(晶振為12Mhz);freqin為頻率字輸入,它可以在1-1024取任意值,這里取freqin=l(即相位累加增量∆θ=360˚ /1024=0.35˚), 則f。 = 4.88kHz;pha-seina、phaseinb、phaseinc分別為三相互差120˚的相位字的輸入, 取值分別為:phaseina=0、phaseinb=341、phaseinc=683;romadddr_a、romadddr_b、ro-madddr c分別為三相分時(shí)復(fù)用電路中的A相、B相和C相的相位值(三相互差),romadddr_abc為合成一路后的相位值。
為了便于在同一波形中可以同時(shí)看清輸出數(shù)據(jù)中的各項(xiàng),對仿真波形進(jìn)行截取,為約3.5us-8.6US時(shí)的時(shí)序波形,ddsout_abc為查得 E弦表所得的三相混合數(shù)據(jù),ddsout_a、ddsout_b、ddsout_c分別為數(shù)據(jù)分離后A相、B相和C相的相位對應(yīng)的幅度值,由三相正弦波幅度之間的相互關(guān)系和變化趨勢得知.輸出的數(shù)據(jù)是正確的。由于DDS技術(shù)是從相位概念出發(fā),根據(jù)確定的相位的有效字長組合,會產(chǎn)生相位截?cái)嗾`差。本設(shè)計(jì)的相位誤差計(jì)算:每相正弦信號輸出延時(shí)了2個(gè)系統(tǒng)時(shí)鐘周期,即At=2Tc。因此相位誤差為:∆θ=2π*f。*∆T,則∆θ=0.7˚。(這里設(shè)頻率字M=1,字長N=10)。
整個(gè)系統(tǒng)除晶體振蕩器和A/D轉(zhuǎn)換外,全部集成在一片CPLD芯片上。它可輸出三相頻率、幅度可調(diào)的正弦波、三角波、方波。任意波形模塊可由用戶自行編輯所需波形數(shù)據(jù),下載到CPLD芯片上,在不改變整個(gè)系統(tǒng)硬件連接的情況下,輸出用戶所需的波形。另外由于CPLD具有可編程重置特性,因而可以方便地更換波形數(shù)據(jù),且簡單易行,帶來極大方便。
圖2.2-7 波形仿真圖
2.3 調(diào)試部分
2.3.1  CPLD在使用中遇到的問題
CPLD芯片提供了很多個(gè)電源引腳,為了減少芯片內(nèi)部的干擾,盡量在每個(gè)電源引腳處加一個(gè)退藕電容,一般一個(gè)芯片周圍不少于6個(gè)電容。
CPLD如果不能下載,可能有多種問題,先檢查芯片的各個(gè)接地腳和電源腳是否全部連接正確,然后看四個(gè)JTAG引腳是否連接正確,可在下載時(shí)觀測四個(gè)引腳上的信號。
對于不使用的全局變量,最好連接到地線。在編譯的時(shí)候可能會出現(xiàn)所用的門數(shù)不多,但是編譯通不過的情況,可以把邏輯綜合的選項(xiàng)重新設(shè)置一下。
在邏輯綜合的時(shí)候最好選擇設(shè)計(jì)環(huán)境中對于特定的芯片所提供的綜合條件,以免造成不必要的麻煩。
2.3.2 控制電路的調(diào)試
對控制電路進(jìn)行時(shí)序仿真,在仿真圖中幾乎總會出現(xiàn)我們所不需要的毛刺,這些毛刺有時(shí)會給系統(tǒng)帶來致命的影響,我們必須采取措施消除這樣的毛刺。由于毛刺一般出現(xiàn)在信號發(fā)生電平轉(zhuǎn)換的時(shí)刻,也即輸出信號的建立時(shí)間內(nèi),而在輸出信號的保持時(shí)間內(nèi)不大會出現(xiàn)。因此,若帶有毛刺的信號持續(xù)時(shí)間較長,我們可在輸出信號的持續(xù)時(shí)間內(nèi)用一定寬度的高電平脈沖選通一個(gè)與門來獲得該信號,此時(shí)毛刺自然已被消除。高電平脈沖可由軟件控制鎖存器來得到。若帶有毛刺的信號保持時(shí)間較短,可利用D觸發(fā)器的D輸入端對毛刺不敏感的特點(diǎn),在輸出信號的保持時(shí)間內(nèi)用觸發(fā)器讀取輸出信號,此時(shí)毛刺自然也已被消除,觸發(fā)器的時(shí)鐘沿可由軟件控制地址譯碼器來得到。
另外 ,在某些情況下,需要對信號進(jìn)行一定的延時(shí),以完成特定的功能。利用D觸發(fā)器可在時(shí)鐘的控制下對信號進(jìn)行比較精確的延時(shí),這種方法的最小延時(shí)是半個(gè)時(shí)鐘周期。延時(shí)也是消除毛刺的手段之一。
2.3.3 DAC電路的調(diào)試
DAC電路將RAM查找表輸出的離散的數(shù)字信號變換為連續(xù)的模擬信號。所選的芯片為DAC0832,它的分辨率為12bits,建立時(shí)間為1us,差分電流輸出。輸出電流在2-20mA內(nèi)可調(diào)。由于電流無法直接測量,所以在DAC0832的輸出端和地之間接有一個(gè)20歐的電阻,可將輸出的電流轉(zhuǎn)換為電壓來測,過程如下:首先向DAC輸入全1的數(shù)據(jù),測得輸出端11腳的電壓為0.4V;12腳為0.04 V;再向DAC輸入全0的數(shù)據(jù),測得輸出端管11腳的電壓為0.04 V;12腳為0.4V;說明DAC電路工作正常。
2.3.4  程序的調(diào)試
設(shè)計(jì)中使用了ALTERA公司提供的配套軟件MAX+PLUSII進(jìn)行文件的輸入、編譯和下載。MAX+PLUSII的軟件設(shè)計(jì)主要由設(shè)計(jì)輸入、項(xiàng)目編譯、項(xiàng)目校驗(yàn)和器件編程等四部分構(gòu)成。
  MAX+PLUSII      File      NEW    Text Editor File/.gdf /.scf      輸入程序    保存、編譯    調(diào)試程序     編譯、仿真、運(yùn)行     調(diào)試完成后用并口下載線下載程序至CPLD芯片    完成燒入程序后硬件電路的調(diào)試     修改、調(diào)試程序    完成設(shè)計(jì)。
2.3.5 硬件電路的調(diào)試
在硬件電路調(diào)試中,要注意焊接的藝術(shù)和元件的布局,讓整體顯得美觀。不能出現(xiàn)漏焊、錯(cuò)焊等現(xiàn)象。在燒錄入程序之后,對電路進(jìn)行測試,看電路是否能達(dá)到預(yù)期的功能。如果不能,則要進(jìn)行程序的調(diào)試,并檢測電路連接、元件使用等方面的問題,努力排除故障,讓系統(tǒng)功能實(shí)現(xiàn)。
結(jié) 論
論文中基于CPLD的波形信號發(fā)生器方面進(jìn)行了設(shè)計(jì),建立了包含三角波、正弦波、方波等三類信號的波形庫,為波形的選擇提供了較好的操作平臺;把DDS技術(shù)與CPLD技術(shù)相結(jié)合來設(shè)計(jì)三相波形發(fā)生器,使三種信號的輸出相位差均為120o。對電路數(shù)字部分完成了分步功能仿真和波形仿真,努力改善數(shù)字波形發(fā)生器的基帶信號帶寬,實(shí)現(xiàn)電路的集成化,采用雙RAM雙通道使設(shè)計(jì)出的數(shù)字波形發(fā)生器有更大的適用范圍。本設(shè)計(jì)能應(yīng)用到教學(xué)和科研試驗(yàn)中。
在分析了DDS及CPLD技術(shù)的基礎(chǔ)上,設(shè)計(jì)了一種基于CPLD的三相數(shù)字波形發(fā)生器。利用CPLD開發(fā)工具對電路進(jìn)行了設(shè)計(jì)和仿真,從分離器件到系統(tǒng)分布,每一步都經(jīng)過了嚴(yán)格的波形仿真驗(yàn)證,以確保功能正常。
本文結(jié)合任意波形發(fā)生器的發(fā)展?fàn)顩r,對直接數(shù)字波形合成技術(shù)的理論、設(shè)計(jì)方法、電路實(shí)現(xiàn)以及信號的調(diào)理電路進(jìn)行了深入的研究,歸納起來主要做了如下幾方面的工作:1、采用CPLD自行設(shè)計(jì)了直接數(shù)字合成技術(shù)芯片,通過了實(shí)驗(yàn)驗(yàn)證;2、設(shè)計(jì)了內(nèi)調(diào)幅電路;3、設(shè)計(jì)調(diào)試信號調(diào)理電路;4、編寫了實(shí)驗(yàn)機(jī)主程序,波形數(shù)據(jù)輸出程序。
從整體上看來,儀器所實(shí)現(xiàn)的指標(biāo)基本上滿足課題要求,但同時(shí)也存在著不足和需要進(jìn)一步改進(jìn)的工作,主要體現(xiàn)在:1、調(diào)頻及任意波頻率電路需要進(jìn)一步改進(jìn),采用高位的鎖相環(huán)器件;2、軟件和硬件電路設(shè)計(jì)工作沒有全部完成;3、由于技術(shù)限制,希望以后能使波形輸出頻率上一個(gè)更高臺階。
但是,也存在著某些不足。比如:當(dāng)時(shí)由于開發(fā)周期和技術(shù)水平等原因,DDS技術(shù)均采用了國外成型的集成芯片,不僅代價(jià)高,而且許多性能沒有充分利用,調(diào)幅波性能也不夠高。
通過畢業(yè)課題設(shè)計(jì),掌握了直接波形合成技術(shù)的原理及設(shè)計(jì)要領(lǐng),學(xué)習(xí)了并掌握可編程邏輯器件電路的設(shè)計(jì),掌握了MAX+PLUSII軟件、CPLD元件等的應(yīng)用,受益匪淺,為我今后的工作和學(xué)習(xí)奠定了堅(jiān)實(shí)的基礎(chǔ)。

參考文獻(xiàn)
[1]沈明山.EDA技術(shù)及可編程器件應(yīng)用時(shí)訓(xùn)[M].北京:科學(xué)出版社.2003
[2]付慧生.復(fù)雜可編程邏輯器件與應(yīng)用設(shè)計(jì)[M].北京:中國礦業(yè)大學(xué)出版社.2003
[3]李國洪,沈明山等.可編程器件EDA技術(shù)與實(shí)踐[M].北京:機(jī)械工業(yè)出版社.2004
[4]陳賾.CPLD/FPGA與ASIC設(shè)計(jì)實(shí)踐教程[M].北京:科學(xué)出版社.2004
[5]蔡明生.電子設(shè)計(jì)[M].北京:高等教育出版社.2003
[6]李東升.電子設(shè)計(jì)自動化與IC設(shè)計(jì)[M].北京:高等教育出版社.2004
[7]李洋.EDA技術(shù)實(shí)用教程[M].北京:機(jī)械工業(yè)出版社.2005
[8]張秀娟,陳新華等.EDA設(shè)計(jì)與仿真實(shí)踐[M].北京:機(jī)械工業(yè)出版社.2004
[9]尹常永.EDA技術(shù)與數(shù)字系統(tǒng)設(shè)計(jì)[M].陜西:西安電子科技大學(xué)出版社.2003
[10]潭會生,張昌凡等.EDA技術(shù)與應(yīng)用(第二版)[M].陜西:西安電子科技大學(xué)出版社.2004
[11]王祖強(qiáng).電子實(shí)際自動化(EDA)技術(shù)實(shí)驗(yàn)教程[M].山東:山東大學(xué)出版社.2003
[12]朱正偉.EDA技術(shù)及應(yīng)用[M].北京:清華大學(xué)出版社.2004
[13]劉艷萍,高振斌等.EDA實(shí)用技術(shù)及應(yīng)用[M].北京:國防工業(yè)出版社.2005
[14]焦素敏.EDA應(yīng)用技術(shù)[M].北京:清華大學(xué)出版社.2004
[15]潘松,黃繼業(yè)等.EDA技術(shù)與VHDL[M].北京:清華大學(xué)出版社.2003
[16]孔冬蓮.基于CPLD的函數(shù)信號發(fā)生器[J].湖北鄂州.沙祥高等師范專科學(xué)院學(xué)報(bào). 2006,(5).15-18
[17]郭海青.基于CPLD的多波形函數(shù)信號發(fā)生器設(shè)計(jì)[J].現(xiàn)代電子技術(shù).2006,(17).70-72
[18] Wu Tao,Wang Jian Hua et al. Application study of DSP and CPLD technology on the star sensor[J].Journal of Harbin Institute of Technology(New Series),Vo1.13,No.3,2006.289-293
[19]任緒科,趙俊渭等. 基于CPLD和單片機(jī)的任意波形發(fā)生器設(shè)計(jì)[J].電子產(chǎn)品世界.2005,(1).118-119
[20] 尹佳喜,尹仕.CPLD的三相多波形函數(shù)發(fā)生器設(shè)計(jì)[J].國外電子元器件.2006,
(4).23-25

附錄1 三相多波形函數(shù)發(fā)生器各模塊的程序
LIBRARY ieee ; -----初值模塊
use ieee.std_logic_1164.all;
entity chuzhi is
  port(a:in std_logic_vector(3 downto 0);
       q:out integer range 0 to 312);
end chuzhi;
architecture chu_arc of chuzhi is
begin
  process(a)
  begin
    case a is
      when"0001"=>q<=313;
      when"0010"=>q<=156;
      when"0011"=>q<=104;
     when"0100"=>q<=78;
      when"0101"=>q<=63;
      when"0110"=>q<=52;
      when"0111"=>q<=45;
      when"1000"=>q<=39;
      when"1001"=>q<=35;
      when"1010"=>q<=31;
      when others=>null;
    end case;
  end process;
end chu_arc;
LIBRARY ieee ; ----分頻模塊
use ieee.std_logic_1164.all;
entity fana is
  port(a:in integer range 0 to 312;
       clk:in std_logic;
       q:out std_logic);
end fana;
architecture fan_arc of fana is
begin
  process(clk)
  variable b,d:std_logic;
  variable c:integer range 0 to 312;
  begin
    if clk'event and clk='1'then
      if b='0'then
         c:=a-1;
         b:='1';
      else
        if c=1 then
           b:='0';
           d:=not d;
        else
          c:=c-1;
        end if;
      end if;
    end if;
    q<=d;
  end process;
end fan_arc;
LIBRARY ieee; -----方波模塊
use ieee.std_logic_1164.all;
entity square is
  port(clk,clr:in std_logic;
       q:out integer range 0 to 255);
end square;
architecture sq_arc of square is
signal a:bit;
begin
  process(clk,clr)
  variable cnt:integer;
  begin
    if clr='0'then
       a<='0';
    elsif clk'event and clk='1'then
      if cnt<7 then
         cnt:=cnt+1;
      else
         cnt:=0;
         a<=not a;
       end if;
     end if;
   end process;
   process(clk,a)
   begin
     if clk'event and clk='1'then
        if a='1'then
           q<=255;
        else
           q<=0;
        end if;
      end if;
    end process;
end sq_arc;
LIBRARY ieee;------三角波模塊
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity delta is
  port(clk,reset:in std_logic;
       q:out std_logic_vector(7 downto 0));
end delta;
architecture delta_arc of delta is
begin
  process(clk,reset)
  variable tmp:std_logic_vector(7 downto 0);
  variable a:std_logic;
  begin
    if reset='0' then
       tmp:="00000000";
    elsif clk'event and clk='1' then
      if a='0'then
         if tmp="11111000"then
            tmp:="11111111";
            a:='1';
         else
           tmp:=tmp+8;
         end if;
      else
         if tmp="00000111"then
            tmp:="00000000";
            a:='0';
         else
           tmp:=tmp-8;
         end if;
       end if;
     end if;
     q<=tmp;
   end process;
end delta_arc;
LIBRARY ieee; ------正弦波模塊
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity delta is
  port(clk,reset:in std_logic;
       q:out std_logic_vector(7 downto 0));
end delta;
architecture delta_arc of delta is
begin
  process(clk,reset)
  variable tmp:std_logic_vector(7 downto 0);
  variable a:std_logic;
  begin
    if reset='0' then
       tmp:="00000000";
    elsif clk'event and clk='1' then
      if a='0'then
         if tmp="11111000"then
            tmp:="11111111";
            a:='1';
         else
           tmp:=tmp+8;
         end if;
      else
         if tmp="00000111"then
            tmp:="00000000";
            a:='0';
         else
           tmp:=tmp-8;
         end if;
       end if;
     end if;
     q<=tmp;
   end process;
end delta_arc;
LIBRARY ieee;------控制模塊
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity chpro31 is
  port(dlt,sqr,sin:in std_logic;
       dlta,sqra,sina:in std_logic_vector(7 downto 0);
       q:out std_logic_vector(7 downto 0));
end chpro31;
architecture ch_arc of chpro31 is
begin
  process(dlt,dlta,sqr,sqra,sin,sina)
  variable tmp:std_logic_vector(2 downto 0);
  variable a,b:std_logic_vector(9 downto 0);
  variable c,d,e:std_logic_vector(9 downto 0);
  begin
    tmp:=dlt&sqr&sin;
    case tmp is
      when "100"=>q<=dlta;
      when "010"=>q<=sqra;
      when "001"=>q<=sina;
      when "110"=>a:="00"&dlta+sqra;
                  q<=a(8 downto 1);
      when "101"=>a:="00"&dlta+sina;
                  q<=a(8 downto 1);
      when "011"=>a:="00"&sqra+sina;
                  q<=a(8 downto 1);
      when "111"=>a:="00"&dlta+sqra;
                  b:=a+sina;
                  c:="00"&b(9 downto 2);
                  d:="0000"&a(9 downto 4);
                  e:="000000"&a(9 downto 6);
                  a:=c+d;
                  b:=a+e;
                  q<=b(7 downto 0);
      when others=>null;
    end case;
  end process;
end ch_arc;


附錄2 元件介紹
1 DAC0832
DAC0832 是一種相當(dāng)普遍且成本較低的數(shù)/模轉(zhuǎn)換器,該器件是一個(gè)8位D/A轉(zhuǎn)換器,其轉(zhuǎn)換時(shí)間為1s,工作電壓為+5V~+15V,基準(zhǔn)電壓為±10V,它將一個(gè)8位的二進(jìn)制數(shù)轉(zhuǎn)換成模擬電壓,可產(chǎn)生256種不同的電壓值,由于其內(nèi)部有兩個(gè)8位寄存器和一個(gè)8位D/A轉(zhuǎn)換器,故可進(jìn)行兩級緩沖操作,使操作有很大的靈活性(本設(shè)計(jì)中采用的是單緩沖方式).
DAC0832具有以下主要特性:①滿足TTL電平規(guī)范的邏輯輸入;②分辨率為8位; ③建立時(shí)間為1us;④功耗20mw;⑤是電流型輸出型D/A轉(zhuǎn)換器,在應(yīng)用時(shí)外接運(yùn)放使之成為電壓型輸出。DAC0832的片選地址為7FFFH,當(dāng)P27有效時(shí),若P0口向其送的數(shù)據(jù)為00H,則U 的輸出電壓為0V;若P0口向其送的數(shù)據(jù)為0FFH時(shí),則的輸出電壓為-5V.故當(dāng)輸出電壓為0V時(shí),Vo:-5V.當(dāng)輸出電壓為-5V時(shí),可得:Vo =+5V,所以輸出波形的電壓變化范圍為-5V ~+5V.連接硬件電路時(shí)將兩級寄存器的控制信號并接輸入數(shù)據(jù),在控制信號作用下直接送入DAC寄存器中。經(jīng)D/A轉(zhuǎn)換和幅度控制,再濾波即可得到波形。
圖1 DAC0832內(nèi)部結(jié)構(gòu)如圖所示
圖2 DAC0832
2 LM324
LM324四運(yùn)放是美國national公司的產(chǎn)品。LM324是四運(yùn)放集成電路,它采用14腳雙列直插塑料封裝。它的內(nèi)部包含四組形式完全相同的運(yùn)算放大器, 除電源共用外,四組運(yùn)放相互獨(dú)立。每一組運(yùn)算放大器可用圖1所示的符號來表示,它有5個(gè)引出腳,其中“+”、“-”為兩個(gè)信號輸入端,“V+”、“V-”為正、負(fù)電源端,“Vo”為輸出端。兩個(gè)信號輸入端中,Vi-(-)為反相輸入端,表示運(yùn)放輸出端Vo的信號與該輸入端的位相反;Vi+(+)為同相輸入端,表示運(yùn)放輸出端Vo的信號與該輸入端的相位相同。
由于LM324四運(yùn)放電路具有電源電壓范圍寬,靜態(tài)功耗小,可單電源使用,價(jià)格低廉等優(yōu)點(diǎn),因此被廣泛應(yīng)用在各種電路中。
    在本系統(tǒng)中,LM324被作為放大器和濾波器來使用。它可以選出各個(gè)不同頻段的信號,指示出信號幅度的大小,對信號進(jìn)行放大后再輸出,提供給使用者需要的波形信號。
圖3 LM324管腳圖
3 PM7128SLC84-15芯片
EPM7128S84-15是CPLD芯片,有128個(gè)宏單元、2500個(gè)等效邏輯門、15ns的速度、PLCC84封裝形式。除電源引腳、地線引腳、全局控制引腳和JTAG引腳外,共提供了64個(gè)可用I/O腳,這些引腳可以任意配置為輸入、輸出和雙向方式。該器件的特點(diǎn)如下:
l是 一 種高性能的CM0SE EPROM器件。
l器 件 可通過JTAG接口實(shí)現(xiàn)在線編程。
l內(nèi) 置JTAG BST電路。
l可 編 程宏單元觸發(fā)器具有專用清除、置位、時(shí)鐘和時(shí)鐘使能控制。
l 可 配 置的擴(kuò)展乘積項(xiàng)分配,允許向每個(gè)宏單元提供多達(dá)32個(gè)乘積項(xiàng)。

圖4EPM7128SLC84-15

附錄3電路原理圖
附錄4 英文資料及譯文
1英文資料
(From DIGITAL DESIGN principles & practices ,John  F. Wakerly)
Language Overview
What is VHDL?
VHDL is a programming language that has been designed and optimized for describing the behavior of digital systems.
VHDL has many features appropriate for describing the behavior of electronic components ranging from simple logic gates to complete microprocessors and custom chips. Features of VHDL allow electrical aspects of circuit behavior (such as rise and fall times of signals, delays through gates, and functional operation) to be precisely described. The resulting VHDL simulation models can then be used as building blocks in larger circuits (using schematics, block diagrams or system-level VHDL descriptions) for the purpose of simulation.
VHDL is also a general-purpose programming language: just as high-level programming languages allow complex design concepts to be expressed as computer programs, VHDL allows the behavior of complex electronic circuits to be captured into a design system for automatic circuit synthesis or for system simulation. Like Pascal, C and C++, VHDL includes features useful for structured design techniques, and offers a rich set of control and data representation features. Unlike these other programming languages, VHDL provides features allowing concurrent events to be described. This is important because the hardware described using VHDL is inherently concurrent in its operation.
One of the most important applications of VHDL is to capture the performance specification for a circuit, in the form of what is commonly referred to as a test bench. Test benches are VHDL descriptions of circuit stimuli and corresponding expected outputs that verify the behavior of a circuit over time. Test benches should be an integral part of any VHDL project and should be created in tandem with other descriptions of the circuit.
A standard language
One of the most compelling reasons for you to become experienced with and knowledgeable in VHDL is its adoption as a standard in the electronic design community. Using a standard language such as VHDL virtually guarantees that you will not have to throw away and recapture design concepts simply because the design entry method you have chosen is not supported in a newer generation of design tools. Using a standard language also means that you are more likely to be able to take advantage of the most up-to-date design tools and that you will have access to a knowledge base of thousands of other engineers, many of whom are solving problems similar to your own.
A brief history of VHDL
VHDL, which stands for VHSIC (Very High Speed Integrated Circuit) Hardware Description Language, was developed in the early 1980s as a spin-off of a high-speed integrated circuit research project funded by the U.S. Department of Defense. During the VHSIC program, researchers were confronted with the daunting task of describing circuits of enormous scale (for their time) and of managing very large circuit design problems that involved multiple teams of engineers. With only gate-level design tools available, it soon became clear that better, more structured design methods and tools would be needed.
To meet this challenge, a team of engineers from three companies ?IBM, Texas Instruments and Intermetrics ?were contracted by the Department of Defense to complete the specification and implementation of a new, language-based design description method. The first publicly available version of VHDL, version 7.2, was released in 1985. In 1986, the Institute of Electrical and Electronics Engineers, Inc. (IEEE) was presented with a proposal to standardize the language, which it did in 1987 after substantial enhancements and modifications were made by a team of commercial, government and academic representatives. The resulting standard, IEEE 1076-1987, is the basis for virtually every simulation and synthesi product sold today. An enhanced and updated version of the language, IEEE 1076-1993, was released in 1994, and VHDL tool vendors have been responding by adding these new language features to their products.
Although IEEE Standard 1076 defines the complete VHDL language, there are aspects of the language that make it difficult to write completely portable design descriptions (descriptions that can be simulated identically using different vendors?tools). The problem stems from the fact that VHDL supports many abstract data types, but it does not address the simple problem of characterizing different signal strengths or commonly used simulation conditions such as unknowns and high-impedance.
Soon after IEEE 1076-1987 was adopted, simulator companies began enhancing VHDL with new, non-standard types to allow their customers to accurately simulate complex electronic circuits. This caused problems because design descriptions entered into one simulator were often incompatible with other simulation environments. VHDL was quickly becoming a nonstandard.
To get around the problem of nonstandard data types, another standard was developed by an IEEE committee. This standard, numbered 1164, defines a standard package (a VHDL feature that allows commonly used declarations to be collected into an external library) containing definitions for a standard nine-valued data type. This standard data type is called std_logic, and the IEEE 1164 package is often referred to as the Standard Logic package.
The IEEE 1076-1987 and IEEE 1164 standards together form the complete VHDL standard in widest use today. (IEEE 1076-1993 is slowly working its way into the VHDL mainstream, but it does not add significant new features for synthesis users.)
Standard 1076.3(often called the Numeric Standard or Synthesis Standard) defines standard packages and interpretations for VHDL data types as they relate to actual hardware. This standard, which was released at the end of 1995, is intended to replace the many custom (nonstandard) packages that vendors of synthesis tools have created and distributed with their products.
IEEE Standard 1076.3 does for synthesis users what IEEE 1164 did for simulation users: increase the power of Standard 1076, while at the same time ensuring compatibility between different vendors?tools. The 1076.3 standard includes, among other things:
1)   A documented hardware interpretation of values belonging to the bit and boolean types defined by IEEE Standard 1076, as well as interpretations of the std_ulogic type defined by IEEE Standard 1164.
2)   A function that provides "don&care" or "wild card" testing of values based on the std_ulogic type. This is of particular use for synthesis, since it is often helpful to express logic in terms of "don抰 care" values.
3)   Definitions for standard signed and unsigned arithmetic data types, along with arithmetic, shift, and type conversion operations for those types.
The annotation of timing information to a simulation model is an important aspect of accurate digital simulation. The VHDL 1076 standard describes a variety of language features that can be used for timing annotation. However, it does not describe a standard method for expressing timing data outside of the timing model itself.
The ability to separate the behavioral description of a simulation model from the timing specifications is important for many reasons. One of the major strengths of Verilog HDL (VHDL抯 closest rival) is the fact that Verilog HDL includes a feature specifically intended for timing annotation. This feature, the Standard Delay Format, or SDF, allows timing data to be expressed in a tabular form and included into the Verilog timing model at the time of simulation.
The IEEE 1076.4 standard, published by the IEEE in late 1995, adds this capability to VHDL as a standard package. A primary impetus behind this standard effort (which was dubbed VITAL, for VHDL Initiative Toward ASIC Libraries) was to make it easier for ASIC vendors and others to generate timing models applicable to both VHDL and Verilog HDL. For this reason, the underlying data formats of IEEE 1076.4 and Verilog SDF are quite similar.
When should you use VHDL?
Why choose to use VHDL for your design efforts? There are many likely reasons. If you ask most VHDL tool vendors this question, the first answer you will get is, "It will improve your productivity." But just what does this mean? Can you really expect to get your projects done faster using VHDL than by using your existing design methods?
The answer is yes, but probably not the first time you use it, and only if you apply VHDL in a structured manner. VHDL (like a structured software design language) is most beneficial when you use a structured, top-down approach to design. Real increases in productivity will come later, when you have climbed higher on the VHDL learning curve and have accumulated a library of reusable VHDL components.
Productivity increases will also occur when you begin to use VHDL to enhance communication between team members and when you take advantage of the more powerful tools for simulation and design verification that are available. In addition, VHDL allows you to design at a more abstract level. Instead of focusing on a gate-level implementation, you can address the behavioral function of the design.
How will VHDL increase your productivity? By making it easy to build and use libraries of commonly-used VHDL modules. VHDL makes design reuse feel natural. As you discover the benefits of reusable code, you will soon find yourself thinking of ways to write your VHDL statements in ways that make them general purpose. Writing portable code will become an automatic reflex.
Another important reason to use VHDL is the rapid pace of development in electronic design automation (EDA) tools and in target technologies. Using a standard language such as VHDL can greatly improve your chances of moving into more advanced tools (for example, from a basic low-cost simulator to a more advanced one) without having to re-enter your circuit descriptions. Your ability to retarget circuits to new types of device targets (for example, ASICs, FPGAs, and complex PLDs) will also be improved by using a standard design entry method.
Most of the VHDL features that are needed to support sequential-circuit design, in particular, processes, were already introduced in section 4.7 and were used in the VHDL sections in chapter 5. This section introduces just a couple more features and gives simple examples of how they are used .Larger examples appear in the VHDL sections of chapter
8. feedback sequential circuits
A VHDL process and the simulator’s event-list mechanism for tracking signal changes form the sequential circuits may change state in response to input changes , and these state changes are manifested by changes propagating in a feedback loop until the feedback loop stabilizes. In simulation, this is manifested by the simulator putting signal changes on the event list and scheduling processes to return in “delta time” and propagating these signal changes until to no more signal changes are scheduled.
    Table 7-36 dataflow VHDL for an S-R latch.
Table 7-36 is a VHDL program for an S-R latch, the architecture contains two concurrent assignment statements. Each of which gives rise to a process, as discussed in section 4.7.9, these processes interact to create the simple latching behavior of a S-R latch.
The VHDL simulation is faithful enough to handle the case where both S and R are asserted simultaneously. The most interesting result in simulation occurs if you negate S and R simultaneously. Recall from the box from the page 536 that a real S-R latch may oscillate or go into a metastable state in this simulation. The simulation will potentially loop forever as each execution of one assignment statement triggers another execution of the other. After some number of repetitions, a well-designed simulator will discover the problem----delta time keeps advancing while simulated time does not----and halt the simulation.
WHAT DO ‘U’ WANT
It would be nice if the S-R latch model in table 7-36 produced a ‘u’ output whenever S and R were negated simultaneously, but it’s not that good. However, the languages is powerful enough that experienced VHDL designers can easily write a model with that behavior. Such a model would make use of VHDL’s time-modeling facilities, which we haven’t discussed, to model the latch’s “recovery time” (see box in page 537) and force a ‘u’ output if a second input change occurred too soon. It’s even possible to model a maximum assumed metastability resolution time in this way.
Table 7-37 behavioral VHDL for a positive-edge-triggered D flip-flop
Mote that if a circuit has the possibility of entering a metatable state, there’s no
guarantee that the simulation will detect it, especially in larger designs. The best way to avoid metasbgability problems in a system design is to clearly identify and protect its asynchronous boundaries, as discussed in section clocked circuits


In practice, the majority of digital designs that are modeled using VHDL are clocked, synchronous systems using edge-triggered flip-flops. In addition to what we’ve already learned about VHDL, there’s just one more feature needed to describe edge-triggered behavior. The event attribute attached to a signal name to yield a value of type Boolean that is true if an event on the signal caused the encompassing process to run in the current simulation cycle, and false otherwise.
Using the event attribute, we can model the behavior of a positive-edge-triggered D flip-flop with asynchronous clear as shown in table 7-37. here, the asynchronous clear input CLR overrides any behavior on the clock input CLK and is therefore checked first, in the “if” clause. If CLR is negated, then the “elsif” clause is checked, and its statements are executed on the rising edge of CLK. Note that “CL’event” is true for any change on CLK, and “CLK=’1’” is checked to limit triggering to just the rising edge of CLK. There are many other ways to construct processes or statements with edge-triggered behavior; table 7-38 shows two more ways to describe a D flip-flop ( without a CLR input ).
Table 7-38 two more ways to describe a positive-edge-triggered D flip-flop.
In the test bench for a clocked circuit, one of things you need to do is generate a system clock signal. This can be done quite easily with a loop inside a process, as shown in table 7-39 for a 100MHz clock with a 60% duty cycle.
*****SYNTHESIS STUFF*****
You may be wondering, how does a synthesis tool convert the edge-triggered behavior described in table 7-37 or 7-38 into an efficient flip-flop realization? Most tools recognize only a few predetermined ways of expressing edge-triggered behavior and map those into predetermined flip-flop components in the target technology.
The synopsis synthesis engine used in the xinlinx foundation series 1.5 software recognize the”clk’event and clk=’1’” expression that we use in this book. Even with that as a given, VHDL has many different ways ashenden, author of the designer’s guide to
VHDL (morgan Kaufmann, 1996) ran these statements and one other, with some modification, through several different synthesis tools. Only one of them was able to synthesize three out of the four forms, most could handle only two. So, you need to follow the method that is prescribed by the tool you use.
Table 7-39 clock process within a test bench.
reference
The problem of metastability has been around for a long time. Greek philosophers wrote about the problem of indecision thousands of years ago. A group of modem philosophers named Devon sang about metastability in the title song of their Freedom of choice album. And the u.s. congress still can’t decide how to “save” social security.
Scan capability was first deployed in latches. Not flip-flop, in IBM IC designs decades ago. Edward J.McCluskey has a very good discussion of this and other scan methods in logic design principles (prentice hall, 1986).
Most ASICs and MSI-,PLD- and FPGA-based designs use the sequential circuit types described in this chapter. However , there are other types that are use in both older discrete designs (going all the way back to vacuum-tube logic ) and as well as in modem, custom VLSI designs.
For example, clocked synchronous state machines are a special case of a more general class of pulse-mode circuits, Such circuits have one or more pulse inputs such that (a) only one pulse occurs at a time; (b) non-pulse inputs are stable when a pulse occurs; (c) only pulses can cause state changes; and (d) a pulse clock is the single pulse input, and a “pulse” is the triggering edge of the clock. However, it is also possible to build circuits with multiple pulse inputs. These possibilities are discussed very thoroughly in McCluskey’s logic Design Principle (prentice hall, 1986).
A particularly important type of pulse-mode circuit that is discussed by McCluskey and others is the two-phase latch machine. The rationale for a two phase clocking approach in VLSI circuits is discussed by Carver Mead and Lynn Conway in introduction to VLSI systems (Addison-Wesley, 1980). There machines essentially eliminate the essential hazards present in edge-triggered flip-flops by using pairs of latches that are enabled by no overlapping clocks.
Methods for reducing both completely and incompletely specified state tables are described in advanced logic design texts, including McCluskey’s 1986 book. A more mathematical discussion of these methods and other “theoretical” topics in sequential machine design appears in switching and finite automata theory, second edition, by Zvi Kohavi (McFGraw-hall, 1978).
As we showed in this chapter, improperly constructed state diagrams may idle an ambiguous description of next-state behavior. The “if-then-else” structures in HDLs like ABEL and VHDL can eliminate these ambiguities, but they were not first to do so. Algorithmic-state-machine (ASM) notation. A flowchart-like equivalent of nested if-then-else statement, has been around for over 25 years. So-called ASM charts were pioneered at Hewlett-Packard Laboratories by Thomas E. Osborne and were pioneered by Osborne’s colleague Christopher R. Clare in a book, designing logic systems using ASM charts (McGraw-hill ,1973).Design and synthesis methods using ASM charts subsequently found a home in many digital design texts. Including the art of digital design by F.P.Prosser and D.E.Winkel (prentice hall, 1987, second edition ), and digital design by M.Morris Mano (prentice hall, 1984), as well as in the fist two editions of the book you’re just reading.
Another notation for describing state machines is an extension of “traditional” state-diagram notation called the mnemonic documented state (MDS) diagram. It was developed by William I.Fletcher in an engineering approach to digital design (prentice-hall. 1980). ASM charts and MDS diagrams have now been largely replaced by HDLs and their compilers.
Many CAD environments for digital design include a graphical state diagram entry tool. Unfortunately, these typically support only traditional state diagrams, making it very easy for a designer to create an ambiguous descriptions of next-state behavior. As a result, my personal recommendation is that you stay away from state-diagram editors and instead use an HDL to describe your state machines.
We mentioned the importance of synchronizing sequences in connections with state-machine test vectors. There’s actually a very well developed but almost forgotten theory and practice of synchronizing sequences and somewhat less powerful “homing experiment” described by Frederick C.Hennie in Finite-state Models for logical machines (Wiley, 1968) Unless you’ve got this old classic on your bookshelf and know how to apply its teachings, please just remember to provide a reset input in every state machine that you design!
2英文譯文
語言概觀
   VHDL是什么?
VHDL是一種已經(jīng)被為描述成為傳統(tǒng)的行為設(shè)計(jì)最佳化的規(guī)劃語言。
因?yàn)槊枋龇秶鷱暮唵蔚倪壿嬮T到的電子成份的行為完成微處理器和習(xí)慣規(guī)定, VHDL 讓許多特征適當(dāng)。VHDL的特征允許線路行為 ( 像是上升而且落下時(shí)代的信號,延遲過門, 和功能的操作) 的電氣特性精確地被描述。然后在那產(chǎn)生的VHDL 模擬模型為了模擬能在較大的線路 ( 使用圖表, 區(qū)段圖表或系統(tǒng)級的 VHDL 描述) 中被當(dāng)作建電氣區(qū)段使用。
VHDL 也是一種泛用型的規(guī)劃語言:正如高階層的規(guī)劃語言允許復(fù)雜的要表示成電腦程式的設(shè)計(jì)觀念, VHDL 允許復(fù)雜電子的線路行為對于自動的線路綜合或系統(tǒng)模擬進(jìn)入一個(gè)設(shè)計(jì)系統(tǒng)之內(nèi)被捕獲. 像巴斯卡, C 和 C++, VHDL 包括對結(jié)構(gòu)化設(shè)計(jì)技術(shù)是有用的, 而且提供一富有組的控制和數(shù)據(jù)表現(xiàn)特征的特征。這些不像其他的規(guī)劃語言, VHDL 提供特征允許協(xié)同的要描述的事件。因?yàn)楸幻枋龉逃械厥褂?VHDL 的硬件在它的操作方面是協(xié)同的,所以這很重要。
VHDL 的最重要申請之一是為一個(gè)線路是以被普遍稱為一張測試長椅子的東西形式。測試長椅子是線路 stimuli 和隨著時(shí)間的過去查證線路的行為對應(yīng)的預(yù)期輸出的 VHDL 描述。測試長椅子應(yīng)該是一個(gè)任何 VHDL 計(jì)畫的整體部份并且應(yīng)該在和其他線路的描述前后縱排的馬車中被產(chǎn)生。
一種標(biāo)準(zhǔn)的語言
你的最無法抗拒的理由之一是變成的經(jīng)驗(yàn)和聰明的在 VHDL 中是如電子的設(shè)計(jì)一個(gè)標(biāo)準(zhǔn)社區(qū)的它采用。使用一種標(biāo)準(zhǔn)的語言,像是VHDL事實(shí)上保證,只是因?yàn)槟阋呀?jīng)選擇的設(shè)計(jì)進(jìn)入方法不被在比較新的世代設(shè)計(jì)工具中支援,你將不必丟棄,而且取回設(shè)計(jì)觀念。使用一種標(biāo)準(zhǔn)的語言也意味你更可能能夠利用最新設(shè)計(jì)工具而且你將會有機(jī)會接近一個(gè)數(shù)以千計(jì)其他的工程師的知識庫, 他們當(dāng)中的一些人正在解決問題的多數(shù)類似你自己的。
VHDL 的簡短歷史
在1980年代早期內(nèi)代表 VHSIC( 最高速集成電路) 硬件描述語言的 VHDL 被發(fā)展如被美國國防部部門贊助的高速集成電路研究計(jì)畫的一個(gè)附帶利益。在 VHSIC 計(jì)劃的時(shí)候,研究員面對描述巨大尺寸 ( 對于他們的時(shí)間) 的線路使人畏縮工作并且管理非常大的線路設(shè)計(jì)牽涉了許多工程師團(tuán)隊(duì)的問題。由于唯一的門級設(shè)計(jì)可得的工具, 它很快變成清楚更,比較結(jié)構(gòu)化設(shè)計(jì)方法和工具會是需要的。
為了要迎接這一挑戰(zhàn), 一些來自IBM ,德克薩斯工具和 Intermetrics三家公司的工程師被國防部雇傭完成一個(gè)新的規(guī)格和以語言為基礎(chǔ)的設(shè)計(jì)描述方法。第一 VHDL,7.2 版的公眾可得版本,在 1985到1986年被出版,美國電氣電子工程師協(xié)會(IEEE) 與一份提議一起呈現(xiàn)標(biāo)準(zhǔn)化語言,它在提高和修正被做的重要部份之后在 1987 年做被一組由商業(yè)的,政府和學(xué)院的代表組成的成員定義產(chǎn)生了IEEE 1076-1987標(biāo)準(zhǔn), 事實(shí)上這是今天出售的每個(gè)模擬綜合產(chǎn)品的基礎(chǔ)的語言, IEEE 1076-1993 的一個(gè)增強(qiáng)型版本,在1994年出版,而且VHDL工具廠商把這些新的語言特征加入他們的產(chǎn)品以做回應(yīng)。
雖然 IEEE的1076標(biāo)準(zhǔn)定義了完整的VHDL語言, 但是使寫完全手提式的設(shè)計(jì)描述的語言方面是困難的( 能同一地被模擬使用不同的廠商描述硬件工具)。問題起源于 VHDL 支持許多摘要數(shù)據(jù)類型,但是它不如未知數(shù)和高阻抗向如此的不同信號力量或普遍使用過的模擬所表示簡單問題的特色為條件的運(yùn)行。
在 IEEE 1076-1987 是采用不久后,模擬器公司開始用新又非標(biāo)準(zhǔn)提高 VHDL 類型允許他們的客戶正確地模擬合成物電子線路。因?yàn)樵O(shè)計(jì)參與一個(gè)模擬器時(shí)常的描述對其他的模擬環(huán)境不匹配,所以這引起了問題. VHDL 正在很快地變成一種非標(biāo)準(zhǔn)的標(biāo)準(zhǔn)。
為了要解決非標(biāo)準(zhǔn)數(shù)據(jù)類型的問題, 另外的標(biāo)準(zhǔn)被一個(gè) IEEE 委員會發(fā)展了。這一個(gè)標(biāo)準(zhǔn),1164 號, 定義一個(gè)標(biāo)準(zhǔn)的程序包(允許要收集的普遍使用過的公告進(jìn)入類似一間外部的圖書館之內(nèi)的一個(gè)VHDL特征) 包含定義為一個(gè)標(biāo)準(zhǔn)的的數(shù)據(jù)類型。這種標(biāo)準(zhǔn)的數(shù)據(jù)類型叫做std_logic,而且IEEE 1164 數(shù)據(jù)包時(shí)常被稱為標(biāo)準(zhǔn)的邏輯包。
IEEE 1076-1987和IEEE.1164標(biāo)準(zhǔn)一起在今天廣泛的使用中形成了完整的 VHDL 標(biāo)準(zhǔn)。 (IEEE 1076-1993 慢慢地使它的設(shè)計(jì)方法進(jìn) VHDL 主流之內(nèi),但是它不為綜合使用者增加重要的新特征。)
當(dāng)VHDL與真實(shí)的硬件有關(guān)的時(shí)候,標(biāo)準(zhǔn) 1076.3( 時(shí)常認(rèn)為數(shù)值的標(biāo)準(zhǔn)或綜合是標(biāo)準(zhǔn)) 為 VHDL 數(shù)據(jù)類型定義標(biāo)準(zhǔn)了程序包解釋。這一個(gè)在 1995 底被發(fā)布的標(biāo)準(zhǔn)預(yù)計(jì)代替許多習(xí)慣 ( 非標(biāo)準(zhǔn)的) 包裝綜合工具的廠商已經(jīng)產(chǎn)生而且應(yīng)用的產(chǎn)品。
IEEE的 1076.3標(biāo)準(zhǔn)為使用IEEE 1164綜合模擬使用者做什么: 增加標(biāo)準(zhǔn) 1076 的功能, 增強(qiáng)在不同的廠商之間的兼容性。標(biāo)準(zhǔn)的 1076.3 包括, 在其他的事物之中:
1)標(biāo)準(zhǔn)的價(jià)值被證明的硬件解釋屬于IEEE 標(biāo)準(zhǔn)的1076, 連同被 IEEE 定義的 std_ulogic 類型的解釋定義的 boolean 類型1164。
2) 一張?zhí)峁┮詓td_ulogic為基礎(chǔ)的通行證。這對綜合是有特別使用的, 因?yàn)樗鼤r(shí)常是有幫助的價(jià)值表達(dá)邏輯。
3)為標(biāo)準(zhǔn)的定義簽署并且不簽署算術(shù)數(shù)據(jù)類型,連同算術(shù),變化和類型轉(zhuǎn)變行動一起對于那些類型。
時(shí)間安排數(shù)據(jù)的注解對一個(gè)模擬模型是一個(gè)正確數(shù)據(jù)的重要方面模擬。VHDL 1076 標(biāo)準(zhǔn)描述多種語言能作為時(shí)間安排注解的特征。然而,它為在時(shí)間安排模型本身的外部表達(dá)時(shí)間安排數(shù)據(jù)不描述一個(gè)標(biāo)準(zhǔn)的方法。
區(qū)隔模擬模型的動作描述和時(shí)間安排規(guī)格的能力的許多理由是重要的。Verilog 高密度( VHDL抯最靠近的對手) 的主要力量之一是Verilog 高密度為時(shí)間安排注解明確地包括一個(gè)特征想要的事實(shí)。這一個(gè)特征,標(biāo)準(zhǔn)的延遲格式,或 SDF, 允許時(shí)間安排數(shù)據(jù)在一種制成表的形式中被表達(dá)而且在模擬的時(shí)候進(jìn)入 Verilog 時(shí)間安排模型之內(nèi)。
IEEE 1076.4 標(biāo)準(zhǔn), 在1995后期中由IEEE 出版,把這一個(gè)能力加入一個(gè)標(biāo)準(zhǔn)的程序包。VHDL在這個(gè)標(biāo)準(zhǔn)的努力 (被配音重要的, 為VHDL 向ASIC圖書館的率先) 后面的一種主要的動力是讓 ASIC廠商和其它使它變成更容易產(chǎn)生時(shí)間安排模型適用于VHDL 和Verilog高密度芯片。因?yàn)檫@一個(gè)理由, IEEE 1076.4 和Verilog 抯SDF 的在下面數(shù)據(jù)格式相當(dāng)相似。
你應(yīng)該使用 VHDL?
為什么選擇使用 VHDL 作為你的設(shè)計(jì)? 有許多有可能的理由。如果你問大多數(shù)的 VHDL工具廠商這一個(gè)問題,你將會拿的第一個(gè)答案是“資訊科技將會改善你的生產(chǎn)力”。 但是究竟這意謂什么呢? 你能真的期待拿完成了快速的使用 VHDL 為你設(shè)計(jì)而超過使用你的現(xiàn)有設(shè)計(jì)方法?
答案是的肯定,但是或許不是你使用它第一目的,而且只有當(dāng)如果你以結(jié)構(gòu)化樣子應(yīng)用 VHDL。當(dāng)你使用結(jié)構(gòu)化又由上而下的方式設(shè)計(jì)的時(shí)候,VHDL( 像一種結(jié)構(gòu)化軟件設(shè)計(jì)語言) 是最有益的。生產(chǎn)力的真正增加稍后將會受到的影響,當(dāng)你已經(jīng)在 VHDL上更高地攀登學(xué)習(xí)曲線而且已經(jīng)累積一間可以再度使用 VHDL 成份的圖書館的時(shí)候。
當(dāng)你開始使用VHDL 提高生產(chǎn)力的時(shí)候,生產(chǎn)力增加也將會發(fā)生在隊(duì)成員之間的溝通而且當(dāng)你為模擬和設(shè)計(jì)可得的確認(rèn)利用比較有力的工具時(shí)候。除此之外, VHDL允許你在一個(gè)較多的抽象水平設(shè)計(jì)。代替把重心集中在門級的落實(shí),你能向設(shè)計(jì)的動作功能發(fā)表演說。
VHDL將會如何增加你的生產(chǎn)力? 借VHDL建立并且使用圖書館數(shù)據(jù)是容易普遍的。VHDL組件使設(shè)計(jì)重復(fù)使用讓你覺得自然。就如你發(fā)現(xiàn)可以再度使用密碼的利益,你將會很快找你自己方法思考使他們成為一般用途的方法。你對VHDL 陳述,寫手提式的密碼將會變成一個(gè)自動的反射。
使用 VHDL 的另外重要的理由是電子設(shè)計(jì)自動化 (EDA) 的工具和在目標(biāo)技術(shù)方面的發(fā)展速度很快。使用一種標(biāo)準(zhǔn)的語言,像是 VHDL 能有效改善你無需再進(jìn)入你的線路描述的更先進(jìn)的工具 ( 舉例來說,從一個(gè)基本的廉價(jià)模擬器到一個(gè)更先進(jìn)的) 機(jī)會。也再對準(zhǔn)對裝置目標(biāo) ( 舉例來說ASICs , FPGAs 和合成物 PLDs) 的新類型的線路讓你由能力將會使用標(biāo)準(zhǔn)的設(shè)計(jì)進(jìn)入方法改良。
  VHDL時(shí)序電路設(shè)計(jì)特征:
VHDL的大部分特征是為它支持時(shí)序電路而設(shè)計(jì)的,特別地,對“進(jìn)程”,我們已經(jīng)在4.7節(jié)里介紹過了,我們還將在第五章的VHDL部分利用它。本部分介紹一些其他的特征并給出一些如何利用的例子。更大得更全面的例子將在第八章的VHDL部分給出。
反饋時(shí)序電路:
一個(gè)VHDL進(jìn)程和跟蹤信號變化的模擬事件列表機(jī)制構(gòu)成了在VHDL中處理反饋時(shí)序電路的基礎(chǔ)。別忘了,反饋時(shí)序電路會隨著輸入信號的變化產(chǎn)生變化,而這些狀態(tài)的變化在一個(gè)反饋環(huán)中用狀態(tài)圖顯示出來,除非反饋環(huán)穩(wěn)定下來。在模擬中,這將用在事件列表中的模擬輸入信號的變化來顯示,而且,預(yù)定的進(jìn)程會在δ時(shí)間段后返回,并且傳播這些變化直到不再有變化信號出現(xiàn)。
表7-36就是一個(gè)用VHDL語言編寫的S-R鎖存器的程序,其結(jié)構(gòu)體包括兩個(gè)并發(fā)語句,每一句都可以引發(fā)一個(gè)進(jìn)程,如同在4.7.9種討論的一樣。這些進(jìn)程互相地產(chǎn)生一個(gè)簡單的S-R鎖存器的功能行為。
VHDL仿真器足夠真實(shí)地處理當(dāng)S-R同時(shí)變化的情況。會有很多的有趣的仿真結(jié)果在現(xiàn)在仿真過程中,只要你同時(shí)啟動S和R。回憶在536頁上的圖,那是一個(gè)真正的S-R鎖存器,在上述情況下會引起振蕩或進(jìn)入不可測狀態(tài)。這個(gè)狀態(tài)將會潛在永久地鎖定。每個(gè)語句的執(zhí)行將會啟動另一個(gè)語句的執(zhí)行,經(jīng)過一些重復(fù),一個(gè)設(shè)計(jì)得非常好的仿真器就將顯示問題——在仿真時(shí)間到來時(shí),δ延遲保持在先——并停止仿真。
看起來,表7-36所顯示的S-R鎖存器在S和R同時(shí)復(fù)位時(shí)會產(chǎn)生一個(gè)‘U’輸出似乎很好,但事實(shí)上并非一定如此美妙。別忘了,對一個(gè)VHDL的編程者而言,語言是足夠強(qiáng)大的,以至可以輕松地描述一個(gè)具備某行為的模型,這個(gè)模型將利用VHDL的時(shí)間模型,這部分我們還沒有探討,在輸出變化太快的情況下,還未對所存器模型的復(fù)位時(shí)間和產(chǎn)生‘U’輸出進(jìn)行模擬。
記住,如果一個(gè)電路有可能進(jìn)入不定狀態(tài),就不能保證仿真器能檢測到,尤其是在大型的設(shè)計(jì)中,一個(gè)系統(tǒng)的設(shè)計(jì)最好地避免不定態(tài)的方式是仔細(xì)辨認(rèn)并保護(hù)它的不同步邊沿,就如同在8.9部分討論的那樣。
表7-37
****‘U’想要什么****
7.12.2 時(shí)鐘電路
在實(shí)際設(shè)計(jì)時(shí),用VHDL語言進(jìn)行模擬的大多數(shù)數(shù)字設(shè)計(jì)是時(shí)序的、用邊沿觸發(fā)器的同步系統(tǒng)。除了我們所學(xué)的VHDL特征,還有一個(gè)特征需要描述邊沿觸發(fā)器的行為,而“事件屬性”可以被連接到一個(gè)信號,來產(chǎn)生一種布爾代數(shù)值,如果信號引發(fā)的事件能引起一個(gè)進(jìn)程去執(zhí)行當(dāng)前的模擬循環(huán),那么就對了,否則,就是錯(cuò)誤的。
用“事件屬性”,我們能模擬一個(gè)動態(tài)邊沿D觸發(fā)器的行為,如同在表7-37中描述的那樣。
這里,同步清零CLR比時(shí)鐘電路的其他任何行為都優(yōu)先,因此在設(shè)計(jì)語句時(shí),最先被檢測,如果滿足IF條件,那么就檢測ELSIF語句,在CLK的邊沿時(shí),狀態(tài)語句將被執(zhí)行,記住,“CLK’EVENT”對CLK的任何變化都起作用,但“CLK=1”表示只在CLK上升沿才起作用,還有一些其他方式來構(gòu)建具有觸發(fā)器行為的進(jìn)程和狀態(tài)。表7-38顯示了兩種方式來描述一個(gè)D觸發(fā)器(沒有CLR輸入)。
表7-38
在一個(gè)時(shí)鐘電路的測試平臺有一件你需要做的事是產(chǎn)生一個(gè)系統(tǒng)時(shí)鐘信號,這可以輕松地完成,靠的是在一個(gè)進(jìn)程中用一個(gè)循環(huán)。圖表7-39所示,其為一個(gè)100MHz的而且有60%是零值的循環(huán)時(shí)鐘信號。
綜合工具
你可能想知道一個(gè)分析工具是如何實(shí)現(xiàn)將表7-37或表7-38中的邊沿觸發(fā)器行為變成一個(gè)高效的觸發(fā)器行為的?大多數(shù)工具僅辨識少許穩(wěn)定的描述觸發(fā)行為的方式,而且在面向?qū)ο蠹夹g(shù)中把他們作為一個(gè)觸發(fā)器元件。
在XILINX基本系列1。5版本軟件中的綜合分析工具能辨識“CLK’EVENT”和“CLK=1”的描述。也就是我們書中所描述的。除了給出的描述VHDL有許多不同的方式描述同一個(gè)功能,如在表7-38中所示。《VHDL讀者指南》的作者Peter ashden(morgan kanfmann,1996)描述過這些內(nèi)容,并通過某些修改,在不同的工具中運(yùn)行過。僅僅一種能綜合四種格式中的三種,大多數(shù)只能處理兩個(gè)。因此,你需要去學(xué)習(xí)你所用工具適合的描述方法。
參考:

表7-39
不定現(xiàn)象長期存在,而且很久以前就有。古希臘哲學(xué)家們在幾千年前就描述過不定現(xiàn)象。一些現(xiàn)代哲學(xué)家在他們所謂自由相冊的標(biāo)題中稱Devo sang為不定現(xiàn)象。美國國會今天仍然不能決定如何去拯救社會安全。
在鎖存器中IBM集成電路設(shè)計(jì)首要注重的是掃描功能,不是觸發(fā)器,埃德華J.Mc克拉斯科列FPGA的設(shè)計(jì)利用了這章中描述時(shí)序電路類型。然而,還有其他類型也被應(yīng)用在其它舊式的分離的設(shè)計(jì)中(如果完全回到真空管邏輯時(shí)代)同樣,在現(xiàn)代的傳統(tǒng)VLSI設(shè)計(jì)中也用到。舉個(gè)例子,同步時(shí)序狀態(tài)機(jī)是通常的幾種脈沖模式電路的一個(gè)特殊例子。這種電路擁有一個(gè)或多個(gè)脈沖輸入,或某個(gè)時(shí)刻只有一個(gè)脈沖或是一個(gè)脈沖在多數(shù)狀態(tài)變化時(shí)產(chǎn)生或僅僅有脈沖才產(chǎn)生狀態(tài)變化或當(dāng)一個(gè)脈沖產(chǎn)生時(shí),非脈沖輸入是穩(wěn)定的。在同步時(shí)許狀態(tài)機(jī)中,一個(gè)脈沖是指一個(gè)時(shí)鐘的觸發(fā)邊沿,然而用多脈沖輸入也可以設(shè)計(jì)電路,不僅是用通用邊沿觸發(fā)器甚至用存儲器元件也能設(shè)計(jì),這些可能性在Mc克拉斯克的《邏輯設(shè)計(jì)原理》中有很好地描述。
一種脈沖電路中特別重要的類型在Mc克拉斯克的書中也被討論到,其他的是二相鎖存機(jī)。一種在VLSI中可行的二相鎖存方式在卡瓦米德和寧·康威合著的書《VLSI系統(tǒng)導(dǎo)論》(1980年,愛迪生-為斯里出版社)有討論過。
這些狀態(tài)機(jī)基本上減少了在邊沿觸發(fā)器中的潛在危險(xiǎn),方式是用一對待非重疊時(shí)鐘的有使能端的鎖存器來實(shí)現(xiàn)。
在高級邏輯是教材中討論過專業(yè)或半專業(yè)的狀態(tài)圖的化簡方法,包括Mc克拉斯克1986年寫的書,更多的數(shù)學(xué)上的關(guān)于這些方式的討論和其他時(shí)序機(jī)的理論上的觀點(diǎn)在《開關(guān)轉(zhuǎn)換及有限自動化理論》(1978,第二版)中有過描述,如同在本章中討論的,不正常的狀態(tài)圖會產(chǎn)生一個(gè)模糊的次態(tài)行為的描述。“IF-THEN-ELSE”是VHDL中的結(jié)構(gòu),如ABEL和VHDL能減少這種模糊。但它們不是最先完成這任務(wù)的。“數(shù)字狀態(tài)機(jī)”(ASM)標(biāo)注即一種與“IF-THEN-ELSE”等同的流圖式的描述方法。在25年前就出現(xiàn)過,因此,ASM圖在Hewlett-Packard實(shí)驗(yàn)室被首先開發(fā),發(fā)明者是托馬斯•E•奧本,繼而由奧本的大學(xué)同學(xué)克里斯特法R克拉爾的書《用狀態(tài)機(jī)設(shè)計(jì)邏輯系統(tǒng)》中被深入地發(fā)展了。
用ASM圖設(shè)計(jì)和綜合的方法很快在各種教材中出現(xiàn),包括F.P波拉薩和D.E維克爾的書《數(shù)字設(shè)計(jì)藝術(shù)》及M.莫瑞斯馬洛德《數(shù)字設(shè)計(jì)》,同樣在你正在讀的書的前兩版中也寫入了。
另外一個(gè)需要說明的關(guān)于描述狀態(tài)機(jī)的是傳統(tǒng)狀態(tài)圖的擴(kuò)展,被稱為MDS圖,他由威廉.I.法拉奇在書《數(shù)字設(shè)計(jì)的工程方法》中發(fā)明。ASM圖和MDS圖現(xiàn)在絕大部分被HDL語言和他們的編譯器代替。
許多數(shù)字設(shè)計(jì)適合各種CAD環(huán)境,包括電路圖設(shè)計(jì)工具,不幸地是,這些環(huán)境只支持傳統(tǒng)的狀態(tài)圖,是一個(gè)設(shè)計(jì)者很容易設(shè)計(jì)一個(gè)產(chǎn)生次態(tài)模糊行為的設(shè)計(jì)。因此,我個(gè)人建議是,你最好遠(yuǎn)離狀態(tài)圖設(shè)計(jì)而堅(jiān)持用HDL來設(shè)計(jì)你的狀態(tài)機(jī)。
我們這里提過同步時(shí)序與狀態(tài)機(jī)測試矢量結(jié)合的重要性,確實(shí),有一種關(guān)于同步時(shí)序的發(fā)展很完備但又幾乎被忘記的理論和實(shí)踐,其稍遜于“家庭實(shí)驗(yàn)室”,這被傅立德瑞克C亨利在書《邏輯機(jī)的有限狀態(tài)模式》(1968年出版)中講述過。
除非在你的書架上有這本經(jīng)典的書,而且知道如何利用它,請要記住在你設(shè)計(jì)的每個(gè)狀態(tài)機(jī)的輸入端加一個(gè)復(fù)位輸入。
  
致 謝
首先我要感謝指導(dǎo)我的閆舒靜老師,在我的課題設(shè)計(jì)和論文撰寫期間,他給予了悉心的指導(dǎo)。在選題、方案的優(yōu)選及軟硬件的實(shí)現(xiàn)方面,閆老師不僅給予了寶貴的意見,而且進(jìn)行了耐心的啟迪,這樣不但開闊了我的視野,還大大激發(fā)了我的積極性。同時(shí),閆老師治學(xué)嚴(yán)謹(jǐn)、精益求精、待人謙和,給我樹立了做人、治學(xué)的榜樣,對我今后的學(xué)習(xí)和工作都將產(chǎn)生長期的影響。在此,謹(jǐn)向閆老師致以最誠摯的謝意!
    同時(shí)還要感謝實(shí)驗(yàn)室的其他老師:李廣輝老師、劉老師等,他們在我做設(shè)計(jì)期間給予了無私的幫助和指導(dǎo)!
    同時(shí)還要感謝幫助過我的同學(xué)們,在本次論文課題的實(shí)驗(yàn)過程中,得到了張華夏、田永貴、李睿濤等同學(xué)的幫助,在這里像他們表示深深的謝意!
    另外還要感謝所有關(guān)心和幫助過我的朋友們!

   







歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1