亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        數(shù)字電路學(xué)習(xí)中引入硬件描述語言

        2014-04-29 06:41:36張定祥
        電子世界 2014年21期

        【摘要】隨著EDA技術(shù)的發(fā)展,基于硬件描述語言的數(shù)字系統(tǒng)設(shè)計(jì)正越來越流行。本文以數(shù)字電路中常見的全加器為基礎(chǔ),介紹如何將硬件描述語言引入到數(shù)字電路的學(xué)習(xí)中,為未來學(xué)習(xí)可編程器件打下良好的基礎(chǔ)。

        【關(guān)鍵詞】全加器 ;Verilog HDL;多位設(shè)計(jì)

        引言

        隨著信息時(shí)代的來臨,“數(shù)字”二字正越來越多的出現(xiàn)在各個(gè)領(lǐng)域,數(shù)字電視、數(shù)字通信、數(shù)字電影、數(shù)字控制……數(shù)字化已成為當(dāng)今信息社會(huì)的技術(shù)基礎(chǔ),電子技術(shù)發(fā)展的潮流。

        數(shù)字電路已從早期的分立元件發(fā)展到集成電路,以及具有特定功能的專用集成電路,其設(shè)計(jì)的復(fù)雜度、集成度越來越大,而傳統(tǒng)的設(shè)計(jì)方式已無能為力。為解決這一問題,基于硬件描述語言(HDL,Hardware Description Lan-guage)的全新設(shè)計(jì)方法應(yīng)運(yùn)而生。硬件描述語言是一種用形式化方法描述數(shù)字電路和系統(tǒng)的語言,形式上和普通計(jì)算機(jī)編程語言很相似。利用這種語言,數(shù)字電路系統(tǒng)的設(shè)計(jì)可以從上層到下層(從抽象到具體)逐層描述自己的設(shè)計(jì)思想,用一系列分層次的模塊來表示極其復(fù)雜的數(shù)字系統(tǒng)。

        傳統(tǒng)的數(shù)字電路設(shè)計(jì)方法其設(shè)計(jì)步驟分為:設(shè)計(jì)原始狀態(tài)表、狀態(tài)化簡、狀態(tài)編碼、根據(jù)狀態(tài)轉(zhuǎn)換表建立輸入和輸出方程,畫出邏輯電路并連接。這種方法需要一定的邏輯推導(dǎo)與化簡,學(xué)習(xí)起來枯燥乏味,極易挫傷學(xué)習(xí)興趣。但是如果在學(xué)習(xí)過程中將硬件描述語言加入其中,自行編寫程序,從仿真波形中觀察信號(hào)的邏輯變化,將被動(dòng)學(xué)習(xí)變?yōu)橹鲃?dòng)學(xué)習(xí),將會(huì)更加容易理解和掌握數(shù)字邏輯電路。當(dāng)今最為流行的硬件描述語言以VHDL和Verilog HDL應(yīng)用最為廣泛。Verilog HDL以其易學(xué)自由的特點(diǎn)被美國80%以上的電子工程師使用,而國內(nèi)大多數(shù)公司和研究單位也在使用Verilog HDL語言。

        Verilog HDL語言簡單易學(xué),比較適合底層邏輯電路的描述,只要有C語言編程基礎(chǔ),即可在短時(shí)間掌握。而C語言是大多數(shù)理工類學(xué)生必修的編程語言之一。這里以Verilog HDL語言為基礎(chǔ),介紹如何在數(shù)字電路中引入硬件描述語言學(xué)習(xí)全加器。

        一、傳統(tǒng)方法設(shè)計(jì)全加器

        全加器是用門電路實(shí)現(xiàn)兩個(gè)二進(jìn)制數(shù)相加并求出和的組合電路,稱為一位全加器。一位全加器可以處理低位進(jìn)位,并輸出本位加法進(jìn)位。多個(gè)一位全加器進(jìn)行級(jí)聯(lián)可以得到多位全加器。它與半加器的區(qū)別在于需要考慮來自低位的進(jìn)位,因此其輸入端除了加數(shù)和被加數(shù)以外,還應(yīng)有一個(gè)進(jìn)位輸入端。根據(jù)二進(jìn)制加法運(yùn)算規(guī)則,用A和B代表加數(shù),CI代表來自低位的進(jìn)位輸入,S代表相加的和,CO代表向高位的進(jìn)位,可列出一位全加器的真值表,如表1所示。

        表1 全加器的真值表

        輸入 輸出

        CI A B S CO

        0 0 0 0 0

        0 0 1 1 0

        0 1 0 1 0

        0 1 1 0 1

        1 0 0 1 0

        1 0 1 0 1

        1 1 0 0 1

        1 1 1 1 1

        根據(jù)真值表寫出輸出端S和CO的邏輯表達(dá)式:

        對(duì)邏輯表達(dá)式進(jìn)行化簡,可得如下表達(dá)式:

        根據(jù)化簡后的表達(dá)式畫出全加器的結(jié)構(gòu)圖,如圖1所示。

        圖1 全加器的邏輯電路圖

        雖然依照傳統(tǒng)的設(shè)計(jì)模式繪出了全加器的邏輯電路圖,但是無法展現(xiàn)它是否符合真值表,無法檢測設(shè)計(jì)的正確與否。引入硬件描述語言Verilog HDL,利用仿真驗(yàn)證,可以有效地直觀感受設(shè)計(jì)效果。

        二、基于Verilog HDL的全加器設(shè)計(jì)

        Verilog HDL語言以模塊集合的形式來描述數(shù)字電路系統(tǒng),其基本設(shè)計(jì)單元是模塊(module),整個(gè)程序包括在關(guān)鍵字module、endmodule之內(nèi),其模塊類似C語言中的函數(shù),提供輸入、輸出端口,通過實(shí)例化來調(diào)用其他模塊,以及模塊間相互連接來實(shí)現(xiàn)設(shè)計(jì)功能。在硬件描述語言的建模中,主要有結(jié)構(gòu)化描述方式、數(shù)據(jù)流描述方式和行為描述方式,其中數(shù)據(jù)流描述方式與邏輯表達(dá)式很相識(shí)。這里以化簡后的邏輯表達(dá)式對(duì)電路進(jìn)行描述。

        module full_adder1(a,b,ci,s,co);

        //模塊定義行:module 模塊名(端口名表項(xiàng))

        input a,b;//端口類型說明:說明端口的輸入或輸出特性

        input ci;//來自低位的進(jìn)位輸入端

        output s;//加數(shù)之和的輸出

        output co;//向高位的進(jìn)位輸出端

        assign ?s=a^b^ci;//功能描述:對(duì)模塊的功能或結(jié)構(gòu)進(jìn)行具體描述

        assign ?co=(a&B)|(ci&(a^b)); //向高位的進(jìn)位端描述

        endmodule//結(jié)束行:標(biāo)志模塊結(jié)束

        圖2 一位全加器模塊的仿真結(jié)果

        在模塊描述完成之后,需要通過測試文件對(duì)模塊進(jìn)行仿真驗(yàn)證,以檢查設(shè)計(jì)是否達(dá)到要求。想要對(duì)模塊進(jìn)行仿真測試首先要規(guī)定時(shí)間單位,而且最好在測試文件中統(tǒng)一規(guī)定時(shí)間單位,比如,‘timescale 1ns/1ps表示仿真的單位時(shí)間為1ns,精度為1ps。測試模塊可以看做一個(gè)模塊或者設(shè)備,和你已經(jīng)編寫的模塊進(jìn)行通信。通過測試模塊向待測模塊輸出信號(hào)作為激勵(lì),同時(shí)接收從待測模塊輸出的信號(hào)來查看結(jié)果。一般在測試模塊中將測試模塊的輸入信號(hào)(input)定義為reg型,輸出信號(hào)(output)定義為wire型。處理完接口和聲明之后,需要自己設(shè)置一些激勵(lì)信號(hào),激勵(lì)信號(hào)的內(nèi)容就是能輸入到待測模塊中的波形。對(duì)上述模塊編寫測試程序,查看仿真結(jié)果,如圖2所示。從圖中可知,其仿真結(jié)果與真值表完全一致,說明全加器的設(shè)計(jì)正確,達(dá)到設(shè)計(jì)要求。

        通過真值表推導(dǎo)出邏輯表達(dá)式,再用數(shù)據(jù)流描述方式建模的方法是否可以再進(jìn)一步改進(jìn),以符合我們傳統(tǒng)的數(shù)學(xué)表達(dá)方式呢?答案是肯定的。采用行為描述方式建模,將加數(shù)、被加數(shù)和低位的進(jìn)位以加法的形式表示,而和與高位的進(jìn)位用拼接運(yùn)算符({ })來表示。將上述程序的功能描述語句修改如下:

        assign {s,co}=a+b+ci; //功能描述,帶進(jìn)位的加法運(yùn)算

        再進(jìn)行一次驗(yàn)證仿真,結(jié)果一模一樣。說明這種描述方式是正確的,而且更接近于數(shù)學(xué)表達(dá),更容易掌握。

        圖4 四位全加器數(shù)學(xué)表示圖

        三、全加器的改進(jìn)與多位設(shè)計(jì)

        一位的全加器解決了,那么多位的全加器怎么辦呢?也很簡單。只需要增加加數(shù)與被加數(shù)的位寬即可。這里以四位全加器為例,將源程序進(jìn)行修改。

        module full_adder2(a,b,ci,s,co);

        input [3: 0]a,b;//四位的加數(shù)與被加數(shù),[3:0]代表位寬為4

        input ci;

        output [3:0]s;//和也是4位

        output co;

        assign {s,co}=a+b+ci;

        //行為描述方式,即電路功能描述

        endmodule

        編寫測試模塊程序,查看仿真結(jié)果,如圖3、圖4所示。從圖中很明顯的看到,無論從波形圖還是數(shù)學(xué)結(jié)構(gòu)上都可論證全加器的設(shè)計(jì)正確,符合數(shù)學(xué)學(xué)習(xí)的規(guī)律,可將其作為一個(gè)模塊電路運(yùn)用具體電路中,作為其他設(shè)計(jì)的一個(gè)功能電路。

        四、結(jié)束語

        從上述的全加器的學(xué)習(xí)分析中,可以發(fā)現(xiàn)在數(shù)字電路學(xué)習(xí)中引入硬件描述語言可以讓數(shù)字電路的學(xué)習(xí)更加直觀,更能了解電路的功能作用,更易掌握所學(xué)知識(shí)。此外,以Verilog HDL語言為學(xué)習(xí)EDA技術(shù)的切入點(diǎn),有利于學(xué)習(xí)電子電路自動(dòng)化設(shè)計(jì)的思想,有助于掌握EDA技術(shù)這門代表電子設(shè)計(jì)技術(shù)最新發(fā)展的方向,為將來學(xué)習(xí)FPGA可編程器件打下良好的基礎(chǔ)。

        參考文獻(xiàn)

        [1]閻石.數(shù)字電子技術(shù)基礎(chǔ)(第四版)[M].高等教育出版社,1998(11).

        [2]董海青.可編程邏輯器件基礎(chǔ)[M].清華大學(xué)出版社,2012(8).

        作者簡介:張定祥(1978—),男,貴州黃平人,副教授,現(xiàn)供職于貴州電子信息職業(yè)技術(shù)學(xué)院,研究方向:EDA技術(shù),單片機(jī)技術(shù)。

        麻豆AV免费网站| 亚洲乱码av中文一区二区第八页 | 少妇爽到高潮免费视频| 东北熟妇露脸25分钟| 亚洲深深色噜噜狠狠网站| 波多野42部无码喷潮| 亚洲自偷自拍另类图片小说| 中文字幕日韩人妻在线| 日本一区中文字幕在线播放| 凹凸世界视频a一二三| 美女扒开大腿让男人桶| 人妻 日韩 欧美 综合 制服| 中文字幕人妻熟女人妻洋洋| 国产又黄又猛又粗又爽的a片动漫| 亚洲熟妇无码av不卡在线播放| 波多吉野一区二区三区av| 精品粉嫩国产一区二区三区| 久草视频这里只有精品| 亚洲av鲁丝一区二区三区黄| 亚洲日韩精品欧美一区二区 | 亚洲色在线视频| 永久免费中文字幕av| 日韩亚洲在线观看视频| 国产高清人肉av在线一区二区| 精品一区二区三区四区国产| 亚洲综合精品伊人久久| 国产精品偷伦免费观看的| 吃下面吃胸在线看无码| 97久久久一区二区少妇| 久久国产精品免费久久久| 亚洲成熟女人毛毛耸耸多| 久久精品人人爽人人爽| 国产在线视频h| 成年网站在线91九色| 国产又粗又黄又爽的大片| 成人爽a毛片一区二区免费| 40分钟永久免费又黄又粗| 国产成人大片在线播放| av免费网址在线观看| 一本一道久久a久久精品综合| 国产精品久久久久影视不卡|