《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > VHDL語(yǔ)言中信號(hào)的不同形式設(shè)置
VHDL語(yǔ)言中信號(hào)的不同形式設(shè)置
摘要: VHDL語(yǔ)言中有兩種基本的語(yǔ)句命令:并行同 時(shí)語(yǔ)句命令以及順序語(yǔ)句命令。兩者之間最大的不同點(diǎn)是,并行同時(shí)語(yǔ)句命令就像是電路板的動(dòng)作方 式,不論幾個(gè)命令,是一次且同時(shí)執(zhí)行,產(chǎn)生結(jié)果;順序語(yǔ)句命令類似一般的程序語(yǔ)言,如BASIC等的執(zhí)行方式,是一次一個(gè)命令,且依書寫方式由上而下地執(zhí)行。
關(guān)鍵詞: 開發(fā)工具 VHDL
Abstract:
Key words :
  1概述

  VHDL是一種快速的電路設(shè)計(jì)工具,功能涵蓋 了電路描述、電路合成、電路仿真等三大電路設(shè)計(jì)工作。目前廣泛使用的軟件有Altera公司出品的MAX+PLUSII,Xinlinx公司的Foundation等。

  VHDL語(yǔ)言中有兩種基本的語(yǔ)句命令:并行同 時(shí)語(yǔ)句命令以及順序語(yǔ)句命令。兩者之間最大的不同點(diǎn)是,并行同時(shí)語(yǔ)句命令就像是電路板的動(dòng)作方 式,不論幾個(gè)命令,是一次且同時(shí)執(zhí)行,產(chǎn)生結(jié)果;順序語(yǔ)句命令類似一般的程序語(yǔ)言,如BASIC等的執(zhí)行方式,是一次一個(gè)命令,且依書寫方式由上而下地執(zhí)行。

  并行同時(shí)語(yǔ)句命令主要有以下幾種表達(dá)方式: 直接設(shè)置語(yǔ)句(使用<=運(yùn)算符)、條件式信號(hào)設(shè)置語(yǔ)句(When-Else)與選擇式信號(hào)設(shè)置語(yǔ)句(With-Select-When)等;

  順序語(yǔ)句命令主要有以下幾種表達(dá)方式:Pro cess(過(guò)程)、If-Else(判斷比較)、Wait Until(等待)、Case-Is-When(描述選擇)等。

  熟練而靈活地使用上述兩類命令,可以節(jié)省大 量的工作量,使程序簡(jiǎn)單直觀、可讀性增強(qiáng)而且有利于提高程序的編譯執(zhí)行效率。

  在數(shù)據(jù)通信過(guò)程中,同位器與同位檢查器常用 于數(shù)據(jù)糾錯(cuò)。本文就以一個(gè)簡(jiǎn)單偶同位產(chǎn)生器(Even Parity Bit Generator)真值表功能的實(shí)現(xiàn)方法來(lái)探討上述表達(dá)方式選擇問(wèn)題,以及編程 過(guò)程中的注意事項(xiàng)。

  2編程舉例

  例:試設(shè)計(jì)VHDL程序完成如表1偶同位器的 真值表功能:

  分析:由真值表可以看出,所要實(shí)現(xiàn)的是一個(gè)由三個(gè)數(shù)據(jù)位、一個(gè)同位位組成的偶同位產(chǎn)生器功 能。不難得出各位之間的簡(jiǎn)單邏輯關(guān)系:P=S0S1S2 。但是本文的主要目的在于通過(guò)此例闡述如何靈活運(yùn)用不同的基本表達(dá)式設(shè)置信號(hào),因此 某些可能更加簡(jiǎn)單的方法以及比較高級(jí)一點(diǎn)語(yǔ)句本文不予詳細(xì)討論。

  解:(注:VHDL語(yǔ)言中使用“--”作為注釋符號(hào))

  library ieee; ①

  use ieee.std_logic_1164.all;

  use ieee.std_logic_arith.all;

  use ieee.std_logic_unsigned.

  all;

  ENTITY hf is --假設(shè)建立的芯片電路名稱以及保存后的文件名為“hf”;

  Port(

  s: in std_logic_vector(2 downto 0);

  z: out std_logic  --最后一個(gè)管腳定義命令后面,不可加分號(hào);

  );

  end hf; --應(yīng)該保證電路單元名稱與存盤的文件名一致,否則編譯時(shí) 出錯(cuò);

  ARCHITECTURE a OF hf IS

  Begin --以上是本例題解答過(guò)程中的公共部分,其后分別接各解法語(yǔ)句。

  --******************************

  --解法1:使用“hen -Else”表達(dá)方式②

  z<=‘0’when (s="000") else --此語(yǔ)句只能將s的各個(gè)值分開寫,而不能寫成如下形式:

  0’ when (s="011") else -- z<=‘0’

  when (s="000" or s="011" or s="110" or s="111")

  0’ when (s="110") else -- else ‘1’;

  ‘0’ when (s="111") else

  ‘1’ when (s="001") else

  ‘1’ when (s="001") else

  ‘1’ when (s="001") else

  ‘1’;

  End a;

  --解法2:使用揥ith -Select -When表達(dá)方式:

  With s Select

  z<=‘0’ when "000", --注意:除了最后一句的語(yǔ)句結(jié)束標(biāo)志是分號(hào)外,其余各句均是逗號(hào);

  ‘0’ when "011",

  ‘0’ when "110",

  ‘0’ when "111", -- when后選擇信號(hào)的值也只能分別列出,不可寫成組合條件形式。

  ‘1’ when others;

  End a;

  --解法3:使用“If-Else”表達(dá)方式:

  Process--If-Else語(yǔ)句必須要與process配合使用;

  Begin --Process中此句必不可少,否則編譯時(shí)出錯(cuò);

  if s="000" or s="011" or s="110" or s="111" then --If后若為組合條件可用括號(hào)也可不用;

  z<=‘0’;

  else

  z<=‘1’;

  end if;

  end process;

  End a;

  --解法4:使用“Case-Is-When”表達(dá)方式:

  Process --“Case-Is-When”也只能與“Process”配合使用;

  Begin

  case s is

  when "000"|"011"|"110"|"111" =>

  --此處不能將“|”改成“or”但可以像解法1或解法1或解法2那樣將不同信號(hào)值分開寫;

  when others=> --When句末尾是“=>”而不是逗號(hào)或者分號(hào)。

  z<=‘1’;

  end case;

  end process;

  End a;

  備注:

  (1) VHDL語(yǔ)言對(duì)所有字母的大小寫狀態(tài)不敏感,關(guān)鍵在于語(yǔ)句要正確規(guī)范。

  (2) 在VHDL語(yǔ)言中,所使用的標(biāo)點(diǎn)符號(hào)均是英文標(biāo)點(diǎn)符號(hào)。凡是設(shè)置單個(gè)的信號(hào)值均需使用 單引號(hào),而設(shè)置序列信號(hào)值必須使用雙引號(hào)。

  (3) 請(qǐng)參看相關(guān)資料。

  3討論

  3.1本例能否使用“Wait Until”表達(dá)方式

  很遺憾,類似此例的情況不能使用這個(gè)語(yǔ) 句。起碼筆者經(jīng)過(guò)多次嘗試之后均沒有通過(guò)編譯檢查。但是在使用此語(yǔ)句時(shí)應(yīng)該注意以下事項(xiàng):

  (1) Wait Until 后面緊接的語(yǔ)句中不能出現(xiàn)序列信號(hào)的值,例如不能寫成如下形式:

  Wait Until s="000" 也不能寫成組合條件形式(無(wú)論是否使用括號(hào)):

  Wait Until s="000" or s="011" or s="110" or s="111"

  (2) 使用此表達(dá)方式編寫程序代碼時(shí),不能設(shè)定輸出引腳的初始值(通過(guò)第三方信號(hào)傳遞也不 行,但是在進(jìn)行仿真時(shí)可以設(shè)定初始輸出值),不能寫成如下形式:

  ……

  s: in std_logic;

  ……

  Architecture a of hf is

  Begin

  z<=0; --就算z的初、終值通過(guò)兩個(gè)常量信號(hào)(如c=‘0’,d=‘1 ’)傳遞

  Process --也不行,因?yàn)閦不能規(guī)定兩個(gè)狀態(tài)。否則編譯時(shí)出錯(cuò);

  Begin

  wait until s=‘0’; --此處也不可以寫成序列信號(hào)形式,更不能使用邏輯運(yùn)算符將其

  z<=1; --寫成組合條件形式。Wait Until語(yǔ)句不支持組合條件。

  End process;

  END a;

  3.2更簡(jiǎn)單的實(shí)現(xiàn)方法

  順序語(yǔ)句除了前文所敘的幾種基本表達(dá)方式以 外,還有一種循環(huán)語(yǔ)句:For-Loop;而并行同時(shí)語(yǔ)句也還有方塊語(yǔ)句(Block)、組件定義(Component)與組件映像(Port Map)等多個(gè)模塊化語(yǔ)法。而使用“For-Loop”編寫此類有重復(fù)動(dòng)作需求的代碼無(wú)疑是最簡(jiǎn)單直觀的:

  ……

  Architecture a OF hf IS

  Begin

  Process(s)

  Variable Tmp: Std_Logic;

  Begin

  Tmp:=‘0’;

  For I In 0 to 2 Loop

  Tmp:=Tmp XOR s(I);

  End Loop;

  Z<=s & Tmp;

  End Process;

  End a;

  其他更加簡(jiǎn)單的方法,限于篇幅與本文主 旨,在此就不予深究了。

  4結(jié)束語(yǔ)

  從以上不同解法可以看出,各種基本的表達(dá)

  方式均有各自的特點(diǎn):采用“When -Else”表達(dá)式(解法1)與“When -Else-When”表達(dá)式(解法2)編寫編寫代碼的優(yōu)點(diǎn)是直觀,但是代碼很多,欲實(shí)現(xiàn)復(fù) 雜的功能時(shí)工作量將會(huì)很大;采用“IF-Else”表達(dá)式(解法4)編寫代碼的優(yōu)點(diǎn)是直觀與簡(jiǎn)單并舉,尤其是允許使用由邏輯運(yùn)算符(And、Or等等)寫成的組合條件更是精簡(jiǎn)了不少代碼。

  另外,在編寫VHDL程序的過(guò)程中,不同的 表達(dá)式中,表示語(yǔ)句結(jié)束的符號(hào)是不同的,這一點(diǎn)在 我們學(xué)習(xí)和使用VHDL的過(guò)程中值得特別留意。

  參考文獻(xiàn)

  [1]盧毅、賴杰.VHDL與數(shù)字電路設(shè)計(jì).北京:科學(xué)出版社,2001-04

  [2]李廣軍、孟憲元.可編程ASIC設(shè)計(jì)及應(yīng)用.成都:電子科技大學(xué)出版社.2000-10

  [3]徐志軍等.大規(guī)模可編程邏輯器件及其應(yīng)用.成都:電子科技大學(xué)出版社.2000-11

  [4]何鋒 男,1979年出生,本科,研究方向?yàn)橛布枋稣Z(yǔ)言設(shè)計(jì),嵌入式系統(tǒng)開發(fā)。



 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲乱码国产乱码精品精天堂| 欧美亚日韩国产aⅴ精品中极品| 久久精品国产v日韩v亚洲| 亚洲女同在线| 亚洲人成在线观看一区二区| 久久国产精品网站| 亚洲欧美国产不卡| a4yy欧美一区二区三区| 国产精品网曝门| 欧美性生交xxxxx久久久| 欧美国产综合一区二区| 亚洲成人直播| 亚洲深夜福利在线| 一本色道久久综合亚洲91| 亚洲国产福利在线| 在线不卡视频| 亚洲福利一区| 在线观看视频一区| 狠狠久久综合婷婷不卡| 国产色综合天天综合网| 国产视频观看一区| 国产精品一区二区三区观看| 欧美亚韩一区| 久久婷婷成人综合色| 久久精品论坛| 久久精品一区二区三区四区| 亚欧成人在线| 欧美自拍偷拍午夜视频| 亚洲成在人线av| 午夜欧美不卡精品aaaaa| 亚洲免费一级电影| 欧美亚洲日本网站| 性伦欧美刺激片在线观看| 亚洲影音先锋| 香港成人在线视频| 亚洲国产乱码最新视频| 久久精品国产一区二区三区| 欧美在线观看日本一区| 欧美在线视频在线播放完整版免费观看 | 亚洲精品视频在线观看免费| 亚洲最新视频在线| 亚洲卡通欧美制服中文| 99国产精品久久久| 这里只有精品在线播放| 欧美在线播放视频| 久久精品国产欧美激情| 亚洲国产精品va在线看黑人 | 国产精品久久久久免费a∨大胸| 欧美日韩在线综合| 国产精品一二| 国产午夜亚洲精品不卡| 一区二区在线看| 狠狠色丁香婷婷综合| 亚洲日本中文字幕| 国产精品久久久久久久电影| 国产精品久久久久久久久果冻传媒| 国产精品视频免费一区| 国内精品免费在线观看| 在线日韩精品视频| 日韩视频中文字幕| 亚洲在线观看视频| 亚洲人在线视频| 亚洲视频国产视频| 午夜免费电影一区在线观看| 亚洲欧美资源在线| 免费看亚洲片| 欧美日韩一区二区三区四区五区 | 国产欧美一区二区三区另类精品| 亚洲丶国产丶欧美一区二区三区| 亚洲精品综合精品自拍| 亚洲字幕一区二区| 久久精品一本久久99精品| 久久精品亚洲乱码伦伦中文| 亚洲一区二区三区欧美| 久久高清免费观看| 免费一级欧美在线大片| 欧美激情一区二区在线| 国产在线高清精品| 91久久综合| 亚洲免费在线精品一区| 欧美一区二区三区在线看| 在线视频精品一区| 欧美影院在线| 欧美激情精品久久久久久变态| 国产精品99一区二区| 亚洲福利视频三区| 亚洲午夜在线观看| 最新成人av网站| 午夜视频精品| 久久亚洲春色中文字幕| 久久久综合网| 欧美在线资源| 免费成人性网站| 国产精品久久久久久久久果冻传媒| 国产精品久久久久久久免费软件| 亚洲电影自拍| 久久精品女人天堂| 欧美一区二区三区在| 欧美午夜大胆人体| 亚洲第一在线综合网站| 久久激情五月激情| 久久疯狂做爰流白浆xx| 国产精品久久久久久久久果冻传媒 | 亚洲激情在线激情| 亚洲福利国产| 久久久久久久综合| 国产亚洲精品久久久久婷婷瑜伽| 一区二区三区日韩在线观看| a91a精品视频在线观看| 欧美福利一区二区三区| 樱花yy私人影院亚洲| 欧美一区三区二区在线观看| 午夜精品久久久久久久蜜桃app| 欧美偷拍另类| 在线视频日韩| 亚洲在线网站| 国产精品国产精品国产专区不蜜| 99综合电影在线视频| 亚洲一区二区动漫| 欧美日韩亚洲综合一区| 亚洲三级视频在线观看| 亚洲免费观看高清在线观看| 欧美成人性网| 亚洲国产午夜| 一本色道久久综合亚洲91| 欧美日韩国产高清视频| 日韩一区二区久久| 亚洲视频在线观看一区| 欧美性生交xxxxx久久久| 中国女人久久久| 亚洲欧美日韩一区在线| 国产精品亚洲一区二区三区在线| 亚洲综合色视频| 欧美制服丝袜第一页| 国产一区二区三区黄| 久久国产精品免费一区| 免费精品99久久国产综合精品| 黄色成人在线免费| 亚洲国产一区二区在线| 欧美风情在线观看| 亚洲毛片播放| 午夜欧美大片免费观看| 国产午夜精品视频| 亚洲电影一级黄| 欧美精品成人在线| 一区二区三区高清不卡| 性欧美18~19sex高清播放| 国产欧美一区二区三区久久人妖| 欧美主播一区二区三区| 欧美 日韩 国产精品免费观看| 亚洲精品视频免费| 午夜精品亚洲一区二区三区嫩草| 国产午夜精品一区二区三区欧美| 亚洲黄色影片| 欧美午夜在线| 欧美一站二站| 欧美精品18+| 亚洲性av在线| 久久一区二区三区超碰国产精品| 亚洲国产一区二区三区在线播 | 欧美精品久久久久久久久老牛影院| 夜夜嗨一区二区三区| 欧美影院一区| 91久久精品www人人做人人爽 | 欧美在线日韩精品| 亚洲第一主播视频| 亚洲在线一区二区| 娇妻被交换粗又大又硬视频欧美| 一区二区av| 国产一区二区三区久久精品| 99精品福利视频| 国产伦精品一区二区三区四区免费 | 亚洲激情自拍| 欧美主播一区二区三区美女 久久精品人 | 亚洲在线免费视频| 欧美jizz19性欧美| 亚洲综合不卡| 欧美精品aa| 久久国产福利国产秒拍| 欧美色偷偷大香| 亚洲福利久久| 国产精品人成在线观看免费| 亚洲黄网站黄| 国产欧美精品在线观看| 99精品视频网| 狠狠色狠狠色综合日日91app| 亚洲一区网站| 亚洲国产91色在线| 久久精品成人欧美大片古装| 亚洲免费大片| 蜜桃av一区二区| 午夜精品在线| 国产精品电影观看| 亚洲毛片在线| 黄色成人片子| 久久国产精品亚洲77777| 一区二区三区成人| 欧美激情精品久久久久久蜜臀 | 久久久久综合网| 亚洲一二三区在线|