㭞䓷㻖㵔ゐ⧪⿐㪉ェ䈌䓼⼰�
㋯⧭ 3URMHFW 㪉ェ⡉�
�
Ȱ်ᄔᏳȱቶყݨ )3*$ ༏ᄆ�
�
�
�
�
᮴ 59 䚅 2005011191
᮴ 59 ⥟ṙᵫ 2005011203
᮴ 59 ᴢ䴦 2005011212
ྡྷc�ᅲ偠Ⳃⱘ�
1. дᴀᄺᳳ䇒⍝ঞⱘݙᆍ
2. ⧚㾷ㅔऩ␌៣ⱘᅲ⦄䖛
3. ഫ࣪ⱘ䆒䅵ᮍ⊩
4. ݏಶ䯳ড়㊒⼲
֝c�䆒䅵Ⳃᷛ
Փ⫼ FPGAᅲ偠ᵓϢ䬂Ⲭǃᰒ⼎఼ㄝ䆒ᅲ⦄ϔϾᐌ㾕ⱘĀㆅᄤā␌៣DŽ
␌៣ᓔྟᯊˈӮߎ⦄ϔࡃ 8h8Ḑ⚍ⱘഄˈϞ䴶᳝ϔϾᇣҎᔶ⢊ҷ㸼ᨀ䖤
Ꮉˈ᳝㢹ᑆϾㆅᄤৠㄝ᭄䞣ⱘⳂⱘ⚍DŽᨀ䖤Ꮉৃҹⴔㆅᄤ䍄ˈԚা㛑Ңৢ
ࠡˈৠᯊ᳔ϔϾDŽᔧᡞܼ䚼ⱘㆅᄤࠄⳂⱘ⚍Ϟᯊˈ␌៣㦋㚰DŽ
సc�䘏䕥ᢑ䈵
Ўњᅲ⦄䖭Ͼ␌៣ⱘࡳ㛑ˈ䳔㽕ᇍ݊䖯㸠ϔѯߚᵤˈҹ⹂ᅮ䳔㽕Փ⫼ⱘ
᭄㒧ᵘঞ䘏䕥ࠊˈҢ㗠⹂ᅮϢПⳌਏড়ⱘ⹀ӊ㒧ᵘDŽ
佪ܜˈ䳔㽕Ў䖭Ͼ␌៣ᓎゟϔϾĀഄāˈ ⹂ᅮㆅᄤǃⳂᷛǃҹঞᨀ䖤
Ꮉⱘԡ㕂ˈ䖭Ͼഄᅲ䰙ϞህᰃϔϾĀⶽ䰉āˈ Ўњᅲ⦄ⱘᮍ֓ˈ៥ӀՓ⫼
њᅮᇣ˄8h8˅ⱘഄˈѢᰃህ䳔㽕ϔϾৠḋᇣⱘⶽ䰉ᴹᄬټĀഄ
āⱘֵᙃDŽ㒣䖛ߚᵤˈ៥Ӏথ⦄ĀഄāϞ↣ϾḐᄤⱘ⢊ᗕ᳔া᳝ 8
⾡ৃ㛑 ѢˈᰃЎⶽ䰉ⱘ↣Ͼܗ㋴ߚ䜡 1byteህ㓄㓄᳝ԭњ 䖭ˈḋᭈᐙഄা
䳔㽕 64byteⱘᄬټぎ䯈DŽ㗠ⶽ䰉Ёܗ㋴ⱘᬍবᰃ㽕᳡Ңϔᅮⱘ⢊ᗕ䕀⿏㾘
ᕟⱘˈ↨བˈϔϾḐ⚍ᴀᴹᰃぎഄˈ✊㗠ᔧᨀ䖤Ꮉ䍄ࠄϞ䴶ৢህ㽕䕀ᤶ៤
ᇣҎˈ㗠ݡ䍄ϔℹৢˈজ䞡ᮄ៤Ўぎഄ˗Ͼ⢊ᗕП䯈ⱘ䕀⿏݇㋏ᑊϡ
ᴖˈᬙ䖭䞠ϡݡ䌬䗄DŽ
݊ˈ䳔㽕ϸϾᆘᄬ఼䆄ᔩᨀ䖤ᎹⱘᔧࠡതᷛDŽЎᨀ䖤ᎹᰃᭈϾ␌៣
ⱘḌᖗˈഄϞ↣ϾḐ⚍ⱘᬍব䛑ᰃ⬅ᨀ䖤Ꮉⱘ㸠䍄ᓩ䍋ⱘˈᬙ㗠䳔㽕䆄
ᔩ݊ԡ㕂DŽ
᳔ৢˈ៥Ӏ㗗㰥ϔϟᭈϾഄབԩ㹿ᰒ⼎ߎᴹDŽᅲ䰙Ϟ䖭Ͼ䯂乬䴲ᐌㅔ
ऩˈা㽕ᰒ⼎ഫᇚᄬټഄֵᙃⱘⶽ䰉Ёⱘ᭄䇏ߎˈᇍⶽ䰉Ёⱘܗ㋴
خϔ䆥ⷕˈᇚϡৠⱘݙᆍߚ䜡ҹϡৠⱘ买㡆ᔶ⢊ˈ䕀ᤶ៤Ⳍᑨⱘ VGA
ֵোˈᑊᰒ⼎఼ⱘⳌᑨԡ㕂ᰒ⼎ߎᴹህৃҹњDŽ
㒣䖛ҹϞⱘߚᵤˈᭈϾ␌៣ⱘ䘏䕥㒧ᵘᏆ㒣ᴀϞ⏙᱄њˈϟ䴶៥Ӏᇚ
ḍ䖭Ͼᴹ䖯㸠㋏㒳ⱘ䆒䅵DŽ
ങc�㋏㒳䆒䅵
1) IPḌ˄PicoBlaze໘⧚఼˅
៥Ӏ䗝⫼њ PicoBlaze ໘⧚఼ᴹᅠ៤៥Ӏ㋏㒳Ёⱘ䘏䕥ࠊDŽᅲ䰙Ϟབ
ᵰϡՓ⫼ IPḌ㗠ⳈՓ⫼⹀ӊᦣ䗄䇁㿔ᅲ⦄䘏䕥ࠊгᰃৃ㸠ⱘˈԚᰃ⬅
Ѣ IPḌⱘՓ⫼㛑ՓᭈϾ㋏㒳ࡴ㾘ᭈˈᑊϨ㛑Փ⫼∛㓪䇁㿔ᅠ៤䘏䕥
ࠊˈ߽֓њ䇗䆩ⱘ䖛DŽℸˈIP Ḍгᰃ䖭䮼䇒ᬭ㒭៥ӀⱘϔϾ
䞡㽕ⱘὖᗉϢᮍ⊩ ᠔ˈҹ៥Ӏއᅮᇱ䆩ϔϟՓ⫼ IPḌ䖯㸠 FPGAᓔথⱘ㒣
ग़DŽ
PicoBalze໘⧚఼᳝ҹϟ䌘⑤⡍⚍˖
16 Ͼ 8-bit 䗮⫼᭄ᆘᄬ఼˖s0~sF˗
1024 x 18 bit ᣛҸᄬټぎ䯈ˈFPGA 䜡㕂ᯊᑣࡴ䕑˗
8-bit ALU˖ᴀㅫ᭄䖤ㅫǃ䘏䕥䖤ㅫǃ↨䕗ǃ⿏ԡㄝ˗
64 byte ᭄ᄬټ఼
256 Ͼ䕧ܹ/䕧ߎッষ˗
∛㓪䇁㿔㓪˗
៥Ӏৃҹⳟߎ 6ˈ4byte᭄ᄬټ఼ℷདৃҹ⫼ᴹᄬټϔࡃഄ 㗠ˈ䘏䕥ǃ
⿏ԡㄝ䖤ㅫ䎇ҹᇍ␌៣䖯㸠䘏䕥ࠊDŽ㗠䕧ߎ䕧ܹッষ߭ৃҹ⫼ᴹϢ݊ᅗ
ഫ䖯㸠䗮ֵDŽ
ˈ䖭ℒ IP Ḍⱘ䌘⑤ऴ⫼⥛гᰃⳌᔧᇣⱘˈѢᰃᅠ៤᠔䳔ࡳ㛑ⱘ
ৠᯊϡӮᏺᴹϡᖙ㽕ⱘ⌾䌍DŽѢᰃ៥Ӏ᳔㒜⹂ᅮՓ⫼ PicoBlazeᅠ៤៥Ӏⱘ
䆒䅵DŽ
2) ᭈԧ㒧ᵘ
Ϟᰃ៥Ӏⱘ㋏㒳㒧ᵘDŽᔧ㋏㒳ਃࡼᯊˈҢ ROMЁ䇏পഄֵᙃ˄ḍ
ᅲ偠ᵓϞᓔ݇⢊ᗕ 㟇˅ PicoBlaze⠛ݙᄬټ఼Ё ᑊˈᇚഄֵᙃݭܹᰒᄬDŽ
䱣ৢˈPicoBlaze䖯ܹぎᕾ⦃ЁㄝᕙЁᮁDŽ
ᔧ⥽ᆊ䗮䖛䬂Ⲭᣝ䬂ᇍ␌៣䖯㸠ࠊᯊ 䬂ˈⲬѻ⫳ⱘᠿᦣⷕ㒣䖛䆥ⷕ
ഫᅠ៤䆥ⷕৢ ѻˈ⫳ϔϾЁᮁֵো䗮ⶹ PicoBlaze໘⧚఼ 䱣ˈৢ໘⧚఼䗮䖛
䕧ܹッষᇚ䆥ⷕ㒧ᵰ䇏ܹˈᑊḍᣝ䬂ⱘᚙމׂᬍഄⱘ⢊ᗕˈᑊࠋᮄᰒ
ᄬЁⱘݙᆍDŽ
ҹϞ䖛䖯㸠ⱘৠᯊˈVGA ഫϡذഄҢᰒᄬЁ䇏পݙᆍᑊᇚ݊
䆥ⷕৢᰒ⼎ᰒ⼎఼ϞˈҢ㗠ᅠ៤␌៣ⱘ䕧ߎࡳ㛑DŽ
ϟ䴶ᇚߚഫҟ㒡䚼ߚⱘ䆒䅵DŽ
๔c�ഫ䆒䅵
1) IPḌϞⱘ∛㓪䇁㿔䆒䅵
␌៣ᓔྟᯊˈҢッষ䇏ܹഄ(8x8)ֵᙃˈҹ߱ྟ࣪Ḍݙ 8X8 ݙᄬˈᇚഄ
⢊ᗕᄬܹݙᄬЁ ᑊˈৠᯊᇚഄֵᙃ䕧ߎࠄᰒᄬ ᑊˈᇍᷛᖫᆘᄬ఼߱䌟ؐˈ
݊Ёࣙᣀ␌៣ЁᇣҎⱘതᷛˈᇮᅠ៤ⱘㆅᄤϾ᭄ㄝˈᅠ៤␌៣߱ྟ࣪DŽ
ϟᴹᠧᓔЁᮁˈ䖯ܹᕾ⦃ᣖ䍋ˈޚফ䬂Ⲭ䕧ܹDŽᔧᬊࠄϔϾ䕧ܹ
ᯊˈ佪ܜᇍᔧࠡ䕧ܹ䖯㸠ԧ߸ᮁᑊ䞛পⳌᑨ᪡DŽㅫ⊩ⱘ⌕བϟ˖
1) 㢹䕧ܹЎᮍ䬂ˈ߸ᮁᇣҎ᠔㽕⿏ࡼࠄⱘϟϔϾതᷛⱘ⢊ᗕ�
a) থ⦄ᰃぎഄⳂⱘഄˈ߭ᇣҎ⿏ࡼࠄϟϔϾതᷛˈᑊݭܹ locationˈ䆄ᔩᔧࠡതᷛ
ࠄ lastlocaᆘᄬ఼ˈᑊᡞᔧࠡതᷛ䖬ॳ៤ぎഄⳂⱘഄDŽ䞡ᮄಲࠄㄝᕙЁᮁ⢊ᗕ�
b) থ⦄ᰃぎഄϞⱘㆅᄤˈ߭㒻㓁߸ᮁㆅᄤⳌৠᮍⱘϟϔϾതᷛ�
i. 㢹Ўぎഄ 䖯ˈ㸠⿏ࡼˈे ᇚㆅᄤⱘϟϔϾԡ㕂㕂Ўㆅᄤ⢊ᗕ 㒧ˈᵰ䆄ܹ nextloca
ᆘᄬ఼DŽᇚㆅᄤⱘԡ㕂㕂ЎᇣҎ⢊ᗕˈ䆄ܹ locationDŽᡞᔧࠡതᷛᷛᖫЎぎഄˈ
ৠḋׂᬍ� lastlocaᆘᄬ఼DŽ䞡ᮄಲࠄㄝᕙЁᮁ⢊ᗕ�
ii. 㢹ЎⳂⱘഄˈᆘᄬ఼ׂᬍৠϞˈᑊᇚ flag ᆘᄬ఼ޣ 1ˈᑊ↨䕗 flag 0 ᰃ৺Ⳍ
ㄝˈ߸ᮁᰃ৺ᅠ៤␌៣DŽ䞡ᮄಲࠄㄝᕙЁᮁ⢊ᗕ�
iii. ৺߭ˈ⿏ࡼফ䰏ˈ䞡ᮄಲࠄㄝᕙЁᮁ⢊ᗕ�
c) থ⦄ᰃⳂⱘഄϞⱘㆅᄤˈ໘⧚ᮍ⊩ৠϞˈাᰃ㢹៤ࡳ⿏ࡼˈflagܜࡴ 1৺߭ˈ⿏ࡼ
ফ䰏ˈ䞡ᮄಲࠄㄝᕙЁᮁ⢊ᗕ�
2) 㢹䕧ܹЎᙨẟ䬂ˈḍ nextloca߸ᮁϞϔℹⱘ⿏ࡼᚙމ�
a) nextloca ⑶ߎˈϞϔℹᑊ⿏ࡼㆅᄤᑊ⿏ࡼ䖛ˈ⬅Ѣ߱ྟ࣪ᯊᇚ lastlaca 䌟ҹ
locationˈ㢹⿏ࡼ䖛 lastloca=locationDŽ߭䖭⾡ᚙމϟ䛑ৃҹⳈᇚ lastloca㕂Ўᇣ
Ҏˈᑊ䖬ॳᔧࠡതᷛ៤ぎഄⳂⱘഄDŽᑊׂᬍ locationЎ lastlocaDŽ�
b) nextlocaড়⊩ˈϞϔℹ⿏ࡼࡼ䖛ㆅᄤDŽৠḋᘶݙᄬؐˈᑊׂᬍᇍᑨᷛᖫᆘᄬ఼ˈ
⡍߿⊼ᛣ flagᆘᄬ఼ⱘ໘⧚ेৃDŽ�
c) ৺߭Ўϡড়⊩䕧ܹˈಲࠄㄝᕙЁᮁ⢊ᗕ�
⊼˖ҹϞ᠔᳝៤ࡳ⿏ࡼⱘℹ偸䛑㽕䗮䖛ッষ䕧ߎׂᬍᰒᄬDŽҹᅠ៤ᰒ⼎DŽ�
3) བЁᮁЁ߸ᮁ flag=0ˈे᠔᳝ㆅᄤ䛑ᏆϞⳂⱘഄˈ߭݇䯁ЁᮁˈᓔྟҢ Ram䇏ܹ㒧ᴳ
⬏䴶ˈׂᬍݙᄬᑊৠᯊᇚ݊䕧ߎࠄᰒᄬDŽᅠ៤␌៣DŽ�
ㅫ⊩ᇍᑨⱘ⌕བϟ˖
߱ྟ࣪
ᠧᓔЁᮁ
݇䯁Ёᮁ
ᅠ៤˛
㒧ᴳ⬏䴶
␌៣ᓔྟ
␌៣㒧ᴳ
Ёᮁ䇗⫼
⿏ࡼ
ᬍݙᄬϢᰒᄬ
䬂Ⲭ䕧ܹ
ড়⊩
ᰃ
৺
৺
ᰃ
2) VGAࠊ
a) VGAষ
˄rgbϝ㡆ⱘ䕧ߎ㸠ৠℹഎৠℹ˅
b) 䩜ᇍ៥Ӏ㽕䕧ߎⱘϰ㽓 VGAⱘষ䕧ߎֵো䖯㸠㓪˗
c) 佪ܜᰃϹḐⱘ㸠ৠℹഎৠℹֵো
i. ḍϞ䴶ⱘᯊᑣˈᕜᆍᯧᕫࠄϹḐⱘ㸠ৠℹֵোഎৠℹֵো˗
ϡᇥৠᄺⓨ⼎ⱘᯊ᮴⊩ᡩᕅҾϞ៤ࡳᰒ⼎ڣ ህˈᰃЎ䖭
ϸϾֵোϡヺড়ϹḐⱘ VGAⱘᎹϮᷛޚˈ乥⥛䍙䖛ৃ䆚߿ⱘ㣗
ೈDŽ
ii. Ѡ䳔㽕⊼ᛣⱘᰃ ENABLE ֵোⱘ⫼ᖙ㽕ᗻˈЎᔧ㸠Ѣ
640ˈ߫Ѣ 480˗ᰃᠿᦣ⚍ᠿᦣࠄ䴲ৃ㾕ⱘऎඳˈ᠔ҹ៥ӀЎњ
VGAᎹϮᷛޚ᠔㽕∖ⱘ乥⥛:
ᯊ䩳乥⥛: 25.175MHz(ڣ㋴䕧ߎⱘ乥⥛);
㸠乥: 31469Hz;
എ乥: 59.94Hz
ֱ䆕ᰒ⼎ڣⱘ〇ᅮᗻ䳔㽕ᣛᅮϔϾՓ㛑ֵোˈՓᕫᅗ rgbᢳ
ֵোⳌϢˈᔧ㸠 0~640ˈ߫ 0~480Пݙᠡ᳝ᬜˈ䖭ḋህЎ៥Ӏৃ㾚
ⱘ㣗ೈݙDŽ
d) ϟ䴶䳔㽕ⱘḍ␌៣ⱘ䳔㽕䆒㕂 color-map˗
i. 佪ܜ៥Ӏᡞ 640*480 ߚ䕼⥛ⱘሣᐩ䖯㸠ߦߚˈЎᰃᇣ␌៣≵᳝ᖙ
㽕خ៤䙷Мⱘ⦄ᅲ㣗ೈ ᠔ˈҹ៥ӀᡞЁ䯈ⱘϔഫ 256*256ⱘऎඳ䖯
㸠ᰒ⼎ˈ䴶ⱘЎ㪱㡆ⱘ㚠᱃ˈᐌᰒ⼎㪱㡆˗
ii. 㗗㰥ࠄ៥Ӏ䳔㽕䰸⊩ⱘ䘏䕥ˈ᠔ҹ᠔᳝ⱘߚഫ䛑ᰃ 2 ⱘᭈ᭄ᐖDŽ
៥Ӏ৻ 256*256ⱘऎඳߚ៤њ 8*8ⱘ 64Ͼऎඳഫˈ↣ϔϾڣ⚍ᰃ
32*32ڣ㋴ⱘDŽ↣ϔऎඳഫᰒ⼎ϔϾݙᆍDŽ↨བㆅᄤǃ㗙ᰃҎǃ
㗙ᰃǃⳂⱘഄDŽЎ៥Ӏ≵᳝⫼ݙᄬऩܗᴹخ៤ϔϾ
lookup_table;㗠ᰃ⫼ㅔऩⱘ䘏䕥ᴹᅲ⦄ᰒ⼎⾡ḋⱘㅔऩⱘᔶ⢊
买㡆ᨁ䜡DŽ
iii. 佪ܜ៥Ӏᣛᅮњ⾡ϡৠᚙމⱘᰒ⼎ᔶˈ↨བ䇈ህᰃㅔऩᮍᔶ
ᨁ䜡㑶㓓㡆˗ㆅᄤᰃצⴔⱘễᔶˈࡴϞ䖍ḚDŽĂĂ
iv. Ўњᰒ⼎䖭ѯϡৠⱘऎඳᔶ⢊买㡆ⱘᨁ䜡៥Ӏ䳔㽕ᅮԡϸϾԡ
㕂DŽϔϾᰃᠿᦣ⚍തᷛᇍᑨⱘᰃાϔϾ 8*8ⱘऎඳഫˈ✊ৢҢݙᄬ
Ё䇏পᅗᰃሲѢ䙷Ͼϰ㽓ˈᰃⳂⱘഄ䖬ᰃҎ˗✊ৢ៥Ӏ䖬䳔㽕ϔϾ
തᷛᅮԡˈ䙷ህᰃऎඳഫݙ䚼ⱘᮄതᷛˈᕜㅔऩ⫼䰸䖤ㅫৃҹⶹ
䘧ᔧࠡⱘᠿᦣ⚍ᇍᑨⱘऎඳᰃ䙷Ͼ ⫼˗䖤ㅫህৃҹᅮԡᅗ䖭Ͼ
ऎඳⱘᮄതᷛDŽЎ䛑ᰃ 2ⱘℷ᭄ᐖⱘ᭄ˈ䰸䖤ㅫ䖤ㅫ䛑ᰃ
ৃҹᅠ៤ⱘDŽ
v. ϟ䴶ህㅔऩВϔϾ⫼䘏䕥ᅲ⦄ⱘᔶᰒ⼎DŽ៥Ӏᇍㆅᄤⱘᰒ⼎ᰃϔ
Ͼễᔶⱘ᳝䖍ḚⱘᔶDŽ䳔㽕៥Ӏ⬏ߎಯᴵ᭰⥛ᰃ 1ⱘⳈ㒓ˈৃҹ
㒧ড়㒓ᗻ㾘ߦⱘᗱᛇ ⫼ˈ if䇁হ㒧ড়ϡㄝᓣᴹ⬏ߎễᔶऎඳ⫼ㄝ
ᓣᴹ⬏ߎಯᴵⳈ㒓DŽ
䖬᳝ᇣҎⱘᰒ⼎гᰃ⫼ㅔऩⱘ䘏䕥߸ᮁᴹخⱘDŽᔧ✊བᵰ㽕خ
ߎϔϾᅠ㕢ⱘᰒ⼎ᔶᨁ䜡ˈᑨ䆹⫼催ⱘᰒᄬˈ⫼ᶹᡒ㸼ⱘᔶᓣ
ᴹ䖯㸠ᰒ⼎DŽ
e) ᳔ৢᇚ៥Ӏ color-mapˈvga 㸠ৠℹഎৠℹഫҹঞݙᄬഫ䖯㸠䖲
㒓DŽԧⱘḚϞ䴶ⱘḚЁ䇈ⱘᕜ⏙Ἦˈԧⱘ⌕ᰃ˖
3) PS2䬂Ⲭষ⬉䏃
䖭ϔ䚼ߚݙᆍ៥ᰃ㗕Ꮬᦤկⱘ PS2ষⱘ⸔Ϟׂᬍ㗠៤ⱘDŽ
佪ܜˈϟᰃϔϾ䬂Ⲭ䗤⏤থ䗕ᠿᦣⷕⱘᯊᑣDŽ
ᔧᣝϟᣝ䬂ᯊˈ䬂Ⲭথ䗕कϾᯊ䩳਼ᳳⱘІ㸠ֵোˈ݊Ё 1ԡЎ
䍋ྟヺˈ᳔ৢϔԡЎ㒜ℶヺˈЁ䯈 8ԡЎ᭄DŽ
䖯㸠Іᑊ䕀ᤶⱘ⬉䏃བϟˈᅲ䰙ϞᰃϸϾᆘᄬ఼DŽᯊ䩳ⱘϟ䰡⊓ˈ
㹿䞛ࠄⱘᮄ bit䖯ܹЏᆘᄬ఼˄ϟᮍ˅ⱘϔԡˈབDŽ㗠䱣ৢⱘϞ
छ⊓ˈЏᆘᄬ఼ⱘ᭄㹿ܼ䚼ݭܹҢᆘᄬ఼ˈབ咥ㆁ༈᠔⼎˗㗠ϟ
ϔϾϟ䰡⊓䫭ԡݭಲЏᆘᄬ఼ˈབ㉝㡆ㆁ༈᠔⼎DŽ㒣䖛 8Ͼᯊ䩳਼ᳳ
ৢˈ䕧ܹⱘ᭄ܼ֓䚼䖯ܹЏᆘᄬ఼ˈᅠ៤њӴ㸠Ϣᑊ㸠ⱘ䕀ᤶDŽ
Ԛᰃˈ䖬᳝ϔѯ乱ⱘ䯂乬DŽ⬅Ѣ䞛⫼ϞϟᎺেᮍ䬂䖯㸠ࠊˈ
㗠䖭ѯ䬂ԡⱘᠿᦣⷕᰃ⬅ϸ↉㒘៤ⱘˈࠡϔ↉ᰃᠽሩⷕˈ㗠ৢϔ↉ᠡᰃ
ⳳℷⱘ᭄ⷕDŽℸᅠ៤䕀ᤶৢˈ㽕߸ᮁᕫࠄⱘおコᰃᠽሩⷕ䖬ᰃⳳ
ℷⱘ᭄ˈ㢹ᰃᠽሩⷕ߭ゟࠏޚফৢ䖍ⱘ᭄˗㢹ᰃ᭄ⷕˈᠡ䗕
ߎ data_readyⱘֵোˈ䗮ⶹৢ䖍ⱘഫ߮߮ᬊࠄњᮄⱘ᭄DŽ
4) ໘⧚఼ೈ⬉䏃
a) Ёᮁࠊഫ
ᔧᅠ៤߱ྟ࣪ৢˈ໘⧚఼䖯ܹぎᕾ⦃ㄝࠄЁᮁⱘѻ⫳DŽ⬅Ѣ
PicoBlaze ⱘ Manual ϞᣛߎĀЎњ⹂ֱЁᮁ᳝ᬜˈЁᮁֵো䳔㽕ֱ
ᣕϸϾᯊ䩳਼ᳳⱘ催⬉ᑇāˈℸ䳔㽕 INTERRUPTッষࡴϔϾ
ᇣഫDŽ
བϞˈᔧ data_readyֵোѻ⫳ৢˈD㾺থ఼㹿㕂ԡˈҢ㗠
INTERRUPTッᬊࠄ催⬉ᑇˈ⬅Ѣ D㾺থ఼ⱘ䕧ܹッϢ䕧ߎッⳌ
䖲ˈѢᰃेՓ data_ready༅ᬜৢˈ催⬉ᑇⱘ⢊ᗕҡӮ㓈ᣕDŽᔧϸϾ
਼ᳳৢˈ໘⧚఼⹂䅸Ёᮁֵোˈᑊথߎ ACKֵোˈᇚ D㾺থ఼⏙
䳊ˈҢ㗠Ёᮁֵোг䱣П⍜༅ˈϡӮ䞡ѻ⫳ЁᮁDŽ
䖭ህᰃЁᮁࠊഫⱘᎹॳ⧚DŽৃ ҹⳟߎˈ݊ ᅲ⦄г䴲ᐌㅔऩDŽ
b) ഫ䯈䗮ֵࠊ
ϞЎ PicoBlaze ໘⧚఼ⱘ䚼ষ⼎ᛣDŽৃҹⳟߎˈᅗᰃ䗮
䖛 8bitⱘッষ IN_PORT OˈUT_PORT PˈORT_IDᴹᅠ៤Ϣ݊ᅗഫ
ⱘ䗮ֵⱘDŽ
໘⧚఼݅䳔㽕䬂Ⲭǃᰒᄬֱᄬഄֵᙃⱘ ROM䖯㸠䗮ֵˈ
ℸ PORT_IDᖙ乏ࡴഄഔ䆥ⷕ఼ IN_PORTࠡࡴ䏃䗝ᢽ
఼ˈѻ⫳ℷ⹂ⱘ䗝䗮ֵোˈֱ䆕᭄㹿䗕ࠄℷ⹂ⱘⳂⱘഄএˈᑊϨ
ֱ䆕᭄⬅ℷ⹂ⱘᴹ⑤䗕ᴹDŽ
ᅲ⦄ᯊˈা䳔㽕ᇚഄഔߚ䜡㒭ϡৠⱘ䆒ˈҢ㗠ḍッষഄഔ
ⱘ㣗ೈѻ⫳Ⳍᑨ䆒ⱘ䗝䗮ֵোህৃҹњ Ѣˈᰃ䖭䞠гϡࡴ䌬䗄њDŽ
ঢc�䯂乬Ϣ䇗䆩
៥Ӏⱘ䇗䆩䖛гᰃ↣Ͼ៤ਬܜ䖯㸠㞾ഫⱘ䇗䆩 ˈݡ䖯㸠ᭈϾ㋏㒳
ⱘ㘨䇗DŽ⬅ѢߚᎹড়⧚ˈᑊϨഫ䯈ষᅮНᯢ⹂ˈࡴҹՓ⫼њ IPḌˈ
ᭈϾ䆒䅵䖛Ё≵᳝䘛ࠄकߚẬⱘ䯂乬DŽ
Ԛᰃᰒ⼎఼Ϟ㾖ᆳ᳔ৢᬜᵰᰃˈैথ⦄ϔϾ༛ᗾⱘ䯂乬ˈᔧ↣ᣝϟ
ᮍ䬂ˈݡᣝϟ䴲ᮍ䬂ˈܜᣝϟ䴲ᮍ䬂ˈݡᣝϟᮍ䬂ᯊˈᰒ⼎఼
Ӯߎ⦄ⷁ᱖ⱘĀ咥ሣāˈ 䱣ৢᘶℷᐌDŽ䖭Ͼ䯂乬ೄᡄњ៥Ӏ䆌ЙDŽ
㒣䖛Ҩ㒚㾖ᆳˈ៥Ӏথ⦄咥ሣࠡৢഄᰃℷ⹂ⱘˈ䖭ህ䇈ᯢϡᰃ䆒䅵Ё
ⱘ䘏䕥ߎњ䯂乬DŽ咥ሣᕜৃ㛑ᰃЎᰒ⼎఼䙷Ͼᯊࠏ༅এњֵোDŽѢᰃ
៥ӀজҨ㒚Ẕᶹњ VGAഫⱘ䕧ߎࠊˈথ⦄ҷⷕᴀ䑿≵᳝䯂乬DŽ
䖯ϔℹ㾖ᆳ ៥ˈӀথ⦄ܜࠡ䇗䆩䖛Ё ЎˈњẔᶹ䬂Ⲭ䆥ⷕᰃ৺ℷ⹂ˈ
៥Ӏᇚ䆥ⷕ㒧ᵰ䗕ࠄњ 7 ↉䆥ⷕ఼ˈ䗮䖛᭄ⷕㅵᴹ㾖ᆳ㒧ᵰDŽ㗠ᮍ䬂Ϣ
䴲ᮍ䬂П䯈ߛᤶᯊ 7 ↉᭄ⷕㅵЁⱘ䚼ߚ䛑থ⫳њব࣪ˈӮϡӮᰃ⬅Ѣ
䖭⾡ব࣪ᇐ㟈њ偅ࡼ㛑ⱘϟ䰡Ң㗠ᕅડњ VGA ࠊֵোⱘ䕧ߎਸ਼˛Ѣ
ᰃ៥Ӏ䞡ᮄׂᬍњᇍ 7 ↉᭄ⷕㅵⱘࠊˈՓ݊ᮍ䬂Ϣ䴲ᮍ䬂П䯈ⱘ
ߛᤶᯊা᳝ᇥ᭄᭄ⷕㅵথ⫳њব࣪ˈথ⦄ᵰ✊咥ሣⱘ䯂乬ϡݡߎ⦄њˈ䖭
гॄ䆕њ៥Ӏⱘ⣰ᛇDŽ
c�ᅲ⦄ᬜᵰ
᳔㒜ˈᴀ䆒䅵ⱘᅠ៤ᚙމབϟ˖
䩞Ⰸ᧽Ҍ⍨喍9*$ ᭮�
䶴㒞 �፵ౠమ喍ү⩘Ჯ̺ᐰڣ䔹᠙�
ٱ䃨ᗄ᷻�
㒣䖛ᆊⱘ䆩⥽ˈ␌៣ᬜᵰ㡃དˈথ⦄ BugDŽ
ϟ䴶ᰃ៥Ӏⱘ䆒䅵ᰒ⼎఼Ϟⱘᬜᵰ˖
᳔㒜⬅ Xilinx䕃ӊ㒭ߎⱘ䌘⑤ऴ⫼⥛Ў˖
Number of occupied slices:
332/960 33%
гህᰃҙऴ⫼њᇣᓔথᵓⱘ㑺 1/3ⱘ䌘⑤ህᅠ៤њ䆒䅵DŽ
̶c�ᘏ㒧Ϣᬊ㦋
1. ഫ࣪䆒䅵Ϣ㋏㒳ⱘᨁᓎ
� ݊ᅲϞ䇒ⱘᯊ䚥㗕Ꮬ㒭៥Ӏ䆆ᥜњᕜ㋏㒳㑻䆒䅵ⱘⶹ䆚ˈࣙᣀ
Ң HDL ⱘ㓪ˈݡࠄԧⱘϔѯㅫ⊩ˈ䖬᳝ϔѯ IP ḌⱘՓ⫼ˈخ
ϔϾ㋏㒳㽕䆆おབԩ䆒䅵ᨁᓎˈϔ㠀ⱘᮍ⊩ᰃҢ乊㟇ϟˈᇚ㋏㒳ߚ
៤ϔѯᇣ㋏㒳ˈ✊ৢݡߚ៤ϔѯԧࡳ㛑ഫDŽϡৠⱘࡳ㛑ഫⱘ
ᨁᓎৃҹ⫼ϡৠⱘᮍ⊩ 䖭ˈ䞠៥Ӏ䗝ᢽњ⫼ PicoBlazeⱘ໘⧚఼ᴹ䖯
㸠ࠊDŽ
2. IPḌⱘՓ⫼Ϣㅔऩⱘጠܹᓣ㋏㒳
� 䖭䞠៥Ӏ↨䕗᳝⡍⚍ⱘϰ㽓ህᰃ㒧ড়њ PicoBlaze ⱘ໘⧚఼ IP Ḍ
ⱘ߽⫼ᴹᨁᓎ៥Ӏⱘ␌៣㋏㒳DŽ㒧ড়Ӵ㒳ⱘ HDL ⱘᦣ䗄㋏㒳ⱘᮍ
⊩ ✊ˈৢ䖯㸠㓐ড়䖲DŽ㗠Ϩ IPḌⱘՓ⫼㛑ՓᭈϾ㋏㒳ࡴ㾘ᭈˈ
ᑊϨ㛑Փ⫼∛㓪䇁㿔ᅠ៤䘏䕥ࠊˈ߽֓њ䇗䆩ⱘ䖛DŽℸ
ˈIP Ḍгᰃ䖭䮼䇒ᬭ㒭៥ӀⱘϔϾ䞡㽕ⱘὖᗉϢᮍ⊩ˈ᠔ҹ៥
Ӏއᅮᇱ䆩ϔϟՓ⫼ IPḌ䖯㸠 FPGAᓔথⱘ㒣ग़DŽ
� ݊ᅲՓ⫼ IPḌ䖯㸠 FPGA㋏㒳㑻ᓔথᰃϔϾᖙ✊䳔㽕ᥠᦵⱘϔ䮼ⶹ
䆚ˈгᰃҞৢᅲ⦄↨䕗㾘㋏㒳ⱘϔϾ䍟৻ˈ䇒Ϟˈ䚥㗕Ꮬ㢅
њ↨䕗ⱘᯊ䯈៥Ӏ䆆ᥜ PicoBlaze MicroBlaze ϸ⾡໘⧚఼
ࠊⱘ⫼⊩ᅲ՟䆆㾷ˈ⫼∛㓪 C䇁㿔гৠḋৃҹㅔऩ䖯㸠 FPGAⱘ
㓪DŽЎ៥Ӏⱘ㋏㒳ᨁᓎㅔऩ࣪њˈԚᰃ㗗㰥䌘⑤ᓔথⱘ
ᮍ֓៥Ӏ䳔㽕䖯㸠ᡬЁ㗗㰥ˈЎᕔᕔᕜᚙމ៥Ӏ䳔㽕⫼ⱘ
䌘⑤প߽⫼䖭Ͼ໘⧚఼DŽ
� Փ⫼ IPḌৃҹ䇈ᰃキᎼҎⱘ㙽㝔Ϟ䖯㸠ᓔথ ˈЎ IPḌᰃϔ
ϾৃҹⳈ䖯㸠ׂᬍⱘञ៤કˈ⡍߿ᰃ䙷ѯ soft IPৃᓔথⱘ┰
ˈ߽⫼ IP Ḍ⫳៤Ꮉৃҹ⫳៤⾡㉏ൟǃ⾡ࡳ㛑ⱘഫDŽ䖭ѯ
ഫҢㅔऩⱘᴀ䆒䅵ഫࠄᴖⱘֵো໘⧚ഫϔᑨׅܼDŽ䗮䖛
IPḌ⫳៤Ꮉ⫼ IPḌⱘད໘᳝㓽ⷁ䆒䅵䖯ᑺ ˗ޣᇥᓔথ䇗䆩ᯊ䯈˗
䙓ܡ䞡䆒䅵˗ᇍ䆒䅵ⱘᗻ㛑䋼䞣ᏺᴹ䕗ⱘᦤछDŽ
3. 䇗䆩ⱘ㒣偠
� ߚഫ䇗䆩ˇ㘨䇗
a) ៥Ӏܙߚথ䲚ԧⱘ䞣ˈЎ᳝ߚᎹⱘ㽕∖ˈ᠔ҹ៥Ӏ㞾ᇍ
㞾Ꮕⱘࡳ㛑ഫ䛑ᰃ↨䕗њ㾷ⱘDŽ↨བ䇈ᴢ䴦ᰃᅠ៤ⱘ Picoblaze
໘⧚఼ϟⱘ∛㓪ҷⷕⱘ㓪ݭ䇗䆩ˈ䘏䕥↨䕗ㅔऩ˗᠔ҹ៥Ӏ
ॳᴹⱘ⸔Ϟࡴњᙨẟⱘ䘏䕥˗䇗䆩䖛Ёߎ⦄њᙨẟߎ䫭
ⱘᚙމ ˈᆊህ䲚ԧ䅼䆎ߎ⦄ⱘ䯂乬DŽ⥟ṙᵫ䋳䋷ⱘᰃᰒ⼎ഫˈ
Џ㽕ᰃ䕧ߎϾᯊࠏⱘ rgb ᢳֵো㸠ৠℹഎৠℹⱘֵোˈ
䙷М䖭Ͼᰃ䇗䆩ⱘ⸔ˈ㗠Ϩ䖭Ͼഫг᳝↨䕗ⱘখ㗗ᅲ՟˗
݇䬂ᰃབԩ⫼ㅔऩⱘ䘏䕥߸ᮁᴹᰒ⼎⾡Ḝ˗䇗䆩ⱘ䖛гᰃ
↨䕗ㅔऩⱘˈা㽕ⳟᰒ⼎ߎᴹⱘᬜᵰˈ㒧ড়ҷⷕᕜᆍᯧህⶹ䘧䯂
乬ߎ⦄ા˛↨䕗䲒ҹ䇗䆩ⱘᰃ⫼ PicoBlaze໘⧚఼ѻ⫳ⱘഫˈ
Ўϡᰃ㞾Ꮕᡞݭߎⱘҷⷕˈ᠔ҹԧⱘ䇗䆩䳔㽕↨䕗䭓ⱘ
ࡳDŽ
b) 㘨䇗ᰃሩ⦄䲚ԧᱎಶ䯳ড়ⱘϔ乍Ꮉˈ㘨䇗ⱘ䖛Ёˈ
ߎ⦄њᕜ䯂乬˗↨བ䇈ᰒ⼎⬏䴶ⱘ䮾ࡼ˗ᔶᰒ⼎ߎ䫭˗㗙
␌៣ⱘ䘏䕥ϡᇍDŽԚᰃẔᶹ㞾ⱘഫˈҹঞ䚅ᇍᭈϾ㋏㒳ⱘ
ᨁᓎ❳ᙝ㾷އ䖭ѯ䯂乬䖬ᰃ↨䕗䕏ᵒⱘDŽ
c) ᇍѢ䙷ѯ៥Ӏϡ㛑߸ᮁⱘ䯂乬ᴹ⬅ˈ៥Ӏ䞛⫼㋏㒳ㅔऩ࣪ˈ↨བ
ϸϝϾഫП䯈䖲䍋ᴹ䇗䆩ˈ✊ৢϔϾϔϾഫࡴϞএ˗ᡒߎ
䯂乬ⱘॳDŽ᳔ৢᇚ᠔᳝ⱘഫ䖲䍋ᴹˈ㾷އ᠔᳝ⱘ䯂乬DŽ
4. ߚᎹϢড়
� 䖭Ͼᇣ␌៣㱑✊ϡᰃϔϾᕜⱘᎹ Ԛˈᰃ㋻ᓴⱘϝϟ䇒Ёˈ
䖬ᰃ㢅䌍њ៥Ӏ↨䕗ⱘᯊ䯈ⱘˈᰃ៥Ӏϝԡ៤ਬࡾⱘ㒧ᵰˈг
ᰃϔϾᄺᳳҹᴹᇚ៥Ӏ᠔ᄺⱘ݇Ѣ FPGA ⱘ㋏㒳ᓎゟⱘⶹ䆚ሑ䞣ⱘ
⫼䍋ᴹњDŽ៥Ӏ⫼ࠄњ PicoBlazeⱘ໘⧚఼ഫˈ⫼ࠄњ䬂Ⲭഫˈ
⫼ࠄњЁᮁˈ⫼ࠄњ VGAⱘᰒ⼎ഫ˗ৠᯊᡞ∛㓪 HDL⹀ӊᦣ
䗄䇁㿔ᕜདⱘЎ៥Ӏⱘ㋏㒳᳡ࡵDŽ
� ៥ӀⱘߚᎹᰃ䴲ᐌড়⧚ⱘˈ佪ܜ⥟ṙᵫᴢ䴦ᰃ䋳䋷Џ㽕ᄤഫⱘ
ᨁᓎˈ⥟ṙᵫ䋳䋷ⱘᰃ VGAࠊഫ˗ᴢ䴦䋳䋷 PicoBlaze໘⧚఼
Ϟⱘ䘏䕥ࠊ䚼ߚ∛㓪ҷⷕⱘ㓪ݭ˗㗠䚅䋳䋷 PS2 䬂ⲬষϢ
PicoBlazeⱘೈষ⬉䏃ˈҹঞᭈϾ㋏㒳ⱘᨁᓎDŽ䖭ḋ៥ӀߚᎹ
Ϟˈ䇗䆩Ϟ䛑᳝ᕜⱘӬDŽ
ࡔc�㟈䇶
� ᛳ䇶ϔϾᄺᳳᴹ䚥㗕Ꮬ㒭៥Ӏخⱘ㊒ᔽ㗠ᅲ⫼ⱘ FPGAⱘ᭄ᄫ㋏㒳䲚
៤ݙᆍⱘ䆆㾷˗
� ৠᯊгᛳ䇶⧁Ϟԡ݊Ҫ㒘ⱘৠᄺ㒭ќњ៥Ӏ㒘ⱘ⹀ӊ䕃ӊϞ
ⱘᬃᣕ˗
� ᳔ৢᔧ✊ᰃᛳ䇶៥Ӏⱘ↣ϔԡࡾҬߎⱘ៤ਬ ಶˈ㒧ড়ᠡᰃ៥Ӏᅠ៤
䖭ӏࡵⱘ᳔᳝ⱘ℺఼DŽ
本文档为【“推箱子”游戏的FPGA_实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。