Sổ tay lập trình VHDL<br />
<br />
ebooks@free4vn.org<br />
<br />
Created by lythanhthuan@free4vn.org<br />
<br />
Giíi thiÖu ng«n ng÷ VHDL<br />
3.1. C¸c cÊu tróc c¬ b¶n cña ng«n ng÷ VHDL. C¸c thµnh phÇn chÝnh x©y dùng trong ng«n ng÷ VHDL ®îc chia ra thµnh n¨m nhãm c¬ b¶n nh sau: - Entity - Architecture - Package - Configuration. - Library. Entity: Trong mét hÖ thèng sè, th«ng thêng ®îc thiÕt kÕ theo mét sù xÕp chång c¸c modul, mµ mçi Modul nµy t¬ng øng víi mét thùc thÓ thiÕt kÕ ( §îc gäi lµ Entity ) trong VHDL. Mçi mét Entity bao gåm hai phÇn : - Khai b¸o thùc thÓ ( Entity). - Th©n kiÕn tróc ( Architecture Bodies ) Mét khai b¸o Entity ®îc dïng ®Ó m« t¶ giao tiÕp bªn ngoµi cña mét phÇn tö (component), nã bao gåm c¸c khai b¸o c¸c cæng ®Çu vµo, c¸c cæng ®Çu ra cña phÇn tö ®ã. PhÇn th©n cña kiÕn tróc ®îc dïng ®Ó m« t¶ sù thùc hiÖn bªn trong cña thùc thÓ ®ã. Packages: C¸c ®ãng gãi chØ ra th«ng tin dïng chung, mµ c¸c th«ng tin nµy ®îc sö dông bëi mét vµi Entity nµo ®ã. Configuration: §Þnh cÊu h×nh, nã cho phÐp g¾n kÕt c¸c thÓ hiÖn cña phÇn tö cÇn dïng nµo ®ã cña mét thiÕt kÕ nµo ®ã cã d¹ng mét cÊu tróc vµ ®a c¸c thÓ hiÖn nµy vµo trong cÆp Entity vµ Architecture. Nã cho phÐp ngêi thiÕt kÕ cã thÓ thö nghiÖm ®Ó thay ®æi c¸c sù thùc thi kh¸c nhau trong mét thiÕt kÕ. Mçi mét thiÕt kÕ d¹ng VHDL bao gåm mét vµi ®¬n vÞ th viÖn, mµ mét trong c¸c th viÖn nµy ®îc dÞch s½n vµ cÊt trong mét th viÖn thiÕt kÕ.<br />
<br />
3.1.1 Khai b¸o Entity:<br />
Nh trªn ®· ®Ò cËp, phÇn khai b¸o Entity chØ ®a ra mét c¸i nh×n phÝa bªn ngoµi cu¶ mét phÇn tö mµ kh«ng cung cÊp th«ng tin vÒ sù thùc hiÖn cña phÇn tö ®ã nh thÕ nµo. Có ph¸p khai b¸o cña mét Entity nh sau: Entity entity_name is [generic (generic_declaration);] [port (port_declaration);] {entity_declarative_item {constants, types, signals};} end [entity_name]; [] : DÊu ngoÆc vu«ng chØ ra c¸c tham sè cã thÓ lùa chän. | : DÊu g¹ch ®øng hiÓn thÞ mét sù lùa chän trong sè c¸c lùa chän kh¸c. {} : Khai b¸o mét hoÆc nhiÒu c¸c ®èi tîng, mµ c¸c ®èi tîng nµy cã thÓ ®îc ®Þnh nghÜa bëi ngêi dïng. a. Khai b¸o Generic dïng ®Ó khai b¸o c¸c h»ng mµ chóng cã thÓ ®îc dïng ®Ó ®iÒu khiÓn cÊu tróc vµ sù ho¹t ®éng cña Entity. Có ph¸p cña khai b¸o nµy nh sau: generic ( constant_name : type [:=init_value] {;constant_name: type[:=init_value]}); ë ®©y tªn h»ng constant_name chØ ra tªn cña mét h»ng d¹ng generic (h»ng dïng chung). KiÓu (Type) ®îc dïng ®Ó chØ ra kiÓu d÷ liÖu cña h»ng. init_value : chØ ra gi¸ trÞ khëi t¹o cho h»ng. b. Khai b¸o cæng ( Port ): §îc dïng ®Ó khai b¸o c¸c cæng vµo, ra cña Entity. Có ph¸p cña khai b¸o nµy nh sau: Port ( port_name : [mode] type [:= init_value] {; port_name:[mode] type [:=init_value]}); port_name ®îc dïng ®Ó chØ ra tªn cña mét cæng, mode chØ ra híng<br />
<br />
vµo ra cña tÝn hiÖu t¹i cæng ®ã. Type chØ ra kiÓu d÷ liÖu cña mét cæng vµ init_value chØ ra gi¸ trÞ khëi t¹o cho cæng ®ã. Chó ý ! Víi VHDL kh«ng ph©n biÖt ch÷ hoa vµ ch÷ thêng, ch¼ng h¹n nh : xyz = xYz = XYZ. * Cã bèn mode ®îc sö dông trong khai b¸o cæng : - in : chØ cã thÓ ®îc ®äc, nã chØ ®îc dïng cho c¸c tÝn hiÖu ®Çu vµo ( chØ ®îc phÐp n»m bªn ph¶i phÐp g¸n ) - out : ChØ ®îc dïng ®Ó g¸n gi¸ trÞ, nã chØ ®îc dïng cho c¸c cæng ®Çu ra ( Nã chØ ®îc n»m bªn tr¸i cña phÐp g¸n ). - inout : Cã thÓ ®îc dïng ®Ó ®äc vµ g¸n gi¸ trÞ. Nã cã thÓ cã nhiÒu h¬n mét híng ®iÒu khiÓn ( Cã thÓ n»m ë bªn tr¸i hoÆc bªn ph¶i phÐp g¸n ). - Buffer : Cã thÓ ®îc dïng ®Ó ®äc vµ g¸n gi¸ trÞ. ( Cã thÓ n»m ë bªn tr¸i hoÆc bªn ph¶i phÐp g¸n ). inout lµ mét cæng hai híng, cßn Buffer lµ mét cæng kh«ng cã híng. c. entity_declarative_item : §îc dïng ®Ó khai b¸o c¸c h»ng, kiÓu d÷ liÖu, hoÆc tÝn hiÖu mµ nã cã thÓ ®îc sö dông trong khi thùc hiÖn cña mét Entity. d. VÝ dô : * VÝ dô vÒ khai b¸o c¸c cæng vµo ra: entity xxx is port ( A : in integer ; B : in integer ; C : out integer ; D : inout integer ; E : buffer integer) ; end xxx; architecture bhv of xxx is<br />
<br />
begin process (A,B) begin C