真人一对一直播,chinese极品人妻videos,青草社区,亚洲影院丰满少妇中文字幕无码

0
首頁 精品范文 vhdl語言

vhdl語言

時間:2023-05-30 08:53:01

開篇:寫作不僅是一種記錄,更是一種創造,它讓我們能夠捕捉那些稍縱即逝的靈感,將它們永久地定格在紙上。下面是小編精心整理的12篇vhdl語言,希望這些內容能成為您創作過程中的良師益友,陪伴您不斷探索和進步。

vhdl語言

第1篇

關鍵詞:vhdl;CPLDCPU

中圖分類號:TP312 文獻標識碼:B文章編號:1009-9166(2008)33(c)-0049-01

CPU因其在各大系統中處于核心位置而在硬件電路設計中備受關注,但因其結構復雜,所涉專業背景多而不被一般人掌握。CPU設計極具代表性,雖發展日新月異,但就其基本原理而言大同小異。VHDL語言是符合IEEE標準的當今世界最為流行的硬件描述語言。下文通過對CPU結構模型的簡化,依托綜合實驗平臺,所描述的簡易4位CPU,能實現加、減、乘、移位等操作。

一、系統功能設計。精簡CPU結構模型,運用Altera公司的MAX7000s系列芯片,依托綜合實驗板,運用狀態機實現了微機指令系統。其指令的分析和執行過程與微機中的CPU相似,能完成簡單的算數運算和邏輯運算。

二、設計與實現。(一)、簡易4位CPU的基本結構單元。1)程序計數器;2)輸入與MAR(Memory Access Register);3)16×8RAM;4)指令寄存器;5)累加器(Accumulator);6)二進制顯示(Binary Display);7)B寄存器(B Register);8)輸出寄存器(Output Register);9)運算器(Calculater)

(二)、尋址方式介紹。本設計中的4位CPU指令共有8個且可分為兩種類型,如下表:

對狀態機的主要部分的描述和注釋:IF(clk'event AND clk='0')THEN--時鐘下降沿觸發

IF(run='1')THEN--如果CPU運行信號為

CASE pstate IS

WHEN s0=>nstate

f1:=true;--標志f1置true

IF(breg="00000000")THEN--如果B寄存器值為0

mar

END IF;

WHEN s1=>nstate

IF(breg="00000000")THEN--如果B寄存器值為0

IF(flag=true)THEN --標志為true

pc

flag:=false;--標志flag置false

END IF;--如果不滿足條件,是因為正執行多次移位的指令

END IF;--只有移位完才能執行下一條指令,所以程序計數器數值不變

(四)、簡易4位CPU功能仿真(加法)。以下是計算10+15+17-20=1C(十六進制加減計算)的VHDL源程序,這部分將寫入ROM中:ARCHITECTURE rtl OF ROM16x8_1 IS

BEGIN

dataout

"00011010" WHEN (address="0001" AND ce='0') ELSE

"00011011" WHEN (address="0010" AND ce='0') ELSE

"00101100" WHEN (address="0011" AND ce='0') ELSE

"11100000" WHEN (address="0100" AND ce='0') ELSE

"11110000" WHEN (address="0101" AND ce='0') ELSE

"00010000" WHEN (address="1001" AND ce='0') ELSE

"00010101" WHEN (address="1010" AND ce='0') ELSE

"00010111" WHEn (address="1011" AND ce='0') ELSE

"00100000" WHEN (address="1100" AND ce='0') ELSE

"00000000";

END ARCHITECTURE rtl;

10+15+17-20=1C(十六進制加減計算)仿真波形圖如下:

總結:采用自頂向下的設計方法,將復雜的CPU有效劃分位狀態機模型再進行設計和編程,并用QuartusII軟件進行了仿真,最終在MAX7000s綜合電路板上驗證通過,很好地模擬了CPU的工作過程。但此設計亦有不足之處:1.沒有直接實現除法;2.算數沒有優先級。另外,綜合開發板上的MAX7000s系列性能過低也是制約設計復雜的數字電路障礙之一。

作者單位:北京郵電大學電信工程學院

作者簡介:吉祥(1986年-),男,漢族,上海長寧區人,北京郵電大學 電信工程學院2005級電子信息工程本科生。

參考文獻:

[1]張亦華,延明.數字電路EDA入門――VHDL程序實例集[M].北京.北京郵電大學出版社.2002

[2]姜立東.VHDL語言程序設計及應用[M].北京:北京郵電大學出版社.2004

第2篇

關鍵詞:教學改革 實踐教學 VHDL語言

中圖分類號:G642 文獻標識碼:A 文章編號:1674-098X(2015)09(a)-0117-02

VHDL語言[1-2](VHDL,VHSIC (Very High Speed Integrated Circuit)Hardware Description Language)是一種標準的數字系統硬件電路設計語言,于1983年由美國國防部(DOD) 為實現其高速集成電路計劃發起創建的一種高速集成電路硬件描述語言,其目的是為了給數字電路的描述與模擬提供一個基本的標準。VHDL語言在1985年完成第一版,1987年成為IEEE標準(IEEE STD1076-1987),1993年增修為(IEEE STD1076-1993)標準。VHDL語言為高級硬件行為描述型語言,為所有可編程邏輯器件廠商(如Xilinx和Altera公司等)所支持,已成為電路設計人員和電子設計工程師必須掌握的工具語言。硬件邏輯設計技術[3]是電子信息類專業的重要專業課,該課程包括課堂理論教學和實驗兩個模塊,其特點是軟硬件結合,該課程的綜合知識面寬及工程實踐性強。電子信息類專業的學生掌握硬件邏輯設計能力無論是對學生完成畢業設計或工程創新,還是促進學生就業都有重要意義。因此,硬件邏輯設計的實踐性教學在電子信息類專業實踐教學中的地位日益顯著,如何開設好VHDL語言及硬件邏輯設計是當前硬件設計語言課程中的一個非常重要的問題[4-6]。

1 教學目標

《VHDL語言及數字邏輯設計》課程屬電子信息類專業技術類選修課,是將控制,仿真與芯片設計相結合的一門硬件設計語言。通過本課程的學習,使學生通過對VHDL語言及EDA技術的學習和實踐訓練,獲得現代硬件數字邏輯設計的軟件化設計方法,了解并初步掌握數字系統硬件電路設計領域的最新技術;通過有針對性、分層次、分階段地實施實踐教學,激發并調動學生創造性思維能力,強化學生的實踐動手能力和創新能力,為學生在硬件邏輯設計領域的進一步深入探索和進行創新奠定工程基礎,以及應用VHDL及EDA工具開發設計數字系統的基本方法及技術,為學生完成畢業設計及將來的工作等打下扎實的基礎。

另外,本課程的教學難點是,一方面要把握學生的數字電路基礎水平;另一方面要高度概括VHDL語言的專業課內容,深入淺出,還要照顧到彼此之間的聯系,尤其是面向應用。因此,首先講清楚確知學習VHDL語言的意義和FPGA的工作原理,并進一步講清VHDL語言的基本結構和以及VHDL語言中主要描述語句的特點和用途,并設計一些基本邏輯電路實例,目的在于讓學生熟悉VHDL語言的整個過程,能運用VHDL語言編程及進行仿真,并掌握其中的關鍵技術。這樣便于學生進一步學習和理解VHDL語言的應用,增強學生在工作中的競爭能力,達到可以用VHDL語言設計數字邏輯電路和數字應用系統,并在CPLD/FPGA可編程邏輯器件上實現自己的設計。

2 教學內容

VHDL語言如今已經廣泛被應用到FPGA/CPLD和ASIC中的設計。VHDL語言具有很強的電路描述和建模能力,能從多個層次對數字系統進行建模和描述,從而大大簡化了硬件邏輯設計任務,提高了硬件設計效率和可靠性。而且VHDL語言具有與具體硬件電路無關和與硬件設計平臺無關的特性,并具有良好的電路行為描述的能力,在語言易讀性和層次化結構化設計方面表現了強大生命力和應用潛力。因此,我們選擇VHDL語言作為這門課的課堂教學內容。

《VHDL語言及硬件邏輯電路設計》課程內容的主要教學思路是,以VHDL硬件描述語言為硬件設計表達手段,以Xilinx公司的ISE軟件為硬件設計開發工具,并以FPGA/CPLD可編程邏輯器件開發系統為教學實踐平臺,來實現學生對數字電路系統的開發設計,培養學生自頂而下的層次化設計思想,提高學生應用實踐創新能力。

在教學內容上,刪去了一些FPGA/CPLD可編程器件結構內容的過多講解,重點講解VHDL語言內容,并利用有限的課時補充了硬件邏輯電路設計方面的一些最新進展,以利于學生開闊視野和提高學習興趣;針對VHDL語言語法豐富的特點,增加了大量課堂實例,并結合應用對VHDL語言中關鍵要點進行詳細說明,便于學生理解和掌握VHDL課程內容;在開發軟件方面以Xilinx公司的ISE軟件作為平臺,并針對硬件仿真,重點是讓學生學會并熟練掌握用ISE軟件進行數字系統仿真的基本過程和操作;在實踐訓練方面,精心設計了課堂練習/課后習題和配套實驗,提高學生實踐動手能力,從而達到良好的教學效果。

3 多層次式教學模式

《VHDL語言及硬件邏輯電路設計》課程是一門工程實踐性很強的課程,我們提出以實踐訓練為主,邊學邊練的硬件邏輯設計教學模式,重點加大對學生實踐能力、解決實際問題能力及團體合作精神等綜合素質的培養,使“數字邏輯電路設計實踐教學”在本科培養中發揮更重要的作用。在教學過程中,提出多層次的實踐教學模式,通過大量的多層次實例教學讓學生主動建構知識、增長技能、發展能力。

我們將《VHDL語言及硬件邏輯電路設計》課程的實踐教學分為三個層次。

第一層次是課堂實驗教學,這一階段主要培養的是學生的主動學習能力,通過課堂實驗練習使學生掌握和熟練使用開發工具,具備基本的硬件編程能力。課堂實驗教學是針對教師在講授理論內容后,對應設計相應知識內容的實驗項目,并編寫課堂實驗指導書。在理論課部分內容方面,首先講解VHDL語言的基本單元,如VHDL語言設計的基本單元、構成、子結構描述(元件說明,元件安裝)等,在VHDL語言的數據類型方面,主要講解VHDL語言的客體及分類、整數類型和數組類型,表達式與運算符;其次,介紹VHDL語言主要描述語句,如順序描述語句和并發描述語句;最后介紹基本邏輯電路的設計,如組合邏輯電路的設計,時序電路的設計,存儲器和有限狀態機設計等。那么針對課程的理論內容,設計的實驗主要有:(1)ISE工具的使用;(2)編碼器和譯碼器等組合邏輯電路的設計;(3)有限狀態機和計數器等時序電路的設計;(4)RAM和FIFO等存儲器的設計。通過這些基礎知識點的實驗練習,能讓學生較好的熟悉VHDL語言的基礎知識和語句的基本應用,從而較好的掌握VHDL語言中的關鍵內容,加深了對VHDL語言知識點的感性認識和全面掌握,達到可以用VHDL語言設計數字邏輯電路和數字應用系統。在課堂上通過對算法實例的程序執行仿真模擬。

第二個層次是綜合性設計實驗,這一層次的實驗要求學生已經掌握基本的VHDL語言知識并能綜合地運用所學內容,主要培養學生動手實踐能力、解決實際問題能力及團隊合作能力。綜合性設計實驗以硬件開發板實驗為主,主要包括跑馬燈、VGA顯示、波形發生器、通用異步收發器、SRAM接口設計等題目。在實驗中,教師要求學生每4人為一組進行實踐練習。在實驗過程中,要求學生能上機編寫代碼并調試VHDL程序,每組學生對實驗過程和實驗結果進行分析和總結,并提交硬件實驗報告。在實驗課中,教師根據各個小組提交的實驗報告,首先安排各小組進行實踐動手經驗交流,然后選擇一些優秀小組中的代表上臺做實驗心得匯報,并現場進行問題分析和技術總結,加深了對VHDL語言中知識點的感性認識和全面掌握。通過這些活動,不但讓學生熟悉了硬件設計的開發環境,提高了硬件設計編程技巧,而且還能激勵學生主動學習VHDL語言的興趣,提高學生的分析和解決實際問題的能力,并培養學生團體合作能力。

第三個層次是課程設計實驗,這一階段要求學生獨立完成硬件工程課題的設計與實現,在強調學生獨立設計實現的同時,更加注重學生綜合能力的培養。課程設計題目采取開放式選題,可由教師提供背景明確和啟發性強的題目,也可以由學生自主選擇題目并提交相應的課程題目設計目標、任務和方法,經教師審核批準后作為課程設計題目。另外學生也可以根據個人興趣選擇不同類型的課程設計題目后,由學生自行擬定實驗方案,查閱文獻資料和編寫VHDL程序,自主解決實驗問題,并對對實驗結果進行分析總結,撰寫課程設計研究報告。通過這些課程設計實驗設計,在培養學生自主學習及主動學習的同時,也鍛煉學生的動手能力和表達能力。

4 結語

VHDL語言及數字邏輯設計課程是一門工程實踐性很強的課程,通過有多層次地實施實踐教學,充分發揮實踐教學的優勢,激發了學生的學習熱情,強化學生的實踐動手能力和創新能力,并培養學生獨立思考、自主創新的學習習慣,取得了較好的教學效果。該實踐教學體系遵循人才培養的客觀規律,將多層次實驗從簡單到復雜、從基礎實驗練習到綜合創新實驗,貫穿于整個VHDL語言及數字邏輯設計課程學習過程,使學生在循序漸進的實踐教學過程中成長。

參考文獻

[1] 侯伯亨,顧新.VHDL硬件描述語言與數字邏輯電路設計[M].西安:西安電子科技大學出版社,2009.

[2] 譚會生,張昌凡,EDA技術及應用[M].西安:西安電子科技大學出版社,2011.

[3] 曾志廉,何清平,通用FPGA試驗系統的設計與應用[J].計算機信息,2007(11):234-235.

[4] 葉波,趙倩.“集成電路系統設計”課程教學改革探討[J].中國電力教育,2010(16):109-110.

第3篇

關鍵詞:交通燈;VHDL;有限狀態機;仿真

中圖分類號:TP391文獻標識碼:A文章編號:1009-3044(2009)27-7796-02

Design of Traffic Light Control System based on VHDL Finite State Machine

XU Da-zhao

(Jiangsu Vocational and Technical College of Finance & Economics, Huaian 223003, China)

Abstract: According to intersection traffic light control requirements, the paper puts forward a design of traffic light control system with VHDL and finite state machine. Under the MAX + PLUS II simulation, the results show that this design meets the design requirements, then carries on the test in the experiment box, confirmsthat this design method is practical and feasible.

Key words: traffic light; VHDL; finite state machine; simulation

隨著電子技術的發展,特別是大規模集成電路的研制和發展,電子電路的設計變得越來越復雜,使用“語言”進行電子設計已成為一種趨勢[1]。VHDL語言是電子設計的主流硬件描述語言,它更適合進行行為描述,這種方式使得設計者專注于電路功能的設計,而不必過多地考慮具體的硬件結構,從而很容易實現自頂向下的設計流程。在進行數字系統設計的時候,如果實現一個控制功能,通常會選擇狀態機,因為無論是與基于VHDL的其他設計方案相比,還是與可完成相似功能的CPU相比,在很多方面有限狀態機都有難以超越的優越性。

1 系統功能要求分析

本系統要求一個由一條主干道和一條支道公路的匯合點形成的十字交叉路口的智能交通燈控制器,實現交通無人自動管理。要求是優先保證主干道的通暢,因此,平時處于“主干道綠燈,支道紅燈”的狀態,只有在支到有車輛要穿行主干道時,才將交通切換“主干道紅燈,支道綠燈”的狀態。此外,主干道和支道每次通行的時間不得低于30s,而在兩個狀態交換過程出現的“主黃,支紅”和“主紅,支黃”狀態,持續時間都為4s。根據交通信號燈控制的要求,我們把它分解為定時器和控制器兩個主要部分,其原理框圖如圖1所示。

圖中MG、MY、MR分別表示主干道上的綠燈、黃燈、紅燈,BG、BY、BR分別表示支道上的綠燈、黃燈、紅燈,它們的值為“1”時表示燈亮,為“0”時表示燈滅;sb表示支道傳感器是否檢測車輛存在,sb為“1”時表示有車,為“0”時表示無車;定時器在控制器提供的計時信號en和清零信號clr的作用下完成定時功能,并向控制器提供30s、4s的計時信號;控制器是本系統的核心,它的作用是根據支道傳感器和定時器的信號,判斷、調整和控制整個系統的狀態,并控制定時電路工作,提供適當的燈光控制信號。

2 交通燈控制器的程序設計

2.1 有限狀態機的建立

有限狀態機(Finite State Machine,簡稱FSM)是一類很重要的時序電路,是許多數字系統的核心部件[3],也是實時系統設計中的一種數學模型,是一種重要的、易于建立的、應用比較廣泛的、以描述控制特性為主的建模方法,它可以應用于從系統分析到設計的所有階段。有限狀態機的優點在于簡單易用,狀態間的關系清晰直觀。建立有限狀態機主要有兩種方法:“狀態轉移圖”和“狀態轉移表”,在此使用狀態轉移圖來描述控制器的工作過程。

根據主干道和支道的交通燈的變化情況,可以定義這樣四種狀態:S0為初始狀態,主干道綠燈亮,支道紅燈亮;S1為主干道黃燈亮,支道紅燈亮;S2為主干道紅燈亮,支道綠燈亮;S3為主干道紅燈亮,支道黃燈亮[4]。這四種狀態的轉換關系如圖2所示。在狀態轉換的過程中,有這樣一個規律:當進行狀態轉換時,定時器必須清零,此時clr為0,en為0;保持狀態時,定時器一直進行定時,此時clr為1,en為1。

2.2 有限狀態機的描述方式

VHDL沒有對狀態機的描述規定一般的格式,但是為了使綜合工具從VHDL描述識別并綜合出狀態機,需要遵循一定的編碼風格,基本的FSM的編碼風格是用CASE語句或其他等價方法來描述。一個有限狀態機總是可以被分成次態譯碼、狀態寄存器、輸出譯碼三個模塊。因此,有限狀態機描述方式有如下三種:三進程描述、雙進程描述和單進程描述,但是用VHDL描述狀態機一般采用進程(process)描述:一個是時鐘進程,控制狀態機在時鐘有效沿根據條件得到下一狀態并進行狀態遷移;另一個進程是組合進程,不受時鐘控制,由輸出相關的信號)觸發,該進程根據觸發信號決定狀態機的輸出信號值[5]。

2.3 交通燈控制器的VHDL程序[6]

根據交通信號燈控制器的狀態轉移圖和有限狀態機的描述方式,在此采用雙進程描述方式,寫出交通燈控制器的VHDL程序如下:

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

ENTITY jtd IS

PORT

(clk,sb,reset: IN STD_LOGIC;

MR,MY,MG,BR,BY,BG: OUTSTD_LOGIC);

END jtd;

ARCHITECTURE art OF jtdIS

type state_type is (S0,S1,S2,S3);

SIGNAL state : state_type;

BEGIN

change_state:PROCESS (CLK) --CLK為敏感信號量

VARIABLEs: integer range0to 255;--s為秒定時器

VARIABLEclr,en :bit;--clr,en為秒定時器使能信號

BEGIN

IF reset = '1' THENstate

ELSIF (clk'event and clk='1') THEN

IFclr='0' THENs:=0;-- clr為0,定時器清零

ELSIF en='0'THENs:=s;-- en為0,定時器保持不變

ELSEs:=s+1;--clr為1,en為1時,正常計時

ENDIF;

CASE state IS

WHEN S0=> IF S

--主干道綠燈持續時間未到30s,維持S0狀態

ELSIF (S>=30 AND sb='0')THEN state

--已過30s但支道無車,維持S0狀態

ELSIF (S>=30 AND sb='1') THEN state

--已過30s且支道有車,轉換到S1狀態

END IF;

WHEN S1=> IF S=4 THENstate

ELSEstate

END IF;

WHEN S2 => IF S

--支道綠燈持續時間未到30s,維持S2狀態

ELSIF (S>=30 AND sb='1') THEN state

--已過30s但支道有車,維持S2狀態

ELSif (S>=30 AND sb='0') thenstate

--已到30s且支道無車,轉換到S3狀態

END IF;

WHEN S3 => IF S=4 THENstate

ELSEstate

END IF;

END CASE;

END IF;

END PROCESS change_state;

output_process:PROCESS (state)

BEGIN

CASE state IS

WHEN S0 =>MR

--主干道綠燈亮,支道紅燈亮

WHEN S1 =>MR

--主干道黃燈亮,支道紅燈亮

WHEN S2 =>MR

WHEN S3 =>MR

-- 主干道紅燈亮,支道黃燈亮

END CASE;

END PROCESS output_process;

END art;

3 系統仿真

在MAX+PLUS II環境下進行了仿真[7-8],其時序仿真圖如圖3所示。

4 結束語

仿真結果表明,本設計按要求實現了交通燈的控制。把程序下載到實驗箱的FPGA芯片(EP1K30QC208-3)上,進行硬件測試,發現電路工作正常,控制結果完全符合要求。

參考文獻:

[1] 史小波,程夢璋,許會芳.集成電路設計VHDL教程[M]. 北京清華大學出版社,2005:12-15.

[2] 文暢.基于FPGA/CPLD和VHDL語言的交通燈控制系統設計[J].電腦知識與技術,2007,(3).

[3] 譚會生,張昌凡.EDA技術及應用[M]西安:西安電子科技大學出版社,2004:198-199.

[4] 田瑞利,陳海濱.基于VHDL有限狀態機的交通信號燈控制系統設計[J].廣州航海高等專科學校學報,2008,15(3)31-33.

[5] 潘松, 黃繼業. EDA技術實用教程[M].北京:科學出版社, 2002:170-174.

[6] 徐春嬌. 基于VHDL 狀態機設計的智能交通控制燈[J].國外電子元器件,2007(2):31-35。

第4篇

關鍵詞:EDA;VHDL;電子技術;虛擬實驗;仿真

中圖分類號:G642 文獻標識碼:B

文章編號:1672-5913(2007)14-0087-03

1引言

電子技術是計算機及電類專業的一門具有極強實踐性的基礎課,其教學過程是從理論知識的認知到實踐知識的認知、最后到實踐能力的認知過程,實驗環節是整個教學過程的關鍵,對教學質量起著十分重要的作用。傳統的實踐教學方式,由于實驗儀器的局限性、設備的相對陳舊實驗效率較低,而且不具備電子設計技術及仿真功能,已經不適應現代教育的發展,更不適應遠程開放教育的現代化。為此將EDA技術應用于電子技術教學,克服傳統教學的不足,將傳統經典理論與新知識、新技術很好地融會貫通,提出基于EDA平臺的虛擬電子實驗的新模式,是適應現代教育發展的必然趨勢。

2EDA技術的研究

EDA是Electronics Design Automation(即電子設計自動化)的縮寫。是指以計算機為工作平臺,融合了電子技術、計算機技術、智能化技術最新成果的現代電子設計技術。它是由CAD發展起來的,是計算機信息技術、計算機圖形學、微電子技術、電路理論以及信號分析與信號處理等理論和技術的結晶。

EDA技術的基本特征:

(1) 自動進行產品全面設計。EDA技術根據設計輸入文件(HDL或電路原理圖)自動地進行邏輯編譯、化簡、綜合、仿真、優化、布局、布線、適配以及下載編程以生成目標系統,即將電子產品從電路功能仿真、性能分析、優化設計到結果測試的全過程在計算機上自動處理完成。

(2) 硬件電路的軟件設計方式。整個設計過程在下載配置前幾乎不涉及任何硬件,其硬件設計也是通過軟件測試實現的,如同修改程序一樣快捷方便。

(3) 集成化程度更高,可構建片上系統,且體積小,功耗低,可靠性高。隨著大規模集成芯片的發展,已能進行更加復雜電路的芯片優化設計和專用集成電路ASIC設計。

(4) 系統可現場編程,在線升級。

(5) 設計的移植性好,適合分工設計而且開發周期短,設計成本低,靈活性高。

EDA的工具種類繁多、特點各異,我們選擇了最具代表性的適合教學的仿真軟件,它是Altera 公司提供的Max+PlusⅡ平臺,具有完全集成化、易學易用的可編程邏輯設計環境,主要用于設計新器件和中大規模CPLD/FPGA。它支持硬件描述語言、電路原理圖、時序圖等多種輸入方式,利用其所提供的標準門電路、芯片等邏輯器件,完成數字電路從設計輸入、編輯、編譯、仿真、封裝到下載的全過程。MAX+PlusII平臺可以保證所設計系統的可靠性、高效性和靈活性,其強大的圖形界面和完整的幫助文檔,使學生能夠輕松快速地掌握和使用該EDA平臺,進行邏輯電路及相關系統的設計,從而達到虛擬化電子技術實踐的目的。

3VHDL語言

EDA技術需要對系統的行為、功能進行正確的描述,硬件描述語言HDL(Hardware Description Language)是各種描述方法中最能體現EDA優越性的描述方法。其描述的對象就是待設計電路的邏輯功能、實現該功能的算法、選用的電路結構以及其他各種約束條件等。

VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)超高速集成電路硬件描述語言是美國國防部在1982年作為超高速集成電路開發計劃的一部分,并于 1987年經IEEE批準為1076工業標準。VHDL作為IEEE的工業標準硬件描述語言,得到眾多EDA公司的支持,在電子工程領域,已成為事實上的通用硬件描述語言,VHDL是最具推廣前景的HDL。

VHDL具有極強的描述能力,能支持系統行為級、寄存器傳輸級和門級三個不同層次的設計,在Top_Down設計的全過程中可方便地使用同一種語言。VHDL設計并不十分關心一個具體邏輯是靠何種方式實現的,設計人員不需通過門級原理圖描述電路,而是針對目標進行功能描述,把開發者的精力集中到邏輯所實現的功能上,將設計人員的工作重心提高到了系統功能的實現與調試上,只需花較少的精力用于物理實現。由于擺脫了電路細節的束縛,使得設計工作省時省力,加快了設計周期。

VHDL具有如下優點:

(1) VHDL是一門標準化語言,它是一種通用優化設計程序語言,已被電子設計界公認為標準的設計語言,適用于目前流行的各種EDA設計工具。

(2) VHDL是一門設計輸入語言,它可將復雜的硬件電路運行過程以源程序的形式輸入到數字電路設計系統中,進行系統仿真、自動綜合。

(3) VHDL是一門網表語言,它的語言結構使它可在計算機的設計環境中,是不同設計工具間相互通訊的一種低級格式,即生成的門級網表文件,可相互替換、兼容。

(4) VHDL是一門測試語言,VHDL在進行數字電路設計描述的同時,建立測試基準,對所設計的數字電路進行功能模擬和仿真,以驗證所設計電路是否滿足功能與時序需求。

(5) VHDL是一門可讀性語言,既可被計算機接受,也易被人所理解,它具有良好的可讀性,易于修改和發現錯誤。用VHDL編寫的源程序既是設計文件,又是技術文檔。

經過對EDA技術和VHDL語言的分析探討,確立了基于EDA平臺的虛擬電子實驗課程的可行性,這種新的教學模式,能使學生在計算機上完成實驗的全部仿真過程,能解決集成電路環境、虛擬設備、虛擬器件等傳統實驗方法中無法克服的實驗條件問題,可以完成各種不同水平的實驗及課程設計,大大地提高實驗教學效率。應用EDA技術的教學活動與現代教育理念接軌,學生可掌握現代電子設計的思維和方法。

4基于EDA平臺的虛擬電子實驗仿真示例

中規模集成電路在數字電路課程中是一個很重要的知識點,是過渡到大規模集成電路的重要橋梁,所以教學中要安排中規模譯碼器、數據選擇器、計數器等多個實驗。根據中規模電路結構復雜的特點,學生在原理圖和文本輸入形式中,選擇基于Max+PlusⅡ平臺的VHDL語言輸入法進行實驗設計和仿真。以下是驗證60進制計數器邏輯功能的虛擬電子實驗仿真示例。

(1) 源程序:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

entity cdu60is --實體

port (clk1,clr,ss :in std_logic;

--端口描述

co : out std_logic;

m :out std_logic_vector (7 downto 0));

end cdu60 ;

architecture aa of cdu60 is--結構體

signal out1,out2 :integer range 0 to 9;

第5篇

【關鍵詞】VHDL;通用;分頻器;同步

Designt of even-divider with synchronous terminal which pulse width modulation in VHDL

Wang Liqiu1

(ChangChun Institute of Optics,Fine Mechanics and Physics,Chinese Academy of Science,ChangChun 130033)

Abstract:In order to realize by Top-down method as time system design of synchronous pulse signal digital logic circuits,circuit design using VHDL language design a universal divider.By setting the universal divider of the generic generic description of the parameters M1 and N1,CLR input synchronous signal,you can output different pulse width and signal leading edge and CLR signal forward fully synchronous synchronous pulse signal.The simulation results show that the result is correct,the engineering practice the synchronous error in the measurement of

Keywords:photo-electronic measure;time system;FPGA;VHDL

1.引言

時統統一終端[1]除了為測控設備[2]提供基于UTC標準或GPS標準的絕對時間信息外,還要對外提供各種在時間起點上與輸入標準秒信號完全同步的同步脈沖信號。隨著可編程邏輯器件工藝和開發工具的快速發展,可編程邏輯器件(FPGA)已經逐漸成為數字電路的主流電子元件,利用EDA工具實現硬件數字邏輯電路,使得硬件電路可以在不更改PCB的基礎上進行修改和升級,因此成為目前硬件電路的首選。標準化硬件描述語言VHDL由于符合EDA電路自動化設計的要求,使得傳統人工設計方法逐漸被取代,目前已成為EDA工具和集成電路廠商的普遍首先。

為了FPGA芯片[3]中實現各路脈寬和頻率不同的獨立同步信號輸出的目的,利用VHDL語言的優點,設計一個通用的帶有同步端口且參數可調的分頻器,通過調用和設置不同的分頻器模塊,按Top-down設計方法實現主電路的設計。

2.帶同步端可變脈寬通用偶數分頻器

分頻器[5]是對較高頻率的時鐘信號進行分頻操作,從而得到較低頻率的信號。帶同步端可變脈寬通用偶數分頻器,要求具有脈寬和頻率可調,并且輸出信號與輸入同步信號clr同步的功能。

設計一個有三個輸入信號和一個輸出信號的通用分頻器,clkin為輸入的時鐘信號,分頻器對此信號進行分頻,clr為輸入同步信號,最為內部計數器的清零端,實現輸出與輸入信號同步,reset為復位信號。

3.VHDL語言設計

上述通用分頻器的VHDL[4]語言實現如下:

library ieee;

use ieee.std_logic_1164.all;

entity fenpin_e_clr_h is

generic (

n1:integer:=2; --n1為分頻倍數;

m1:integer:=1;--m1為脈寬計數;

);

port(

clkin:in std_logic; --時鐘信號(5Mhz)

reset:in std_logic; --復位信號

clkout:out std_logic; --輸出信號

clr :in std_logic --清零信號

);

end fenpin_e_clr_h;

architecture rtl of fenpin_e_clr_h is

signal temp:integer range n1-1 downto 0;

signal s,clear:std_logic;設兩級鎖存器

begin

process(clr,clear) ;

begin

if clear='1'then

s

elsif rising_edge(clr)then

s

end if;

end process;

process(clkin)—temp對時鐘clkin計數并在clr信號到來時同步清零實現同步。

begin

if(s='1')then

temp

clear

else

clear

if(clkin'event and clkin='1') then

if temp=n1-1 then

temp

else

temp

end if;

end if;

end if;

end process;

process(temp,reset)

begin

if reset='1'then

--輸出信號脈寬

If temp

clkout

else

clkout

end if;

else clkout

end if;

end process;

先描述一個分頻計數器電路,通過計數器對時鐘進行計數,然后通過計數值來控制輸出時鐘高低電平的時間;用電路的并行輸出信號來控制輸出時鐘的高低電平;輸入同步信號clr做計數器的清零信號,利用時鐘和clr信號對輸出信號經過兩次鎖存器[6](s,clear)控制采樣,完成數據輸出的同步化,并可有效防止亞穩態。

上述電路中,參數n1用于調節分頻倍數,m1用于控制輸出脈寬,設置n1,m1為generic類屬說明,通過從外部對類屬參量的重新設定,改變元件內部結構和功能。n1/m1=占空比,選頻標為5Mhz,則t=1/f=200ns,則輸出信號的脈寬為Pulse=200ns*m1。

4.實際應用電路

采用5Mhz時鐘晶振,輸入同步信號clr為1hz時,利用通用模塊設計一個輸出脈寬為5us的100hz窄脈沖和50hz方波的電路如圖1所示。

采用f=5Mhz=5*106hz時鐘晶振,Inst1對其進行n1=100000分頻,對時鐘clk信號進行m1=50000次計數,得到50hz的與clr同步的方波輸出信號,即占空比為m1/n1=1/2。Inst2對時鐘clk進行n1=500000次分頻,對時鐘m1=25次計數,得到脈寬為25/(5*106)S=5uS,頻率為100hz的同步輸出信號。

5.仿真結果

采用Quartus II[7]仿真,結果如圖2所示。

從波形圖可以看出,輸出50hz信號為方波信號,輸出100hz信號為窄脈沖信號,兩個信號的信號前沿在清零信號clk到來時刻與clr信號同步。

6.結論

設計通用的輸入端口參數可調的VHDL語言模塊,在進行數字電路頂層設計時,只需要簡單的參數設置就可以完成同步分頻模塊陣列的設計和直流碼編碼輸出,使得頂層設計簡單。該電路在工程實踐中的測量結果為同步精度

參考文獻

[1]本社編.時間統一技術[M].國防國內工業出版社,2004,9.

[2]何照才等.導彈航天測量控制系統光電測量[M].國防工業出版社,2002,10.

[3]劉延飛等.基于Altera FPGA/CPLD的電子系統設計及工程實踐[M].人民郵電出版社,2009,9.

[4]王金明等.數字系統設計與VHDL[M].電子工業出版社,2010,.5.

[5]李仁發等.數字邏輯設計(第四版)[M].人民郵電出版社,2006.

第6篇

關鍵詞:ASIC 硬件描述語言HDL Verilog HDL VHDL SystemC Superlog 芯片系統SoC

引 言

硬件描述語言HDL是一種用形式化方法描述數字電路和系統的語言。利用這種語言,數字電路系統的設計可以從上層到下層(從抽象到具體)逐層描述自己的設計思想,用一系列分層次的模塊來表示極其復雜的數字系統。然后,利用電子設計自動化(EDA)工具,逐層進行仿真驗證,再把其中需要變為實際電路的模塊組合,經過自動綜合工具轉換到門級電路網表。接下去,再用專用集成電路ASIC或現場可編程門陣列FPGA自動布局布線工具,把網表轉換為要實現的具體電路布線結構。

目前,這種高層次(high-level-design)的方法已被廣泛采用。據統計,目前在美國硅谷約有90%以上的ASIC和FPGA采用硬件描述語言進行設計。

硬件描述語言HDL的發展至今已有20多年的歷史,并成功地應用于設計的各個階段:建模、仿真、驗證和綜合等。到20世紀80年代,已出現了上百種硬件描述語言,對設計自動化曾起到了極大的促進和推動作用。但是,這些語言一般各自面向特定的設計領域和層次,而且眾多的語言使用戶無所適從。因此,急需一種面向設計的多領域、多層次并得到普遍認同的標準硬件描述語言。20世紀80年代后期,VHDL和Verilog HDL語言適應了這種趨勢的要求,先后成為IEEE標準。

現在,隨著系統級FPGA以及系統芯片的出現,軟硬件協調設計和系統設計變得越來越重要。傳統意義上的硬件設計越來越傾向于與系統設計和軟件設計結合。硬件描述語言為適應新的情況,迅速發展,出現了很多新的硬件描述語言,像Superlog、SystemC、Cynlib C++等等。究竟選擇哪種語言進行設計,整個業界正在進行激烈的討論。因此,完全有必要在這方面作一些比較研究,為EDA設計做一些有意義的工作,也為發展我們未來的芯片設計技術打好基礎。

1 目前HDL發展狀況

目前,硬件描述語言可謂是百花齊放,有VHDL、Superlog、Verilog、SystemC、Cynlib C++、C Level等等。雖然各種語言各有所長,但業界對到底使用哪一種語言進行設計,卻莫衷一是,難有定論。

而比較一致的意見是,HDL和C/C++語言在設計流程中實現級和系統級都具有各自的用武之地。問題出現在系統級和實現級相連接的地方:什么時候將使用中的一種語言停下來,而開始使用另外一種語言?或者干脆就直接使用一種語言?現在看來得出結論仍為時過早。

在2001年舉行的國際HDL會議上,與會者就使用何種設計語言展開了生動、激烈的辯論。最后,與會者投票表決:如果要啟動一個芯片設計項目,他們愿意選擇哪種方案?結果,僅有2票或3票贊成使用SystemC、Cynlib和C Level設計;而Superlog和Verilog各自獲得了約20票。至于以后會是什么情況,連會議主持人John Cooley也明確表示:“5年后,誰也不知道這個星球會發生什么事情。”

各方人士各持己見:為Verilog辯護者認為,開發一種新的設計語言是一種浪費;為SystemC辯護者認為,系統級芯片SoC快速增長的復雜性需要新的設計方法;C語言的贊揚者認為,Verilog是硬件設計的匯編語言,而編程的標準很快就會是高級語言,Cynlib C++是最佳的選擇,它速度快、代碼精簡;Superlog的捍衛者認為,Superlog是Verilog的擴展,可以在整個設計流程中僅提供一種語言和一個仿真器,與現有的方法兼容,是一種進化,而不是一場革命。

當然,以上所有的討論都沒有提及模擬設計。如果想設計帶有模擬電路的芯片,硬件描述語言必須有模擬擴展部分,像Verilog HDL-A,既要求能夠描述門級開關級,又要求具有描述物理特性的能力。

2 幾種代表性的HDL語言

2.1 VHDL

早在1980年,因為美國軍事工業需要描述電子系統的方法,美國國防部開始進行VHDL的開發。1987年,由IEEE(Institute of Electrical and Electro- nics Engineers)將VHDL制定為標準。參考手冊為IEEE VHDL語言參考手冊標準草案1076/B版,于1987年批準,稱為IEEE 1076-1987。應當注意,起初VHDL只是作為系統規范的一個標準,而不是為設計而制定的。第二個版本是在1993年制定的,稱為VHDL-93,增加了一些新的命令和屬性。

雖然有“VHDL是一個4億美元的錯誤”這樣的說法,但VHDL畢竟是1995年以前唯一制訂為標準的硬件描述語言,這是它不爭的事實和優勢;但同時它確實比較麻煩,而且其綜合庫至今也沒有標準化,不具有晶體管開關級的描述能力和模擬設計的描述能力。目前的看法是,對于特大型的系統級數字電路設計,VHDL是較為合適的。

實質上,在底層的VHDL設計環境是由Verilog HDL描述的器件庫支持的,因此,它們之間的互操作性十分重要。目前,Verilog和VDHL的兩個國際組織OVI、VI正在籌劃這一工作,準備成立專門的工作組來協調VHDL和Verilog HDL語言的互操作性。OVI也支持不需要翻譯,由VHDL到Verilog的自由表達。

2.2 Verilog HDL

Verilog HDL是在1983年,由GDA(GateWay Design Automation)公司的Phil Moorby首創的。Phil Moorby后來成為Verilog-XL的主要設計者和Cadence公司的第一合伙人。在1984~1985年,Phil Moorby設計出了第一個名為Verilog-XL的仿真器;1986年,他對Verilog HDL的發展又作出了另一個巨大的貢獻:提出了用于快速門級仿真的XL算法。

隨著Verilog-XL算法的成功,Verilog HDL語言得到迅速發展。1989年,Cadence公司收購了GDA公司,Verilog HDL語言成為Cadence公司的私有財產。1990年,Cadence公司決定公開Verilog HDL語言,于是成立了OVI(Open Verilog International)組織,負責促進Verilog HDL語言的發展。基于Verilog HDL的優越性,IEEE于1995年制定了Verilog HDL的IEEE標準,即Verilog HDL 1364-1995;2001年了Verilog HDL 1364-2001標準。在這個標準中,加入了Verilog HDL-A標準,使Verilog有了模擬設計描述的能力。

2.3 Superlog

開發一種新的硬件設計語言,總是有些冒險,而且未必能夠利用原來對硬件開發的經驗。能不能在原有硬件描述語言的基礎上,結合高級語言C、C++甚至Java等語言的特點,進行擴展,達到一種新的系統級設計語言標準呢?

Superlog就是在這樣的背景下研制開發的系統級硬件描述語言。Verilog語言的首創者Phil Moorby和Peter Flake等硬件描述語言專家,在一家叫Co-Design Automation的EDA公司進行合作,開始對Verilog進行擴展研究。1999年,Co-Design公司了SUPERLOGTM系統設計語言,同時了兩個開發工具:SYSTEMSIMTM和SYSTEMEXTM。一個用于系統級開發,一個用于高級驗證。2001年,Co-Design公司向電子產業標準化組織Accellera了SUPERLOG擴展綜合子集ESS,這樣它就可以在今天Verilog語言的RTL級綜合子集的基礎上,提供更多級別的硬件綜合抽象級,為各種系統級的EDA軟件工具所利用。

至今為止,已超過15家芯片設計公司用Superlog來進行芯片設計和硬件開發。Superlog是一種具有良好前景的系統級硬件描述語言。但是不久前,由于整個IT產業的滑坡,EDA公司進行大的整合,Co-Design公司被Synopsys公司兼并,形勢又變得撲朔迷離。

2.4 SystemC

隨著半導體技術的迅猛發展,SoC已經成為當今集成電路設計的發展方向。在系統芯片的各個設計中,像系統定義、軟硬件劃分、設計實現等,集成電路設計界一直在考慮如何滿足SoC的設計要求,一直在尋找一種能同時實現較高層次的軟件和硬件描述的系統級設計語言。

SystemC正是在這種情況下,由Synopsys公司和CoWare公司積極響應目前各方對系統級設計語言的需求而合作開發的。1999年9月27日,40多家世界著名的EDA公司、IP公司、半導體公司和嵌入式軟件公司宣布成立“開放式SystemC聯盟”。著名公司Cadence也于2001年加入了SystemC聯盟。SystemC從1999年9月聯盟建立初期的0.9版本開始更新,從1.0版到1.1版,一直到2001年10月推出了最新的2.0版。

3 各種HDL語言的體系結構和設計方法

3.1 SystemC

所有的SystemC都是基于C++的;圖1中的上層構架都是很明確地建立在下層的基礎上;SystemC內核提供一個用于系統體系結構、并行、通信和同步時鐘描述的模塊;完全支持內核描繪以外的數據類型、用戶定義數據類型;通常的通信方式,如信號、FIFO,都可以在內核的基礎上建立,經常使用的計算模塊也可以在內核基礎上建立;如果需要,圖1中較低層的內容不依賴上層就可以直接使用。

實際使用中,SystemC由一組描述類庫和一個包含仿真核的庫組成。在用戶的描述程序中,必須包括相應的類庫,可以通過通常的ANSI C++編譯器編譯該程序。SystemC提供了軟件、硬件和系統模塊。用戶可以在不同的層次上自由選擇,建立自己的系統模型,進行仿真、優化、驗證、綜合等等。

3.2 Superlog

Superlog集合了Verilog的簡潔、C語言的強大、功能驗證和系統級結構設計等特征,是一種高速的硬件描述語言。其體系結構如圖2。

① Verilog 95和Verilog 2K。Superlog是Verilog HDL的超集,支持最新的Verilog 2K的硬件模型。

② C和C++語言。Superlog提供C語言的結構、類型、指針,同時具有C++面對對象的特性。

③ Superlog擴展綜合子集ESS。ESS提供一種新的硬件描述的綜合抽象級。

④ 強大的驗證功能。自動測試基準,如隨機數據產生、功能覆蓋、各種專有檢查等。

Superlog的系統級硬件開發工具主要有Co- Design Automation公司的SYSTEMSIMTM和SYSTEMEXTM,同時可以結合其它的EDA工具進行開發。

3.3 Verilog和VHDL

這兩種語言是傳統硬件描述語言,有很多的書籍和資料可以查閱參考,這里不多介紹。

4 目前可取可行的策略和方式

按傳統方法,我們將硬件抽象級的模型類型分為以下五種:

系統級(system)——用語言提供的高級結構實現算法運行的模型;

算法級(algorithm)——用語言提供的高級結構實現算法運行的模型;

RTL級(Register Transfer Level)——描述數據在寄存器之間流動和如何處理、控制這些數據流動的模型。(以上三種都屬于行為描述,只有RTL級才與邏輯電路有明確的對應關系。)

門級(gate-level)——描述邏輯門以及邏輯門之間的連接模型。(與邏輯電路有確切的連接關系。以上四種,數字系統設計工程師必須掌握。)

開關級(switch-level)——描述器件中三極管和存儲節點以及它們之間連接的模型。(與具體的物理電路有對應關系,工藝庫元件和宏部件設計人員必須掌握。)

根據目前芯片設計的發展趨勢,驗證級和綜合抽象級也有可能成為一種標準級別。因為它們適合于IP核復用和系統級仿真綜合優化的需要,而軟件(嵌入式、固件式)也越來越成為一個和系統密切相關的抽象級別。

目前,對于一個系統芯片設計項目,可以采用的方案包括以下幾種:

① 最傳統的辦法是,在系統級采用VHDL,在軟件級采用C語言,在實現級采用Verilog。目前,VHDL與Verilog的互操作性已經逐步走向標準化,但軟件與硬件的協調設計還是一個很具挑戰性的工作,因為軟件越來越成為SOC設計的關鍵。該方案的特點是:風險小,集成難度大,與原有方法完全兼容,有現成的開發工具;但工具集成由開發者自行負責完成。

② 系統級及軟件級采用Superlog,硬件級和實現級均采用Verilog HDL描述,這樣和原有的硬件設計可以兼容。只要重新采購兩個Superlog開發工具SYSTEMSIMTM和SYSTEMEXTM即可。該方案特點是風險較小,易于集成,與原硬件設計兼容性好,有集成開發環境。

③ 系統級和軟件級采用SystemC,硬件級采用SystemC與常規的Verilog HDL互相轉換,與原來的軟件編譯環境完全兼容。開發者只需要一組描述類庫和一個包含仿真核的庫,就可以在通常的ANSI C++編譯器環境下開發;但硬件描述與原有方法完全不兼容。該方案特點是風險較大,與原軟件開發兼容性好,硬件開發有風險。

5 未來發展和技術方向

微電子設計工業的設計線寬已經從0.25μm向 0.18μm變遷,而且正在向0.13μm和90nm的目標努力邁進。到0.13μm這個目標后,90%的信號延遲將由線路互連所產生。為了設計工作頻率近2GHz的高性能電路,就必須解決感應、電遷移和襯底噪聲問題(同時還有設計復雜度問題)。

未來幾年的設計中所面臨的挑戰有哪些?標準組織怎樣去面對?當設計線寬降到0.13μm,甚至更小時,將會出現四個主要的趨勢:

設計再利用;

設計驗證(包括硬件和軟件);

互連問題將決定對時間、電源及噪聲要求;

系統級芯片設計要求。

滿足未來設計者需要的設計環境將是多家供應商提供解決方案的模式,因為涉及的問題面太廣且太復雜,沒有哪個公司或實體可以獨立解決。實際上,人們完全有理由認為,對下一代設計問題解決方案的貢獻,基礎研究活動與獨立產業的作用將同等重要。

以后,EDA界將在以下三個方面開展工作。

① 互用性標準。所有解決方案的基礎,是設計工具開發過程的組件——互用性標準。我們知道,EDA工業采用的是工業上所需要的標準,而不管標準是誰制定的。但是,當今市場的迅速發展正在將優勢轉向那些提供標準時能做到快速適應和技術領先的組織。處于領先的公司正在有目的地向這方面投資,那些沒有參加開發這些標準的公司則必須獨自承擔風險。

② 擴展其高級庫格式(ALF)標準,使其包含物理領域的信息,是EDA開發商可以致力于解決互連問題的算法,從而使電路設計者在解決設計收尾工作時,不再受到這個問題的困擾。

③ 制定新的系統級設計語言標準。標準化系統芯片的設計工具和語言,使SoC真正達到第三次微電子設計革命浪潮。

6 國內發展的戰略選擇

由于目前IT行業不景氣,以及ASIC設計復雜程度不斷增加,各EDA公司出現了合并調整的趨勢。Synopsys合了Avant!和Co-Design,Cadence合了GDA等,形成了幾大巨頭的局面。而各可編程器件廠商,像Xilinx和Altera,也積極與EDA緊密合作,因此,我們必須抓住這個時機,全力發展;不然,就要面對以后與壟斷巨頭進行競爭的事倍功半的不利局面。

針對目前硬件描述語言的發展和國家芯片制造生產的發展戰略,國內如何在原EDA基礎薄弱的情況下迅速發展,使EDA成為一個合理、健康而必不可少的產業;將基礎研究活動與獨立產業的作用合理的結合,建議開展如下方面的工作:

① 為了實現我國的芯片設計自主化,必須夯實基礎,在結合VHDL的基礎上,推廣Verilog HDL設計語言,使硬件設計的底層單元庫可以自主研制;

② 根據目前芯片系統的發展趨勢,對系統級語言進行比較研究,在Suoerlog、SystemC等語言中做出選擇,并進行相關工具的推廣,以及與相關企業進行合作等;

③ 深入HDL語言的綜合和仿真等模型的研究,努力在與國外合作的基礎上,建立自主知識產權的EDA公司;

④ 積極加入EDA目前正在進行的標準化工作,做到了解、學習、應用、吸收、參與并重;

第7篇

關鍵詞:FIR 濾波器;Simulink;DSP Builder;Quartus Ⅱ

中圖分類號:TN713文獻標識碼:A

文章編號:1004-373X(2009)20-193-03

Design of 16-taps FIR Filter Based on DSP Builder

FAN Hanbai,SI Jiazhen

(North China Electric Power University,Baoding,071003,China)

Abstract:Field Programmable Gate Array(FPGA)devices is widely used in the field of digital signal processing,it is difficult to design using VHDL or VerilogHDL.A model development technology of DSP Builder is adopted to design FIR filter,according to the flow of Matlab/Simulink/DSP Builder/Modelsim /Quartus Ⅱ,a 16-taps low-pass FIR filter is designed,which is simulated and verified in the digital signal process circuit,the results show that the method is simple,feasible and the advantage of designing digital filter by the use of DSP builder are verified.

Keywords:FIR filter;Simulink;DSP Builder;Quartus Ⅱ

FIR數字濾波器在數字信號處理的各種應用中發揮著十分重要的作用,它能夠提供理想的線性相位響應,在整個頻帶上獲得常數群時延,從而得到零失真輸出信號,同時它可以采用十分簡單的算法予以實現。這些優點使FIR濾波器成為設計工程師的首選。在采用VHDL或VerilogHDL等硬件描述語言設計數字濾波器時,由于程序的編寫往往不能達到良好優化而使濾波器性能表現一般,而采用調試好的IP Core需要向Altera公司購買。在此,采用一種基于DSP Builder的FPGA設計方法,使FIR濾波器設計較為簡單易行,并能滿足設計要求[1]。

1 FIR濾波器介紹

1.1 FIR濾波器原理[2,3]

對于一個FIR濾波器系統,它的沖激響應總是有限長的,最具體的FIR濾波器可用下式表示[4]:

y(n)=∑Mr=1b(r)x(n-r)

式中:r是FIR濾波器的抽頭數;x(n-r)是延時r個抽頭的輸入信號;b(r)是第r級抽頭數(單位脈沖響應);M是濾波器的階數;y(n)表示濾波器的輸出序列。

濾波器就是尋求一個可實現的系統函數H(z),使其頻率響應H(ejω)滿足所希望得到的頻域信號,也可以用卷積的形式來表示:

y(n)=x(n)*h(n)

典型的直接I型FIR濾波器如圖1表示,其輸出序列y(n)滿足下式[5]:

y(n)=h(0)x(n)+h(1)x(n-1)+

h(2)x(n-2)+…+h(15)x(n-15)

圖1 直接I型FIR濾波器

1.2 設計要求

數字濾波器實際上是一個采用有限精度算法實現的線性非時變離散系統。它的設計步驟是先根據需要確定其性能指標,設計一個系統函數h(n)逼近所需要的性能指標,濾波器的系數計算可以借助Matlab強大的計算功能和現成濾波器設計工具來完成,最后采用有限的精度算法實現[5]。該系統的設計指標為:設計一個16階的低通濾波器,選模擬信號的采樣頻率Fs為5 kHz,要求信號的截止頻率Fc=1 kHz,輸入序列的位寬為9位(最寬位為符號位)。激勵源為幅值為27,頻率為800 Hz與1 600 Hz兩個信號的混頻信號。

2 基于DSP Builder設計FIR濾波器

2.1 DSP Builder介紹

DSP Builder是美國Altera公司推出的一個面向DSP開發的系統級設計工具,它在Quartus Ⅱ設計環境中集成了Matlab和Simulink DSP開發軟件。

以往使用的Matlab工具僅僅作為DSP算法的建模和基于純數學的仿真,其數學模型無法為硬件DSP應用系統直接產生實用的程序代碼,仿真測試的結果也往往是基于數學的算法結果。而以往的FPGA所需要的傳統基于硬件描述語言的設計因考慮了FPGA硬件的延時與VHDL遞歸算法的銜接,以及補碼運算和乘積結果截取等問題,所以相當繁瑣。

而對于DSP Builder而言,它作為Matlab的一個Simulink工具箱,使得用FPGA設計的DSP系統完全可以通過Simulink的圖形化界面進行建模、系統級仿真。設計模型可直接向VHDL硬件描述語言轉換,并自動調用QuartusⅡ等EDA設計軟件,完成綜合、網表生成以及器件適配乃至FPGA

的配置下載,使得系統描述與硬件實現有機地融合,充分體現了現代電子技術自動化開發的特點與優勢[6]。

2.2 FIR濾波器的設計

2.2.1 FIR濾波器參數選取

采用Matlab提供的濾波器專用設計工具FDAtool仿真設計的濾波器[7],可滿足要求的FIR濾波器幅頻特性,由于浮點小數在FPGA中實現得比較困難,且代價太大,因而需要將濾波器的系數和輸入數據轉化為整數,其中量化后的系統可以在Matlab主窗口中直接轉化,對于輸入數據,乘以28的增益用Altbus控制位寬轉化為整數輸入。

2.2.2 FIR濾波器模型的建立

根據FIR濾波器原理,可以利用FPGA來實現FIR濾波電路。DSP Builder設計流程的第一步是在Matlab/Simulink中進行設計輸入的,即在Matlab的Simulink環境中建立一個MDL模型文件,用圖形方式調用DSP Builder和其他Simulink庫中的圖形模塊,構成系統級或算法級設計框圖[6],如圖2所示。

圖2 FIR濾波器模型

2.2.3 在Simulink中的仿真并生成VHDL代碼[8]

完成模型設計之后,可以先在Simulink中對模型進行仿真,可以通過Simulink中的示波器模塊查看各個步驟的中間結果。輸入信號采用800 Hz和1 600 Hz,幅值相同的兩個正弦信號的疊加。仿真結果如圖3所示。從仿真波形可以看出,通過濾波器之后,1 600 Hz的信號能夠被很好地濾除[9]。

圖3 Simulink中的仿真波形

雙擊Signal Compiler可對以上的設計模型進行分析,選擇相應的芯片,將以上設計模塊圖文件“翻譯”成VHDL語言。

2.2.4 Modelsim的RTL仿真[10]

在Simulink中進行的仿真屬于系統驗證性質的,是對mdl文件進行的仿真,并沒有對生成的VHDL代碼進行仿真。事實上,生成VHDL描述的是RTL級的,是針對具體的硬件結構,而在Matlab的Simulink中的模型仿真是算法級的,兩者之間有可能存在軟件理解上的差異,轉化后的VHDL代碼實現可能與mdl模型描述的情況不完全相符。這就需要針對生成的RTL級VHDL代碼進行功能仿真,仿真結果如圖4所示。

圖4 Modelsim進行RTL仿真的波形

仿真結果說明,在Modelsim中仿真結果和Simulink里的仿真結果基本一致,該濾波器有較好的濾波效果。可以看出,輸入正弦波經過數字化過程以后,能夠在Modelsim中還原出模擬波形,符合設計的要求,可以在Quartus Ⅱ的環境下進行硬件設計[1]。

2.2.5 濾波器在FPGA上的實現[1]

在Quartus Ⅱ環境中,打開DSP Builder建立的Quartus Ⅱ項目文件,在Quartus Ⅱ中再進行一次仿真,由此可以看到符合要求的時序波形,然后指定器件引腳,并進行編譯,最后下載到FPGA器件中,就可以對硬件進行測試,加上clok信號和使能信號,用信號發生器產生所要求的兩個不同頻率的正弦信號,就可以在示波器上看到濾波后的結果。需要設計不同的濾波器電路是僅修改FIR濾波器模型文件就可以實現,這樣不僅避免了繁瑣的VHDL語言編程,而且便于進行調整。

3 結 語

在利用FPGA進行數字濾波器開發時,采用DSP Builder作為設計工具,能加快進度。當然,在實際應用中,受精度、速度和器件選擇方面的影響,可能對其轉化的VHDL進行進一步的優化。

參考文獻

[1]楊麗杰,崔葛瑾.基于FPGA的FIR濾波器設計方法的研究[J].東北大學學報,2006,32(6):93-96.

[2]程佩清.數字信號處理教程[M].北京:清華大學出版社,1995.

[3]胡廣書.數字信號處理理論、算法與實現[M].北京:清華大學出版社,2002.

[4]田東生,王鵬.基于FPGA的FIR濾波器的設計與實現[J].電子測量,2007(10):54-57.

[5]張淼,伏云昌.基于DSP Builder的14階FIR濾波器的設計[J].現代電子技術,2007,30(21):185-186.

[6]潘松,黃繼業,王國棟.現代DSP技術[M].西安:西安電子科技大學出版社,2003.

[7]張志恒,王衛芳.基于Matlab信號處理工具箱的數字濾波器設計與仿真[J].電力學報,2007,22(1):54-56.

[8]王紫婷,郭海麗.基于Matlab/Simulink的數字濾波器IP核的設計與實現[J].蘭州交通大學學報,2008,27(3):111-113.

第8篇

關鍵詞:FPGA;洗衣機;控制器

1 概述

洗衣機的發明使人類告別了手工洗衣的繁重勞動,但是最初由于技術不發達洗衣機的自動化程度顯然不高,洗衣的幾個過程仍需要人工切換操作來進行。隨著科技的發展,洗衣機也由最初的洗滌和脫水的手動切換過程發展到了半自動半手工,發展成為目前普遍使用的全自動洗衣機,現實要求洗衣機的體積更小、集成度更高、應用更簡單、洗衣機的控制引入了微型處理器進行編程,實現對洗衣機內外部水流的控制,洗衣機控制精度不同對控制器的精度要求也不同,對于控制精度要求高的洗衣機需要精度高的控制。本系統采用有FPGA芯片的在線可編程控制器,該系統控制器硬件使用VHDL語言設計而成,不僅性能穩定抗干擾能力強而且方便調試維護和系統升級,保障洗衣機系統的正常運行。

2 系統的功能部件介紹

該洗衣機控制器根據功能可以劃分為五個模塊,分別為時間預置編碼器模塊、減法計數器模塊、數碼管顯示模塊、時序電路模塊和譯碼器模塊。

(1)時間預置編碼器模塊:接收用戶所輸入的預置時間信息,并將時間信息進行編碼,編碼成機器語言后轉交給減法計數器。

(2)減法計數器模塊:將接收的編碼時間預置信息轉換成開始信號發送給電機使電機開始運行,并將預設的時間信息和剩余的時間信息發送給數碼管模塊進行顯示。

(3)數碼管顯示電路模塊:接收減法計數器模塊傳遞的時間信息,并進行譯碼顯示。

(4)電機時序控制電路:接收減法計數器模塊傳遞的運行開始和結束信號,安排電機的運行狀態并輸出。

(5)譯碼器:接收電機運行狀態的信號并譯碼,實現實時控制電機的正反轉狀態以及暫停狀態。

3 控制邏輯各模塊功能的VHPL語言實現

3.1 時間預置編碼器模塊的VHDL語言

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FENG ISPORT(CP,CLR:IN STD_ 31A ISPORT(SEL:IN STD_LOGI

C_VECTOR(2 DOWNTO 0) D1,D2,D3:IN 1,Q2,Q3,Q4,ALM:OUT_ARCOFCH41ASBPIDEGINPROCESS(D1,D2,D3,D4)VARIPIDABLE:S;USEIEEE.STD_LOGIC_1164.ALLENTITYSELISPORTARCHITECTURBEGIN PROCESS(CLK) VARIABLEE.STD;WHENEND

CASE;ENDPROCESSNSIGNED.ALLNTITYCOUNTISPORT(CLK,EN:INH,L:OUTBEGINCLK'EVEN'THENIFEN='1'THENIFELSIFLL=0THENLL1PROCESS;ENDCOUNT_AREND DISP_ARC;

2,減法計數器模塊的VHDL語言

LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALLENTITY LOCK

B IS PORT(D1,D2,D3,D4:IN STD_LOGIC; CLK,CLR:IN LOGIC;Q:OUT STD_LOGIC); END FENG; ARCHITECTURE FENG_ARC OF FENG IS BEGINPROCESS(CP,CLR) BEGINIF CLR='0'THEN QQEND PROCESS; END DISP_ARC;

3,數碼管顯示電路模塊的VHDL語言

LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALLENTITYPIDCH4

1AISPORT(D1,D2,D3,D4:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(3DOWNTO 0)) END CH41A ARCHITECTURE CHCKB;ARCHITECTURELOCK_ARCOFLOCKBGIN PROCESS(CLK) BEGIN FENQ1

EVENTANDCLK='1'THEN Q1

4,電機時序控制電路的VHDL語言

LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALENTITYCH1AISPORT(SEL:IN STD_LOGIC_VECTOR(2DOWNTO0) ;ENDIF;ENDPROCESS;ENDFENG_ARC;USEIEEE.STD_LOGIC_1164.ALLENTITYSELISPORT(CLK:INSENDSELOR(3 DOWNTO 0)Q: OUT USEIEEE.STD_LOGIC_1164.ALLENTITYSELISPORTARCHITE

CTURBEGIN PROCESS(CL STD_LOGIC_VECTOR(3 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ENDCH31A;RCHITECTURECH31_ARC

4 結束語

本系統采用FPGA作洗衣機控制單元控制情度較高,成本低且控制效率高,能夠滿足各種類型洗衣機的控制要求。實際應用穩定抗干擾能力強和結構簡單,而且占用硬件資源少,能夠通過配置系統參數以滿足不同類型洗衣機的控制要求,滿足對洗衣機水位和洗滌力度的控制精度,具有一定的實際應用價值。

參考文獻

[1]姜雪松,吳鈺淳.VHDL設計實例與仿真[M].機械工業出版社,

第9篇

(赤峰學院 物理與電子信息工程學院,內蒙古 赤峰 024000)

摘要:本文利用QuartusⅡ集成開發環境來完成譯碼器、LCD、流水燈等電路的設計,以FPGA實驗開發板為運行載體,FPGA開發板FA280核心器件為Altera CycloneⅡ系列的EP2C8Q208,通過開發板上的USB Blaster將程序下載到開發板,實現VHDL硬件語言設計的譯碼器、LCD及數碼管顯示接口電路的運行顯示.

關鍵詞 :QuartusⅡ;譯碼器;顯示接口

中圖分類號:G642文獻標識碼:A文章編號:1673-260X(2015)05-0059-02

1 引言

在信息時代的今天,科技飛速發展,電子產品更新換代迅速,傳統的設計方法再也不能滿足市場需求,因此EDA技術在一些電子領域取得了驚人的成績.當然,緊隨科技腳步的高校自然也不會落后,由此EDA技術便在電子信息類專業中發展起來了.但傳統的授課方式,讓我們只能在課堂上通過老師的講解來接觸到EDA技術,抽象的知識讓學生很難去深入理解和探索,這樣理論與實踐相結合就顯得尤為重要了.EDA是將計算機技術應用到電子電路設計中,在QuartusⅡ環境中,運用輸入原理圖或硬件語言進行編譯與仿真的技術.在開發板上可以實現數碼管、LCD、流水燈、蜂鳴器等顯示和發聲的效果.

2 EDA教學實驗開發板概述

本文用到的實驗板是FPGA開發板FA280,FA280板載有SDRAM,flash以及USB Blaster下載線電路.利用QuartusⅡ集成開發環境來完成前期設計,以FPGA實驗開發板為運行載體,來完成VHDL、Verilog HDL等一些硬件語言的運行顯示.

FPGA開發板FA280,其核心器件為Altera CycloneⅡ系列的EP2C8Q208,是包含192個引腳,其中I/O口有183個,板載存儲器包括SDRAM HY57V641620和Bytes,FLASH AM29LV320,存儲空間分別為8M和4MBytes.SDRAM與系統總線速度同步,可避免不必要的等待周期.

接口包括:PS2接口、VGA接口、RS232串口、USB下載接口.開發板具有USB Blaster下載線電路,插上USB線即可進行下載,通過撥動USB下載接口開關選擇JTAG或AS下載方式.

顯示設備包括6位7段紅光數碼管,8位綠色LED發光二極管,LCD1602和LCD12864顯示屏接口插座.

復位電路由一個復位按鍵和一個復位芯片組成的,可以將電路恢復到起始狀態(相當于清零按鈕).復位芯片為MAX811R,可將輸出脈沖寬度為140ms、門限為2.63V的低電平有效復位脈沖信號提供給FA280.

電源部分包括1117-3.3和1117-1.2各一片,從功能板分別引入3.3V和1.2V的直流電源作為EP2C8的核心電源電壓,并在核心板上加入濾波電容,以確保芯片和電源系統的穩定性.

其他還包括一個蜂鳴器、4位獨立按鍵、電源插座和開關、SD卡座、擴展總線(GPIO)和有源晶振.

3 EDA技術的應用軟件及開發流程

3.1 硬件描述語言VHDL

高級硬件描述語言VHDL已成為IEEE標準,適用于行為級和RTL級的描述,最適于描述電路行為,并在設計時可以不了解電路的結構細節.VHDL主要用于描述數字系統的結構、行為、功能和接口,其設計的基本點是將設計實體分成內、外部分.完整的VHDL程序要包含庫、程序包、實體、構造體和配置等部分,它的描述語句和常用語句都有其固定的格式,并且有自己的語法,不允許不同類型的數據在表達式中自由組合.

3.2 開發流程

QuartusⅡ作為一個綜合性的開發平臺,可以完成多種功能的實現.QuartusⅡ的設計流程:首先輸入HDL等形式的設計文本,接著根據設計要求設定編譯方式和策略,然后進行設計校驗(仿真和定時分析),最后進行編程與驗證(將編程文件配置到PLD中).設計過程中,如果出現錯誤,則回到設計輸入階段改錯,然后重復以上步驟.

設計輸入:設計輸入可以用HDL方式或原理圖錄入方式.一般可以使用原理圖來設計最頂層,將整個設計的結構描述清楚,具體實現各模塊時用HDL.對于HDL方式的設計輸入,可以采用Verilog和VHDL,我們這里采用VHDL語言來實現.

綜合:綜合工具將設計轉換成包含邏輯單元和邏輯單元間連接的網表文件.

功能仿真:對已經綜合的電路的功能進行驗證,功能仿真不涉及任何時序方面的內容.

配置:將綜合產生的網絡表中的邏輯單元映射到CPLD/FPGA器件中的LE,這里還包含器件中LE間連接和路由的選擇.

時序分析和時序仿真:通過分析配置后的電路各個路徑上的傳輸延時,獲得電路的性能情況.這里的時序仿真將結合器件時間參數,與前面的功能仿真不同,功能仿真只關注與源程序的邏輯是否正確.

編程:在CPLD/FPGA器件內實現設計,包括邏輯單元和邏輯單元間的連接.

在做一個設計時,通常要對功能進行模塊劃分,每個模塊對應一個源文件,用一個唯一的頂層文件將這些模塊源文件組合起來,形成一個整體設計.頂層文件完成模塊的例化工作,頂層文件可以用HDL語言編寫,也可以用原理圖的方式.

4 譯碼器與顯示接口電路設計

4.1 3線-8線譯碼器

3線-8線譯碼器的仿真過程:運行Quartus II軟件,建立工程項目,工程命名為lq.建立一個VHDL文件,命名為lq,文件后綴為.vhd,再將程序寫入并保存,然后編譯,確保沒有錯誤后進行仿真,周期設為100ns.將輸入端A2、A1、A0三位二進制代碼按照真值表設定好;S_0、S_1、S_2為控制輸入端,當s_0 and (not s_1)and (not s_2)為1時,譯碼器工作,當它為0時,譯碼器全為高電平;輸出端Z-n7到Z-n0.在對端口進行設定,將A2、A1、A0和總控制端S設定為K1、K2、K3、K4四位獨立按鍵作為輸入端,其端口依次為I/O74、I/O72、I/O75、I/O76.輸出端Z-n7~Z-n0對應的是LED8~LED1,其端口依次是I/O181、I/O175、I/O171、I/O169、I/O170、I/O173、I/O180、I/O182.設定好之后,再次進行編譯仿真,沒有錯誤即可進行配置,可以實現輸入四位二進制代碼,按照其原意翻譯成相應的輸出信號,體現在LED燈上.仿真波形如圖1所示.

4.2 LCD顯示

LCD的仿真過程:運行Quartus II軟件,建立工程項目,工程命名為lcd1602.建立一個VHDL文件,命名為lcd1602,文件后綴為.vhd,再將程序寫入并保存,然后編譯,確保沒有錯誤后進行仿真.先進行端口說明,輸入端為:start - 啟動顯示、cmd - 命令、dat_i - 等顯示的字符數據、clk - 時鐘、rst - 復位信號(低電平有效).輸出端為:lcd_e - lcd1602使能、lcd_rw - lcd1602讀取有效、lcd_di - lcd1602數據/命令選擇信號、lcd_dat - lcd1602數據、ok .完成對lcd1602的驅動,使lcd1602初始化,并顯示字符.

然后以同樣步驟建立名為lcddemo_ctrl的工程,到編譯仿真.再進行端口說明,輸入端為:ack -接收數據方已確認(上升沿有效)、init_ok-顯示屏初始化完成、clk-時鐘輸入、rst-復位信號輸入.輸出端為:stb-輸出數據通知信號,上升沿有效、dat-輸出數據.還要對列出文本文件的內容進行設定(參考),就可以完成在lcd1602上顯示兩行字符“made by liu qin”.當然也可以顯示其他內容,根據AsciI字符表編輯想要顯示的代碼,便可顯示想要的字符.

4.3 流水燈

流水燈的設計主要由三個模塊和一個頂層文件組成,其模塊劃分及功能說明如表1、表2:

FA280開發板硬件具有8位LED,為低電平驅動方式,即低電平點亮高電平熄滅.

本實驗中實現以提供低電平方式點亮8個LED中的某一個或多個,其點亮模式代表了數據0~9和A~F,兩次點亮的時間間隔為1s,以15s的周期循環重復.流水燈點亮方案如表2.流水燈顯示仿真過程是對三個模塊和一個頂層文件進行編譯仿真,具體操作步驟如上兩個實例.運行Quartus II軟件,分別建立工程項目、VHDL文件,再將程序寫入并保存,然后編譯,確保沒有錯誤后進行仿真.并對各模塊的端口進行說明,實現其具體功能,完成流水燈的顯示.

5 結語

本設計應用QuartusⅡ 9.0軟件,采用VHDL語言,按照開發流程完成3線-8線譯碼器、LCD和流水燈的設計,得到相應的仿真波形并下載到實驗開發板上觀察顯示實驗結果.這個過程讓學生熟悉了EDA技術和實驗開發板的功能,及相關軟件的應用.

參考文獻:

〔1〕廖超平,EDA技術與VHDL實用教程.高等教育出版社,2007.

〔2〕閆石.數字電子技術基礎.高等教育出版社,2006.

〔3〕汪國強.華成英,EDA技術與應用.電子工業出版社,2005.

〔4〕侯伯亨.VHDL硬件描述語言與數字邏輯電路設計.西安電子科技大學出版社,2009.

〔5〕潘松.EDA技術與應用.清華大學出版社,2005.

第10篇

關鍵詞:信道編碼; 線性分組碼; Max+Plus Ⅱ; VHDL

中圖分類號:TP391 文獻標識碼:A

文章編號:1004-373X(2010)09-0116-02

Design of Linear Block Codes Based on VHDL

TANG Bing-hua, SHUI Qi-jun

(Department of Physics and Engineering Technology, Sichuan University of Arts and Science, Dazhou 635000, China)

Abstract: The interference reduces transmission reliability when digital signal is transmissed in signal path. Linear block code is widely used in communication transmission system as a common channel coding. The generating matrix, monitoring matrix and the relationship between the error pattern sets are discussed based on the coding and decoding rules of linear block codes. The Max+Plus Ⅱ software simulation and verification shows that its function comforms to the linear block code encoding and decoding device requirements.

Keywords: channel coding; linear block codes; Max+Plus Ⅱ; VHDL

在通信系統中,由于信道存在大量的噪聲和干擾,使得經信道傳輸后的接收碼與發送碼之間存在差異,出現誤碼。在數字通信系統中常采用差錯控制信道編碼技術,以此來減少傳輸過程的誤碼,提高數字通信系統的傳輸質量[1]。它的基本原理是:發送端的信道編碼器在信息碼元序列中按照一定的關系加入一些冗余碼元(稱為監督碼元),使得原來相關性很小的信息碼元產生某種相關性,從而在接收端利用這種相關性來檢查并糾正信息碼元在傳輸中引起的差錯。冗余度的引入提高了傳輸的可靠性,但降低了傳輸效率。

1 線性分組碼

分組碼是由一組固定長度為n,稱之為碼字的矢量構成的。線性分組編碼時,將每k個信息位分為一組獨立處理,按一定規則給每個信息組增加(n-k)個監督碼元,組成長度為n的二進制碼字,這種編碼方式記為是(n,k)分組碼[2]。信息位和監督位采用的關系式由┮蛔橄咝苑匠趟決定,稱之為線性分組碼。

若線性分組碼的輸入信息位為U=(U0,U1,…,Uk),編碼輸出為C=(C0,C1,…,Cn),則有如下關系:

C=U•G

H•CT=OT

(1)

式中:G為線性分組碼的生成矩陣;H為監督矩陣。當G確定后,編碼的方法就完全確定了,而H給定后,編碼時監督位和信息位的關系也就確定了。因此,在設計分組碼編碼器時,需要確定生成矩陣G;在設計分組碼譯碼器時,需要確定監督矩陣H。

2 線性分組碼編譯碼器設計

2.1 線性分組碼編碼器設計

設G=

0 0 1 0 1 1

1 0 0 1 0 1

0 1 0 1 1 0,由于生成矩陣G是k行n列,所以k=3,n=6,改(n,k)碼為(6,3)碼。根據生成矩陣和式(1)運算后得到相應的編碼。即由:

(C0,C1,C2,C3,C4,C5)=

(U0,U1,U2)• 0 0 1 0 1 1

1 0 0 1 0 1

0 1 0 1 1 0

可得:

C0=U1,C1=U2,C2=U0,

C3=U1+U2,C4=U0+U2,C5=U0+U1

COUT=(C0,C1,C2,C3,C4,C5)為編碼輸出,其中前3個分量為增加的監督碼元,后3個為原輸入信息位。

2.2 線性分組碼譯碼器設計

將生成矩陣G進行初等運算:原矩陣的第2,3,1行分別作為典型矩陣的第1,2,3行,可得典型生成矩陣:

G=1 0 0 1 0 10 1 0 1 1 00 0 1 0 1 1=IkQ

Q=1 0 11 1 01 1 0,P=QT=1 1 00 1 11 0 1

于是,典型監督矩陣H為:

H=[PIr]=1 1 0 1 0 00 1 1 0 1 01 0 1 0 0 1

(2)

監督碼元與信息碼元之間的關系稱為監督方程式(監督關系式),監督矩陣的每行中“1”的位置表示相應碼元之間存在的監督關系,即下述三個監督方程:

Y0Y1Y3=0

Y1Y2Y4=0

Y0Y2Y5=0(3)

發送的碼字C=(C0,C1,…,Cn)。e表示傳輸中的差錯;Y表示接收的碼字。如果碼字在傳輸過程中沒有出現差錯,則有HYT=HeT=0;出現差錯時,則有HYT=H(Ce)T=HeT=ST,S=eHT。其中,S稱為伴隨子,又稱為校正子。由于S只與序列傳輸中的差錯e有關,因此在編碼的能力之內,一定的e序列必然對應一定的S組合。可以在接收機中做好對應表,然后根據序列S準確地判斷差錯位置,再根據出錯位置進行糾正,可得到正確的譯碼輸出。根據式(2)可計算接收矢量Y的伴隨子S=Y•HT。這里:

(S0,S1,S2)=(Y0,Y1,Y2,Y3,Y4,Y5)•

1 0 1

1 1 0

0 1 1

1 0 0

0 1 0

0 0 1

S0=Y0+Y1+Y3,S1=Y1+Y2+Y4,

S2=Y0+Y2+Y5

錯誤圖樣即校正子與錯碼位置的關系,因為r=3,所以有3個校正子,相應的有3個監督關系式。將┦(3)改寫為[3]:

Y0Y1Y3=S0

Y1Y2Y4=S1

Y0Y2Y5=S2

(4)

則可得由伴隨子S決定對應的錯誤圖樣集e,即為典型監督矩陣的轉置HT,如表1所示。

表1 錯誤圖樣表

錯碼位置(e碼)S0S1S2錯碼位置(e碼)S0S1S2

Y5101Y1010

Y4110Y0001

Y3011無錯000

Y2100

3 仿真及分析

圖1、圖2分別為線性仿真分組編碼器、譯碼器電路的仿真波形。圖中各參數含義如下:

clk是系統時鐘信號輸入;

UI是編碼器中三位線性分組碼的輸入;

CO是編碼器中六位編碼的輸出;

Y是解碼器中六位編碼的輸入;

c是解碼器中六位譯碼的輸出。

圖1 線性仿真分組編碼器仿真波形

圖2 線性仿真分組譯碼器仿真波形

在圖1、圖2中,截取了仿真的部分波形進行分析,產生的六位編碼CO、六位譯碼Y完全依據線性分組碼的編譯碼規則,任意兩個許用碼組之和(逐位模2加)仍為一許用碼組,即具有封閉性。

4 結 語

對線性分組碼編、譯碼器的設計基于VHDL(硬件描述語言)[4-10],與傳統設計相比較,采用VHDL語言設計的線性分組碼編、譯碼器無需考慮具體電路的實現,只需要掌握編譯碼原理,根據相應的編譯碼規則轉換成VHDL語言,大大減少了設計人員的工作量,提高了設計的準確性和效率。程序已在Max+Plus Ⅱ10.0工具軟件上進行了編譯、仿真和調試。經過實驗結果的分析,說明本設計是正確的。本文給出的設計思想也適用于其他基于PLD芯片的系統設計。

參考文獻

[1]曹麗娜,樊昌信.通信原理[M].6版.北京:國防工業出版社,2007.

[2]曹雪虹,張宗橙.信息論與編碼[M].北京:北京郵電大學出版社,2003.

[3]黃智偉.PFGA系統設計與實踐[M].北京:電子工業出版社,2007.

[4]曾繁泰,陳美全.VHDL程序設計[M].北京:清華大學出版社,2001.

[5]王鎖萍.電子設計自動化(EDA教程)[M].西安:西安電子科技大學出版社,2000.

[6]宋嘉玉,孫麗霞.EDA實用技術[M].北京:人民郵電出版社,2006.

[7]劉云仙.VHDL在數字電路設計中的應用[J].浙江科技學院學報,2004(9):167-168.

[8]潘松,黃繼業.EDA技術實用教程[M].北京:科學出版社,2002.

第11篇

關鍵詞:項目教學;電子設計自動化;方案

0引言

教學方案是指教師在教學過程中對教學內容、教學方法、教學步驟以及要達到的教學效果等所進行的精心編排和設計,是教師對教材的認識和處理,以及對學生學習方法的指導,是進行課堂教學的實施方案[1]。一個好的教案不僅能指導學生“學會”,而且還引導學生“會學”,從而順利地完成教學任務。因此,教學方案的設計就成為課堂教學的重中之重。在《電子設計自動化》教學中采用了項目教學法,通過具體的項目設計,實施“項目導向”教學模式,學生在老師的引導下,從每一個項目入手,在好奇心的驅動下,對理論知識進行學習,對項目任務進行設計,對實踐操作進行實施,在“做中學”,在“學中做”,對培養學生的綜合實踐能力和創新思維能力具有積極的促進作用[2]。現將本人設計的基于項目教學法的“三人表決器”教學方案介紹如下。

1教學目標

1.1知識目標

熟練掌握VHDL程序的基本結構;掌握IF語句、CASE語句的格式及用法;理解IF語句和CASE語句的區別。

1.2技能目標

①科研創新能力:本項目要在QUARTUSII軟件下用編程的方式設計三人表決器的電路,并且可以采用多種編程方式來實現,深切地讓學生體會到該設計方法的靈活性,開闊學生的視野,培養學生分析問題,解決問題的能力,培養學生的創造與創新理念。②電路設計能力:通過進一步的學習,學生又掌握了利用一種編程語言VHDL來設計電路的能力,提高了學生電路設計能力。③分析問題、解決問題的能力:通過在設計過程中不斷提出問題,讓學生分小組討論并給出結論,讓學生在思考的同時提高了分析問題和解決問題的能力。

1.3情感目標

①樹立專業自信:激發學生的學習興趣,堅定學生從事電子行業的信念,培養學生對電子專業的熱愛。②培養課程興趣:通過創設情景、實物演示,提出三人表決器在各種選舉和組織競賽活動中的應用等問題激發學生對電路設計的好奇心和求知欲;通過自主完成整個電路的制作,體驗成功的喜悅,增強自信心和成就感。③培養良好的學習習慣:針對學生的專業知識特點,采用多元化的教學方法,鼓勵學生積極表達自己的想法,培養學生良好的學習態度和學習習慣。④培養創新精神:通過設計三人表決器,培養學生采用多種方案實現同一種電路的創新精神,體會到條條大路通羅馬。⑤培養團隊合作精神:通過小組合作的方式,大家互相取長補短,共同進步,共同提高,培養了大家的團隊協作精神。

2教學重點難點及解決方法

教學重點包括:IF語句、CASE語句的語句格式及注意事項;IF語句和CASE語句的區別;IF語句和CASE語句的具體應用。教學難點包括:IF語句和CASE語句的具體應用。為了突出重點,突破難點,采取了以下方法:①課前“任務”導學:通過提前給學生布置預習任務讓學生提前預習課本第4章《VHDL的主要描述語句》這部分內容,使學生在課前對VHDL的順序語句的IF語句、CASE語句有所了解。②課中“內容”導教:課上借助圖片、現場演示、軟件仿真等手段進行導教,使授課內容更加形象、直觀,配合課堂練習,加強學生對知識點的掌握。③課后“知識”拓展:推薦學生閱讀參考書以及相關的網絡資源并布置隨堂作業,讓學生開闊視野,加深對所學知識的理解。

3學情分析

3.1知識基礎

本門課程的教學安排在第六學期進行,授課對象是電子專業大三的學生,他們已經學習了《單片機技術》、《專業軟件選講》、《檢測與轉換技術》等專業課,已經具備了一定的電子設計基礎,好奇心強,動手能力較強,合作能力也很好,為本門課的學習打下了基礎。學生之前學習過C語言,對學生理解VHDL語言有一定的幫助,但部分同學理論基礎較差,對單純的理論學習缺乏興趣,所以要將理論和實踐相相結合,幫學生克服理論基礎薄弱問題。學生在前面的課程中對VHDL程序的基本結構已經熟練掌握,對EDA技術的設計流程也已經掌握,并且有了一定的編程基礎,在此基礎上進行VHDL描述語句的學習水到渠成。

3.2認知特點

大多數學生學習態度比較端正,有一定的自學能力和利用互聯網查找資料的能力,同時對電子設計的興趣較高,求知欲比較強烈。本門課程是學生以前沒有接觸過的用軟件編程的方式來描述硬件電路的形式,學生經過前面幾周的學習已經能理解這種語言和以往所學編程語言的不同。

3.3學習風格

電子專業學生動手能力強,課堂氣氛活躍,對電路設計的求知欲很強,但是有部分學生自我約束力較差,注意力不集中,自主學習能力和自我約束能力有待提高。

4教材分析

本單元內容源自潘松主編的《EDA實用教程—VHDL版》(第五版),該教材屬于“十二五”普通高等教育本科國家級規劃教材,適用于電子類相關專業使用。該注重實踐、實用和創新能力的培養,注重教學選材的靈活性和完整性相結合,有助于學生掌握EDA的相關基礎知識達到快速入門的目的。本次課以一個具體的三人表決器的項目為依托,講解VHDL的IF語句、CASE語句等相關知識點。在教學內容上起著承上啟下的作用,也是實現電路設計的語言工具和手段。

5教學過程設計

基于項目教學法的“三人表決器”的教學過程設計如表1所示。

6總結

總之,教師在編制教學流程、構思課的主旋律時,必須符合教育教學規律,使之結構巧妙,引人人勝。特別是要改變過去只考慮教師“如何教”,而忽視學生“怎樣學”的做法[3]。“教”為“學”服務,教師的“教”要激發學生“學”的興趣,精心設疑,發展求異思維,培養學生的自學能力,將理論知識和實踐操作結合起來,讓學生在“做中學”,老師在“做中教”。另外,在教學過程中應該采用多樣化的教學手段,在采用“項目教學法”的同時,穿插使用實物演示法、啟發式教學法、討論式教學法等。將傳統的老師講學生聽的模式改為以學生為主體的教學方法,增強學生對所學理論知識的認識,同時培養學生運用理論知識解決實際問題的能力,促進學生的自主學習能力。

參考文獻:

[1]楊帆.建筑材料課在工學結合過程中引入項目教學法的方案設計探究[J].教學探索,2015(08):102-103.

[2]徐學紅.“項目導向”教學模式在EDA技術課程中的應用[J].中國電力教育,2013(28):108-109.

第12篇

關鍵詞:VHDL; 彩燈控制器; 變換模式; EP1K30QC208

中圖分類號:TN710; TP332.1 文獻標識碼:A

文章編號:1004-373X(2010)14-0180-03

Design of Adjustable Speed Sixteen Groups Illuminations Controller Based on VHDL

ZHANG Xi-feng,QU Bao-peng

(Electronics Engineer Department, Sh

nxi Institute of Technology, Xi'an 710300,China)

Abstract: The FPGA/CPLD is applied in digital system development extensively with the development of large scale integrated circuit. Illuminations which are common decorations have a broad application in daily life. In order to make the illuminations colorful, a switch speed adjustable controller which can control 16 groups of illuminations and has 4 switch patterns was designed with the language of VHDL in the environment of Quartus II. The simulation results indicate that the designed controller realized the cycle of 4 switch patterns and all sorts of speeds adjustable. The validity of whole designed functions is verified with the EP1K30QC208 chip of ACEX1K series.

Keywords: VHDL; illuminations; controller; switch mode; EP1K30QC208

0 引 言

近年來,FPGA/CPLD發展迅速,隨著集成電路制造工藝的不斷進步,高性價比的FPGA/CPLD器件推陳出新[1-3],使FPGA/CPLD成為當今硬件設計的重要途徑,與傳統電路設計方法相比,FPGA/CPLD具有功能強大、開發周期短、投資少,便于追蹤市場變化及時修改產品設計以及開發工具智能化等特點[4]。在諸多FPGA/CPLD的設計語言中,VHDL語言作為一種主流的硬件描述語言,具有很強的電路描述和建模能力,能從多個層次對數字系統進行建模和描述,從而大大簡化了硬件設計任務,提高了設計效率和可靠性,并在語言易讀性和層次化、結構化設計方面,表現出了強大的生命力和應用潛力[5-6]。

Quartus Ⅱ是Altera公司在21世紀初推出的FPGA/CPLD集成開發環境,是Altera公司前一代FPGA/CPLD集成開發環境Max+PlusⅡ的更新換代產品,其界面友好,使用便捷,功能強大,為設計者提供了一種與結構無關的設計環境,使設計者能方便的進行設計輸入、快速處理和器件編程[7-8]。

本文在Quartus Ⅱ開發環境下,用VHDL語言設計了一種可用于控制16路彩燈,具有4種彩燈變換模式,且變換速度可調的彩燈控制器。

1 16路可調速彩燈控制器設計思路

16路可調速彩燈控制器根據功能可分為3個部分,如圖1所示。其中,8 Hz分頻部分用于對頻率為10 MHz的時鐘信號進行分頻,獲得頻率為8 Hz的時鐘信號CLK8。CLK8作為速度控制部分的基準時鐘,通過計數分頻方式又可獲得頻率分別為4 Hz,2 Hz和1 Hz的時鐘信號,然后由調速信號選擇其中之一作為彩燈時鐘信號CLKQ,CLKQ即為彩燈控制部分的基準時鐘,用于決定彩燈變換的速度,由此實現調速信號SPD對彩燈變換速度的控制,使彩燈可調速。

圖1 16路可調速彩燈原理圖

彩燈控制部分通過輸出1個16位二進制數(即彩燈輸出信號Q)來控制16個彩燈,每一位二進制數對應1個彩燈的開關,當該位數字為“1”時燈亮,該位數字為“0”時燈滅。彩燈的變換共設置4種模式:

s0模式:只亮1個燈,從最左端逐個移動到最右端,即輸出信號Q從第15位開始將1個“1”依次移動到第0位;

s1模式:只亮1個燈,從最右端逐個移動到最左端,即輸出信號Q從第0位開始將1個“1”依次移動到第15位;

s2模式:亮2個燈,同時從左右兩端向中間移動,即輸出信號Q從第15位開始將1個“1”依次移動到┑8位,同時從第0位開始將1個“1”依次移動到┑7位;

s3模式:亮2個燈,同時從中間向左右兩端移動,即輸出信號Q從第8位開始將1個“1”依次移動到┑15位,同時從第7位開始將1個“1”依次移動到┑0位。

四種模式依次循環,若復位信號RST輸入為高電平,則循環中斷,輸出信號Q置零,彩燈全滅,RST恢復為低電平后,再次從s0模式開始循環。

2 16路可調速彩燈控制器的實現

本文所設計的16路可調速彩燈控制器,其電路符號如圖2所示,其中clk為10 MHz時鐘信號輸入端,rst為復位控制端,spd為調速信號輸入端,q為彩燈控制信號輸出端。

圖2 16路可調速彩燈控制器的電路符號

本文所設計的16路可調速彩燈控制器的VHDL代碼如下所示:

LIBRARY IEEE;

USE ieee.std_logic_1164.ALL;

USE ieee.std_logic_unsigned.ALL;

ENTITY lights16 IS

PORT(clk: in std_logic;----10MHz時鐘輸入信號

rst: in std_logic;----復位信號

spd: in std_logic_vector(1 downto 0);

q: out std_logic_vector(15 downto 0));

END lights16;

ARCHITECTURE one OF lights16 IS

type states is (s0,s1,s2,s3);----定義4種模式

signal present:states;

signal clk8hz:std_logic;

signal clkq:std_logic;

signal q1:std_logic_vector(15 downto 0);

signal cnt:std_logic_vector(3 downto 0);

BEGIN

process(clk)----8Hz分頻

variable count:integer range 0 to 624999;

begin

if clk′event and clk=′1′ then

if count=624999

then clk8hz

else count:=count+1;

end if;

end if;

end process;

process(clk8Hz)----速度控制

variable count1:std_logic_vector(2 downto 0);

begin

if clk8Hz′event and clk8Hz=′1′

then count1:=count1+1;

end if;

case spd is

when"00"=>clkq

when"01"=>clkq

when"10"=>clkq

when"11"=>clkq

end case;

end process;

----系統復位

process(clkq,rst)

begin

if rst=′1′ then present

elsif clkq′event and clkq=′1′ then

case present is

----s0模式:從左到右逐個點亮LED

when s0=>

if q1="0000000000000000"

then q1

elsif cnt="1111" then

cnt′0′);

q1

present

else q1

cnt

end if;

----s1模式:從右到左逐個點亮LED

when s1=>

if cnt="1111" then

cnt′0′);

q1

present

else q1

cnt

end if;

----s2模式:從兩邊到中間逐個點亮LED

when s2=>

if cnt="1111" then

cnt′0′);

q1

present

else q1(15 downto 8)

q1(7 downto 0)

cnt

end if;

----s3模式:從中間到兩邊逐個點亮LED

when s3=>

if cnt="1111" then

cnt′0′);

q1

else q1(15 downto 8)

q1(7 downto 0)

cnt

end if;

end case;

end if;

end process;

q

END ARCHITECTURE one;

值得注意的是,本文設計的16路可調速彩燈控制器使用了數據循環算法,較以往的case when語句[10],更加簡潔,實現的功能更加強大,其具有如下特點:

(1) 在硬件驗證時,將速度控制端spd的pin腳接到撥碼開關上,從而實現彩燈變換速度快慢的手動控制,在更進一步的設計中,也可以通過對spd信號的內部控制,實現各種變換速度的自動調整。

(2) 該設計采用數據移位的方式實現彩燈的變換,更有利于彩燈變換模式的擴展。該設計雖然只設計了4種變換模式,但可以根據需要輕松的擴展至6~8種模式,甚至更多。

(3) 8 Hz分頻部分的分頻比很大,不適于計算機仿真驗證,在仿真時需要調小分頻比,在硬件驗證時再恢復較大的分頻比。

3 仿真結果分析

本文設計的16路可調速彩燈控制器在Quartus Ⅱ開發環境下進行了仿真驗證,仿真波形如圖3所示。仿真結果分析如下:

(1) clk為時鐘信號,由時鐘信號的上升沿觸發分頻器計數;

(2) rst為復位信號輸入端,當其為高電平時,彩燈控制輸出信號q清零,rst恢復為低電平后彩燈控制輸出信號q從s0模式重新開始循環;

(3) spd為調速信號輸入端,對應于spd的“00”,“01”,“10”,“11”這4個數值,彩燈變換的速度分別為1 Hz,2 Hz,4 Hz,8 Hz;

(4) q為彩燈控制信號輸出端,由圖3可知,該設計成功地實現了4種變換模式的循環和各種變換速度的調節。

圖3 16路可調速彩燈控制器仿真波形

4 結 語

設計的16路可調速彩燈控制器在Quartus Ⅱ開發環境下進行了仿真驗證后,下載到湖北眾友科技實業股份有限公司的ZY11EDA13BE實驗箱中進行了硬件驗證,該實驗箱使用ACEX1K系列EP1K30QC208芯片作為核心芯片,實驗證明設計正確,功能完整,運行穩定。另外,本文所設計的16路可調速彩燈控制器可根據需要增加更多的變換模式,使彩燈更加絢麗多姿。

參考文獻

[1]潘松,黃繼業.EDA技術實用教程[M].北京:科學出版社,2004.

[2]康華光.電子技術基礎(數字部分)[M].北京:高等教育出版社,2004.

[3]馬或,利,王麗英.CPLD/FPGA可編程邏輯器件實用教程[M].北京:機械工業出版社,2006.

[4]侯伯亨,顧新.VHDL硬件描述語言與數字邏輯電路設計[M].西安:西安電子科技大學出版社,2000.

[5]李國麗,朱維勇,欒銘.EDA與數字系統設計[M].北京:機械工業出版社,2005.

[6]盧毅,賴杰.VHDL與數字電路設計[M] .北京:科學出版社,2001.

[7]李志,田永清,朱仲英.VHDL的設計特點與應用研究[J].微型電腦應用,2002(10):5-8.

相關文章
主站蜘蛛池模板: 苏尼特左旗| 通州市| 平安县| 澎湖县| 霸州市| 邵武市| 宜宾县| 顺义区| 图们市| 浪卡子县| 阿拉善左旗| 定兴县| 象州县| 宁海县| 高淳县| 吉林省| 无极县| 阳城县| 大安市| 宁安市| 大名县| 丰都县| 枣阳市| 青州市| 西乌珠穆沁旗| 永新县| 奉化市| 新宾| 施秉县| 漯河市| 依兰县| 区。| 全州县| 开封县| 大石桥市| 阜新市| 惠东县| 庆元县| 乌恰县| 尉氏县| 丰宁|