【正文】
con_flag=tmp1。 VARIABLE tmp2:integer。 END vector_to_int。 END IF。 FOR i IN a?RANGE LOOP q:=q*2。 q: INOUT integer) IS BEGIN 第 4章 VHDL程序設(shè)計(jì)基礎(chǔ) 38 q:=0。 ARCHITECTURE behave OF conversion IS PROCEDURE vector_to_int (a: IN std_logic_vector。 output : INOUT integer)。 ENTITY conversion IS PORT(input :IN std_logicvector(7 DOWNTO 0)。對(duì)同一個(gè)過程的所有調(diào)用來說,過程的行為描述是相同的,只是傳遞給過程的參數(shù)或者過程執(zhí)行后輸出返回給主程序的參數(shù)不同。過程調(diào)用時(shí)主程序先要對(duì)過程進(jìn)行初始化,所謂初始化就是先將初始值傳遞給過程的輸入?yún)?shù)。 過程語句部分是由順序語句組成的,過程的調(diào)用實(shí)際上就是啟動(dòng)了對(duì)過程中的順序語句的執(zhí)行。 第 4章 VHDL程序設(shè)計(jì)基礎(chǔ) 36 過程說明部分主要包括變量說明、常量說明和類型說明,用來對(duì)過程中要用到的變量、常量和類型進(jìn)行說明,并且這些說明只在該過程內(nèi)有效。] BEGIN 過程語句部分 。在 VHDL中子程序有兩種類型:過程和函數(shù)。 for 元件例化標(biāo)號(hào) : 元件名 use entity 庫名 .實(shí)體名 (結(jié)構(gòu)體名 )。而結(jié)構(gòu)體配置則是放在結(jié)構(gòu)體的說明語句部分 ,它是一種配置說明不需要與元件所在的結(jié)構(gòu)體分開的配置類型。 END full_adder_cfg。 END FOR。 END FOR。 END FOR。 END FOR。 CONFIGURATION full_adder_cfg OF full_adder IS 第 4章 VHDL程序設(shè)計(jì)基礎(chǔ) 33 FOR structure FOR sum FOR all:xor2 USE CONFIGURATION 。 END BLOCK carry。 U5:and2 PORT MAP(a,b,tmp3)。 carry:BLOCK BEGIN U3:or2 PORT MAP(tmp2,tmp3,Co)。 U2:xor2 PORT MAP(tmp1,Cin,S)。 與元件配置相同,塊配置也有兩種不同的形式:低級(jí)的配置形式和實(shí)體 結(jié)構(gòu)體對(duì)的配置形式。 第 4章 VHDL程序設(shè)計(jì)基礎(chǔ) 29 塊的配置 要指明元件所在的塊,塊配置在結(jié)構(gòu)體和元件之間分出另一層次。 END FOR。 FOR U5:or2 USE ENTITY (or2_arc)。 FOR U2,U4:and2 USE ENTITY (and2_arc)。 第 4章 VHDL程序設(shè)計(jì)基礎(chǔ) 28 CONFIGURATION full_adder_cfg OF full_adder IS FOR stucture FOR U1,U3:xor2 USE ENTITY (xor2_arc)。 END FOR FOR U5:or2 USE CONFIGURATION 。 CONFIGURATION full_adder_cfg OF full_adder IS FOR structure FOR U1,U3:xor2 USE CONFIGURATION 。 U5:or2 PORT MAP(tmp2,tmp3,Co)。 U3:xor2 PORT MAP(tmp1,Cin,S)。 BEGIN U1:xor2 PORT MAP(a,b,tmp1)。 END COMPONENT。 COMPONENT xor2 PORT(a,b:IN std_logic。 c: OUT std_logic)。 END COMPONENT。 第 4章 VHDL程序設(shè)計(jì)基礎(chǔ) 25 ARCHITECTURE structure OF full_adder IS COMPONENT or2 PORT(a,b:IN std_logic。 Co,S: OUT std_logic)。 低級(jí)的配置 第 4章 VHDL程序設(shè)計(jì)基礎(chǔ) 24 CONFIGURATION 配置名 OF 實(shí)體名 IS FOR 選配結(jié)構(gòu)體名 FOR 元件調(diào)用標(biāo)號(hào)名:元件名 USE CONFIGURATION 庫名 .元件配置名; END FOR; …… FOR 元件調(diào)用標(biāo)號(hào)名:元件名 USE CONFIGURATION 庫名 .元件配置名; END FOR; END FOR END 配置名; 例題:全加器的實(shí)現(xiàn) LIBRARY IEEE; USE 。 注意:只能用來選擇不含有任何塊語句和元件的結(jié)構(gòu)體。 第 4章 VHDL程序設(shè)計(jì)基礎(chǔ) 23 默認(rèn)配置格式 CONFIGURATION 配置名 OF 實(shí)體名 IS FOR 選配構(gòu)造體名 END FOR。 LIBRARY work,std。 元件的配置 配置語句用于描述層與層之間的連接關(guān)系和實(shí)體與結(jié)構(gòu)體之間的連接關(guān)系 ,在實(shí)體與結(jié)構(gòu)體之間的連接關(guān)系配置說明中 ,設(shè)計(jì)者利用配置語句為實(shí)體選擇不同的結(jié)構(gòu)體。 END struct。 U3:and2 PORT MAP(d0,sel,aa)。 BEGIN U1:inv PORT MAP(sel,nsel)。 END COMPONENT。 COMPONENT inv 第 4章 VHDL程序設(shè)計(jì)基礎(chǔ) 21 PORT(a: IN bit。 c: OUT bit)。 END COMPONENT。 ARCHITECURE struct OF mux2 IS COMPONENT and2 PORT(a,b :IN bit。 Q:OUT bit)。這種映射分為位置映射法和名稱映射法兩類。 COMPONENT調(diào)用語句 標(biāo)號(hào)名:元件名 PORT MAP(信號(hào), … ); 標(biāo)號(hào)名加在元件名前面。放入庫中的元件即可用 LIBRARY和 USE子句調(diào)用了。 第 4章 VHDL程序設(shè)計(jì)基礎(chǔ) 18 元件庫 一、構(gòu)造元件 結(jié)構(gòu)體調(diào)用元件時(shí),通過參數(shù)傳遞來指定元件的規(guī)模和參數(shù)的有關(guān)特性,因此元件設(shè)計(jì)要參數(shù)化,要帶有參數(shù)入口。 一、 TEXTIO程序包的語法 程序包提供了讀、寫一行的過程及檢查文件結(jié)束的函數(shù)。在 textio程序包中,定義了 line類型、 text類型、 side類型、操作寬度 width子類型、文件 input、文件 output、readline過程、對(duì)應(yīng)于不同數(shù)據(jù)類型的 read過程、 writeline