ã¯ããã«
ããªãã¯ããããªã³ãŽãé£ã¹ãããšããŠç»é¢äžãèµ°ãåäŸæä»£ã®ããã²ãŒã ãèŠããŠããŸããïŒ ãã®èšäºã§ã¯ãFPGAã§ã®ã²ãŒã ã®å®è£
ã«ã€ããŠèª¬æããŸã1 ã

å³1.ã²ãŒã ãã¬ã€
ãŸããèªå·±ç޹ä»ããããããžã§ã¯ãã«åãçµãã çç±ã説æããŸãããã ç§ãã¡ã¯3人ããŸãïŒ Tymur Lysenko ã Daniil Manakovskiy ã Sergey Makarov ã ã€ãããªã¹å€§åŠã® 1幎çãšããŠããã³ã³ãã¥ãŒã¿ãŒã¢ãŒããã¯ãã£ãã®ã³ãŒã¹ãåè¬ããŸãããããã¯å°éçã«æããããåŠç¿è
ãã³ã³ãã¥ãŒã¿ãŒã®äœã¬ãã«ã®æ§é ãçè§£ã§ããããã«ããŸãã ã³ãŒã¹ã®ããæç¹ã§ãã€ã³ã¹ãã©ã¯ã¿ãŒã¯ã³ãŒã¹ã®è¿œå ãã€ã³ãã®ããã«FPGAã®ãããžã§ã¯ããéçºããæ©äŒãæäŸããŠãããŸããã ç§ãã¡ã®åæ©ã¯æçžŸã ãã§ã¯ãããŸããã§ããããããŒããŠã§ã¢èšèšã®çµéšãå¢ãããçµæãå
±æããæåŸã«æ¥œããã²ãŒã ãããããšã«èå³ããããŸãã
ããã§ã¯ãæã詳现ã«é²ã¿ãŸãããã
ãããžã§ã¯ãã®æŠèŠ
ãã®ãããžã§ã¯ãã§ã¯ãç°¡åã«å®è£
ã§ããæ¥œããã²ãŒã ãã€ãŸããSnakeããéžæããŸããã å®è£
ã®æ§é ã¯æ¬¡ã®ãšããã§ãããŸããå
¥åãSPIãžã§ã€ã¹ãã£ãã¯ããååŸãããæ¬¡ã«åŠçãããæåŸã«ç»åãVGAã¢ãã¿ãŒã«åºåãããã¹ã³ã¢ã7ã»ã°ã¡ã³ããã£ã¹ãã¬ã€ïŒ16鲿°ïŒã«è¡šç€ºãããŸãã ã²ãŒã ããžãã¯ã¯çŽæçã§ç°¡åã§ãããVGAãšãžã§ã€ã¹ãã£ãã¯ã¯è峿·±ã課é¡ã§ããããããã®å®è£
ã¯åªããã²ãŒã äœéšããããããŸããã
ã²ãŒã ã«ã¯æ¬¡ã®ã«ãŒã«ããããŸãã ãã¬ã€ã€ãŒã¯ãããã®é ããå§ããŸãã ç®æšã¯ãªã³ãŽãé£ã¹ãããšã§ãããªã³ãŽã¯ãåã®ãã®ãé£ã¹ãããåŸã«ç»é¢äžã§ã©ã³ãã ã«çæãããŸãã ããã«ãããã¯ç©ºè
¹ãæºãããåŸã1尟䌞ã³ãŠããŸãã å°Ÿã¯é ã«ç¶ããŠæ¬¡ã
ã«åããŸãã ããã¯åžžã«åããŠããŸãã ç»é¢ã®å¢çã«éãããšãããã¯ç»é¢ã®å¥ã®åŽã«ç§»åãããŸãã é ã尻尟ã«åœãããšãã²ãŒã ãªãŒããŒã§ãã
- 6272è«çãšã¬ã¡ã³ãã50 MHzã¯ããã¯ã3ãããã«ã©ãŒVGAã8æ¡7ã»ã°ã¡ã³ããã£ã¹ãã¬ã€ãåããã¢ã«ãã©Cyclone IVïŒEP4CE6E22C8NïŒã FPGAã¯ãã³ãžã®ã¢ããã°å
¥åãååŸã§ããŸããã
- SPIãžã§ã€ã¹ãã£ãã¯ïŒKY-023ïŒ
- 60 Hzã®ãªãã¬ãã·ã¥ã¬ãŒãããµããŒãããVGAã¢ãã¿ãŒ
- Quartus Prime Lite Edition 18.0.0ãã«ã614
- Verilog HDL IEEE 1364-2001
- ãã¬ããããŒã
- 黿°çŽ åïŒ
- 8åã®ãªã¹-ã¡ã¹ã³ãã¯ã¿
- ã¡ã¹-ã¡ã¹ã³ãã¯ã¿1å
- ãªã¹ãªã¹ã³ãã¯ã¿1å
- 4åã®æµæïŒ4.7KΩïŒ
ã¢ãŒããã¯ãã£ã®æŠèŠ
ãããžã§ã¯ãã®ã¢ãŒããã¯ãã£ã¯ãèæ
®ãã¹ãéèŠãªèŠçŽ ã§ãã å³2ã¯ããã®ã¢ãŒããã¯ãã£ããããã¬ãã«ã®èгç¹ãã瀺ããŠããŸãã

å³2.ãã¶ã€ã³ã®æäžäœãã¥ãŒïŒ pdf ïŒ
ã芧ã®ãšãããå€ãã®å
¥åãåºåãããã³ããã€ãã®ã¢ãžã¥ãŒã«ããããŸãã ãã®ã»ã¯ã·ã§ã³ã§ã¯ãåèŠçŽ ã®æå³ã説æããããŒãçšã«ããŒãäžã§äœ¿çšããããã³ãæå®ããŸãã
äž»ãªå
¥å
å®è£
ã«å¿
èŠãªäž»ãªå
¥åã¯res_x_one ã res_x_two ã res_y_one ã res_y_twoã§ããããããã¯ãžã§ã€ã¹ãã£ãã¯ã®çŸåšã®æ¹åãåä¿¡ããããã«äœ¿çšãããŸãã å³3ã¯ããããã®å€ãšæ¹åã®éã®ãããã³ã°ã瀺ããŠããŸãã
å
¥å | å·Š | ããã ã | äžãž | ããŠã³ | æ¹åã«å€åãªã |
---|
res_x_oneïŒPIN_30ïŒ | 1 | 0 | x | x | 1 |
res_x_twoïŒPIN_52ïŒ | 1 | 0 | x | x | 0 |
res_y_oneïŒPIN_39ïŒ | x | x | 1 | 0 | 1 |
res_y_twoïŒPIN_44ïŒ | x | x | 1 | 0 | 0 |
å³3.ãžã§ã€ã¹ãã£ãã¯ã®å
¥åãšæ¹åã®ãããã³ã°
- clk-ããŒãã¯ããã¯ïŒPIN_23ïŒ
- ãªã»ãã -ã²ãŒã ããªã»ããããŠå°å·ã忢ããä¿¡å·ïŒPIN_58ïŒ
- è² -1ã®å Žåãå¯èœãªãã¹ãŠã®è²ãç»é¢ã«åºåããããã¢ç®çã®ã¿ã«äœ¿çšãããŸãïŒPIN_68ïŒ
ã¡ã€ã³ã¢ãžã¥ãŒã«
joystick_inputã¯ããžã§ã€ã¹ãã£ãã¯ããã®å
¥åã«åºã¥ããŠæ¹åã³ãŒããçæããããã«äœ¿çšãããŸãã
game_logic
game_logicã«ã¯ãã²ãŒã ããã¬ã€ããããã«å¿
èŠãªãã¹ãŠã®ããžãã¯ãå«ãŸããŠããŸãã ã¢ãžã¥ãŒã«ã¯ããããæå®ã®æ¹åã«ç§»åããŸãã ããã«ããªã³ãŽã®æé£ãšè¡çªã®æ€åºãè¡ããŸãã ããã«ãç»é¢äžã®ãã¯ã»ã«ã®çŸåšã®xããã³y座æšãåãåãããã®äœçœ®ã«é
眮ããããšã³ãã£ãã£ãè¿ããŸãã
VGA_Draw
åŒãåºãã¯ãçŸåšã®äœçœ®ïŒ iVGA_XãiVGA_Y ïŒãšçŸåšã®ãšã³ãã£ãã£ïŒ ent ïŒã«åºã¥ããŠããã¯ã»ã«ã®è²ãç¹å®ã®å€ã«èšå®ããŸãã
VGA_Ctrl
VGAåºåïŒ V_SyncãH_SyncãRãGãB ïŒãžã®å¶åŸ¡ãããã¹ããªãŒã ãçæããŸãã
SSEG_ãã£ã¹ãã¬ã€2
SSEG_Displayã¯ã7ã»ã°ã¡ã³ããã£ã¹ãã¬ã€ã«çŸåšã®ã¹ã³ã¢ãåºåãããã©ã€ããŒã§ãã
Vga_clk
VGA_clkã¯50MHzã¯ããã¯ãåä¿¡ãã25.175 MHzã«ã«ããããŠã³ããŸãã
game_upd_clk
game_upd_clkã¯ãã²ãŒã ã®ç¶æ
ã®æŽæ°ãããªã¬ãŒããç¹å¥ãªã¯ããã¯ãçæããã¢ãžã¥ãŒã«ã§ãã
åºå
- VGA_B -VGAéãã³ïŒPIN_144ïŒ
- VGA_G -VGAç·ãã³ïŒPIN_1ïŒ
- VGA_R -VGAèµ€ãã³ïŒPIN_2ïŒ
- VGA_HS -VGAæ°Žå¹³åæïŒPIN_142ïŒ
- VGA_VS -VGAåçŽåæïŒPIN_143ïŒ
- sseg_a_to_dp -8ã€ã®ã»ã°ã¡ã³ãã®ã©ããç¹ç¯ããããæå®ããŸãïŒPIN_115ãPIN_119ãPIN_120ãPIN_121ãPIN_124ãPIN_125ãPIN_126ãPIN_127ïŒ
- sseg_an -4ã€ã®7ã»ã°ã¡ã³ããã£ã¹ãã¬ã€ã®ã©ãã䜿çšããããæå®ããŸãïŒPIN_128ãPIN_129ãPIN_132ãPIN_133ïŒ
å®è£

å³4. SPIãžã§ã€ã¹ãã£ãã¯ïŒKY-023ïŒ
å
¥åã¢ãžã¥ãŒã«ãå®è£
ããŠãããšãã«ãã¹ãã£ãã¯ãã¢ããã°ä¿¡å·ãçæããããšãããããŸããã ãžã§ã€ã¹ãã£ãã¯ã«ã¯ãå軞ã«3ã€ã®äœçœ®ããããŸãã
- top-ã5Våºå
- äž-ã2.5Våºå
- äœ-ã0Våºå
å
¥åã¯3é²ã·ã¹ãã ã«éåžžã«äŒŒãŠããŸããX軞ã«ã€ããŠã¯ã true
ïŒå·ŠïŒã false
ïŒå³ïŒãããã³undetermined
ç¶æ
ãããããžã§ã€ã¹ãã£ãã¯ã¯å·Šã«ãå³ã«ããããŸããã åé¡ã¯ãFPGAããŒããããžã¿ã«å
¥åããåŠçã§ããªãããšã§ãã ãããã£ãŠãäœããã®ã³ãŒããèšè¿°ããã ãã§ã¯ããã®3é
è«çã2é
ã«å€æããããšã¯ã§ããŸããã æåã«ææ¡ããã解決çã¯ãã¢ããã°-ããžã¿ã«ã³ã³ããŒã¿ãŒãèŠã€ããããšã§ãããããã®åŸãç©çåŠã«é¢ããåŠæ ¡ã®ç¥èãæŽ»çšããåå§åšãå®è£
ããããšã«ããŸãã3 ã 3ã€ã®ç¶æ
ãå®çŸ©ããã«ã¯ã2ããããå¿
èŠã§ãundefined
ã¯false
ã01ã¯undefined
ã11ã¯true
ã§ãã ããã€ãã®æž¬å®ã®åŸãããŒãäžã§ãŒããš1ã®éã®å¢çã¯çŽ1.7Vã§ããããšãããããŸããã ãããã£ãŠã次ã®ã¹ããŒã ãäœæããŸããïŒcircuitlab 4ã䜿çšããŠäœæãããã€ã¡ãŒãžïŒïŒ

å³5.ãžã§ã€ã¹ãã£ãã¯çšADCã®åè·¯
ç©ççãªå®è£
ã¯Arduinoãããã¢ã€ãã ã䜿çšããŠæ§ç¯ãããæ¬¡ã®ããã«ãªããŸãã

å³6. ADCã®å®è£
åè·¯ã¯å軞ã«1ã€ã®å
¥åãåãã2ã€ã®åºåãçæããŸããæåã®åºåã¯ã¹ãã£ãã¯ããçŽæ¥æ¥ãŠããžã§ã€ã¹ãã£ãã¯ã®åºåãzero
å Žåã®ã¿ãŒãã«ãªãzero
ã 2çªç®ã¯undetermined
ç¶æ
ã§ã¯0ã§ããã true
1 true
ã ããã¯ãäºæ³ãããšããã®çµæã§ãã
å
¥åã¢ãžã¥ãŒã«ã®ããžãã¯ã¯æ¬¡ã®ãšããã§ãã
- 3é
è«çãåæ¹åã®åçŽãª2é²ã¯ã€ã€ã«å€æããŸãã
- åã¯ããã¯ãµã€ã¯ã«ã§ã1ã€ã®æ¹åã®ã¿ã
true
ãã©ããããã§ãã¯ãtrue
ïŒããã¯æãã«é²ãããšã¯ã§ããŸããïŒã - æ°ããæ¹åãåã®æ¹åãšæ¯èŒããŠããã¬ã€ã€ãŒãæ¹åãå察æ¹åã«å€æŽã§ããªãããã«ããããšã§ããããèªåèªèº«ãé£ã¹ãªãããã«ããŸãã
å
¥åã¢ãžã¥ãŒã«ã³ãŒãã®äžéš reg left, right, up, down; initial begin direction = `TOP_DIR; end always @(posedge clk) begin //1 left = two_resistors_x; right = ~one_resistor_x; up = two_resistors_y; down = ~one_resistor_y; if (left + right + up + down == 3'b001) //2 begin if (left && (direction != `RIGHT_DIR)) //3 begin direction = `LEFT_DIR; end //same code for other directions end end
VGAãžã®åºå
60 FPSã§åäœãã60Hzç»é¢ã§è§£å床640x480ã®åºåãäœæããããšã«ããŸããã
VGAã¢ãžã¥ãŒã«ã¯ã ãã©ã€ããŒãšããã¯ãŒã®2ã€ã®äž»èŠéšåã§æ§æãããŠããŸãã ãã©ã€ãã¯ãåçŽãæ°Žå¹³åæä¿¡å·ãããã³VGAåºåã«äžããããè²ã§æ§æããããããã¹ããªãŒã ãçæããŸãã @SlavikMIPTã«ãã£ãŠæžãããèšäº5ã¯ãVGAã䜿çšããåºæ¬çãªååã説æããŠããŸãã ãã©ã€ããŒãèšäºããããŒãã«é©åãããŸããã
ç»é¢ã16x16ãã¯ã»ã«ã®æ£æ¹åœ¢ã§æ§æããã40x30èŠçŽ ã®ã°ãªããã«åå²ããããšã«ããŸããã åèŠçŽ ã¯1ã€ã®ã²ãŒã ãšã³ãã£ãã£ã衚ããŸãïŒãªã³ãŽãããã®é ãå°ŸããŸãã¯äœããªãã
å®è£
ã®æ¬¡ã®ã¹ãããã¯ããšã³ãã£ãã£ã®ã¹ãã©ã€ããäœæããããšã§ããã
Cyclone IVã«ã¯ãVGAã®è²ã衚ã3ãããã®ã¿ããããŸãïŒèµ€ã«1ãç·ã«1ãéã«1ïŒã ãã®ãããªå¶éã®ãããç»åã®è²ãå©çšå¯èœãªè²ã«åãããããã®ã³ã³ããŒã¿ãŒãå®è£
ããå¿
èŠããããŸããã ãã®ããã«ãåãã¯ã»ã«ã®RGBå€ã128ã§å²ãPythonã¹ã¯ãªãããäœæããŸããã
Pythonã¹ã¯ãªãã from PIL import Image, ImageDraw filename = "snake_head" index = 1 im = Image.open(filename + ".png") n = Image.new('RGB', (16, 16)) d = ImageDraw.Draw(n) pix = im.load() size = im.size data = [] code = "sp[" + str(index) + "][{i}][{j}] = 3'b{RGB};\\\n" with open("code_" + filename + ".txt", 'w') as f: for i in range(size[0]): tmp = [] for j in range(size[1]): clr = im.getpixel((i, j)) vg = "{0}{1}{2}".format(int(clr[0] / 128),
ãªãªãžãã« | ã¹ã¯ãªããã®åŸ |

| 
|
å³7.å
¥åãšåºåã®æ¯èŒ
åŒãåºãã®äž»ãªç®çã¯ãçŸåšã®äœçœ®ïŒ iVGA_XãiVGA_Y ïŒãšçŸåšã®ãšã³ãã£ãã£ïŒ ent ïŒã«åºã¥ããŠãã¯ã»ã«ã®è²ãVGAã«éä¿¡ããããšã§ãã ãã¹ãŠã®ã¹ãã©ã€ãã¯ããŒãã³ãŒãã£ã³ã°ãããŠããŸãããäžèšã®ã¹ã¯ãªããã䜿çšããŠæ°ããã³ãŒããçæããããšã§ç°¡åã«å€æŽã§ããŸãã
åŒãåºãããžã㯠always @(posedge iVGA_CLK or posedge reset) begin if(reset) begin oRed <= 0; oGreen <= 0; oBlue <= 0; end else begin // DRAW CURRENT STATE if (ent == `ENT_NOTHING) begin oRed <= 1; oGreen <= 1; oBlue <= 1; end else begin // Drawing a particular pixel from sprite oRed <= sp[ent][iVGA_X % `H_SQUARE][iVGA_Y % `V_SQUARE][0]; oGreen <= sp[ent][iVGA_X % `H_SQUARE][iVGA_Y % `V_SQUARE][1]; oBlue <= sp[ent][iVGA_X % `H_SQUARE][iVGA_Y % `V_SQUARE][2]; end end end
7ã»ã°ã¡ã³ããã£ã¹ãã¬ã€ãžã®åºå
ãã¬ãŒã€ãŒãã¹ã³ã¢ã確èªã§ããããã«ããããã«ãã²ãŒã ã¹ã³ã¢ã7ã»ã°ã¡ã³ããã£ã¹ãã¬ã€ã«åºåããããšã«ããŸããã æéäžè¶³ã®ãããEP4CE6ã¹ã¿ãŒã¿ãŒããŒãããã¥ã¡ã³ã2ã®ã³ãŒãã䜿çšããŸããã ãã®ã¢ãžã¥ãŒã«ã¯ããã£ã¹ãã¬ã€ã«16鲿°ãåºåããŸãã
ã²ãŒã ããžãã¯
éçºäžã«ããã€ãã®ã¢ãããŒãã詊ããŸããããå¿
èŠãªã¡ã¢ãªéãæå°éã§ãããŒããŠã§ã¢ã§ã®å®è£
ãç°¡åã§ã䞊åèšç®ã®ã¡ãªãããåŸãããã¢ãããŒãã«ãªããŸããã
ã¢ãžã¥ãŒã«ã¯ããã€ãã®æ©èœãå®è¡ããŸãã VGAã¯å·Šäžããå³äžã«ç§»åããåã¯ããã¯ãµã€ã¯ã«ã§ãã¯ã»ã«ãæç»ããããããã¯ã»ã«ã®è²ãçæããVGA_Drawã¢ãžã¥ãŒã«ã¯ãçŸåšã®åº§æšã«äœ¿çšããè²ãèå¥ããå¿
èŠããããŸãã ããã¯ãã²ãŒã ããžãã¯ã¢ãžã¥ãŒã«ãåºåãããã®ã§ã-æå®ããã座æšã®ãšã³ãã£ãã£ã³ãŒãã§ãã
ããã«ãå
šç»é¢ãæç»ãããåŸã«ã®ã¿ã²ãŒã ã®ç¶æ
ãæŽæ°ããå¿
èŠããããŸãã game_upd_clkã¢ãžã¥ãŒã«ã«ãã£ãŠçæãããä¿¡å·ã¯ãæŽæ°ããã¿ã€ãã³ã°ã決å®ããããã«äœ¿çšãããŸãã
ã²ãŒã ã®ç¶æ
ã²ãŒã ã®ç¶æ
ã¯ä»¥äžã§æ§æãããŸãïŒ
- ããã®é ã®åº§æš
- ããã®å°Ÿã®åº§æšã®é
åã å®è£
ã§ã¯ãé
åã¯128èŠçŽ ã«å¶éãããŠããŸã
- å°Ÿã®æ°
- ãªã³ãŽã®åº§æš
- ã²ãŒã ãªãŒããŒãã©ã°
- ã²ãŒã åã¡ãã©ã°
ã²ãŒã ã®ç¶æ
ã®æŽæ°ã«ã¯ãããã€ãã®æ®µéãå«ãŸããŸãã
- ç¹å®ã®æ¹åã«åºã¥ããŠãããã®é ãæ°ãã座æšã«ç§»åããŸãã 座æšã端ã«ãããããã«å€æŽããå¿
èŠãããããšã倿ããå Žåãé ã¯ç»é¢ã®å¥ã®ç«¯ã«ãžã£ã³ãããå¿
èŠããããŸãã ããšãã°ãæ¹åã¯å·Šã«èšå®ãããçŸåšã®X座æšã¯0ã§ãããããã£ãŠãæ°ããX座æšã¯æåŸã®æ°Žå¹³ã¢ãã¬ã¹ãšçãããªããŸãã
- ããã®é ã®æ°ãã座æšã¯ããªã³ãŽã®åº§æšã«å¯ŸããŠãã¹ããããŸãã
2.1ã ããããçãããé
åããã£ã±ãã§ãªãå Žåã¯ãé
åã«æ°ããããŒã«ã远å ããããŒã«ã«ãŠã³ã¿ãŒãã€ã³ã¯ãªã¡ã³ãããŸãã ã«ãŠã³ã¿ãŒãæé«å€ïŒãã®å Žåã¯128ïŒã«éãããšãã²ãŒã åã¡ãã©ã°ãèšå®ãããŸããã€ãŸããã¹ããŒã¯ã¯ããä»¥äžæé·ã§ãããã²ãŒã ã¯ç¶è¡ãããŸãã æ°ããå°Ÿã¯ãããã®é ã®ä»¥åã®åº§æšã«é
眮ãããŸãã ãªã³ãŽãããã«é
眮ããã«ã¯ãXãšYã®ã©ã³ãã 座æšãååŸããå¿
èŠããããŸãã
2.2ã ããããçãããªãå Žåã飿¥ããå°Ÿã®åº§æšãé çªã«äº€æããŸãã ïŒn + 1ïŒ-thã®åã«nçªç®ã®ããŒã«ã远å ãããå Žåãnçªç®ã®ããŒã«ã¯nçªç®ã®åº§æšãåãåããŸãã æåã®å°Ÿã¯ãé ã®å€ã座æšãåãåããŸãã - ããã®é ã®æ°ãã座æšãå°Ÿã®åº§æšãšäžèŽãããã©ããã確èªããŸãã ãã®å Žåãã²ãŒã ãªãŒããŒãã©ã°ãç«ãŠãããã²ãŒã ã¯åæ¢ããŸãã
ã©ã³ãã 座æšçæ
6ãããã®ç·åœ¢ãã£ãŒãããã¯ã·ããã·ããã¬ãžã¹ã¿ïŒLFSRïŒ 6ã«ãã£ãŠçæãããã©ã³ãã ããããåãããšã«ãã£ãŠçæãããä¹±æ°ã æ°åãç»é¢ã«åããããã«ããããã¯ã²ãŒã ã°ãªããã®æ¬¡å
ã§åå²ãããæ®ããååŸãããŸãã
ãããã«
8é±éã®äœæ¥ã®åŸããããžã§ã¯ãã¯æ£åžžã«å®è£
ãããŸããã ã²ãŒã éçºã®çµéšããããFPGAçšã®ãSnakeãã²ãŒã ã®æ¥œããããŒãžã§ã³ã«ãªããŸããã ã²ãŒã ã¯ãã¬ã€å¯èœã§ãããããã°ã©ãã³ã°ãã¢ãŒããã¯ãã£ã®èšèšããœããã¹ãã«ã®ã¹ãã«ãåäžããŸããã
æ¿èªãããã»ã°ã¡ã³ã
æ·±ãç¥èãšãããå®è·µããæ©äŒãäžããŠãããææã ãã³ããã»ãã¡ãã ãšã¢ã¬ã¯ãµã³ãã«ã»ãã«ããœãã«ç¹å¥ãªæè¬ãšæè¬ã衚æããããšæããŸãã ãããžã§ã¯ãã§äœ¿çšãããéèŠãªããŒããŠã§ã¢ãæäŸããŠãããVladislav Ostankovichãšããããã°ãæ¯æŽããŠãããTemur Kholmatovã«å¿ããæè¬ããŸãã ã¢ãã¹ã¿ã·ã€ãã€ã³ãã²ãŒã ã®ããã«çŸããã¹ãã©ã€ããæããããšãå¿ããªãã§ãã ããã ãŸãããã®èšäºã®æ ¡æ£ãšç·šéã«ã€ããŠã¯ã Rabab Maroufã«æ¬æã衚ããããšæããŸãã
ã²ãŒã ã®ãã¹ããå©ããèšé²ãç«ãŠãããšãããã¹ãŠã®äººã
ã«æè¬ããŸãã ããªãããããæ¥œããããšãé¡ã£ãŠããŸãïŒ
åç
§è³æ
[1]ïŒ Githubã®ãããžã§ã¯ã
[2]ïŒ [FPGA] EP4CE6ã¹ã¿ãŒã¿ãŒããŒãã®ããã¥ã¡ã³ã
[3]ïŒ åå§åš
[4]ïŒ åè·¯ãã¢ããªã³ã°ããããã®ããŒã«
[5]ïŒ FPGAã¢ã«ãã©Cyclone IIIçšVGAã¢ããã¿ãŒ
[6]ïŒ ãŠã£ãããã£ã¢ã®ç·åœ¢ãã£ãŒãããã¯ã·ããã¬ãžã¹ã¿ïŒLFSRïŒ
FPGAã®LFSR-VHDLããã³Verilogã³ãŒã
ãªã³ãŽã®ãã¯ã¹ãã£
ä¹±æ°ãçæããã¢ã€ãã¢
ãã«ããã«ã«ãSãïŒ2003ïŒã Verilog HDLïŒããžã¿ã«èšèšããã³åæã¬ã€ãã第2çã