Example Image´ó·¢28

ÔÚÕâÀï¸æËßÎÒÃÇÄúµÄÐèÇó°É

ÎÒÃÇ¿ÉÒÔ¸ü¿ìµÄÏàʶÄúµÄÐèÇó
ÆóÒµÈ˲ÅÕÐÆ¸ÐèÇó·´Ïì

È˲ÅÐèÇó


ÁªÏµÈË&ÁªÏµ·½·¨


ÔÚÕâÀï¸æËßÎÒÃÇÄúµÄÐèÇó°É

ÎÒÃÇ¿ÉÒÔ¸ü¿ìµÄÏàʶÄúµÄÐèÇó
ÆóÒµÍÅÅà±íµ¥
´ó·¢28¡¤(ÖйúÓÎ)¹Ù·½ÍøÕ¾

FPGA ѧϰÄÑÌâµÄÉî²ãÔµ¹ÊÔ­ÓÉÆÊÎöÓë½â¾ö·¾¶

FPGA ѧϰÄÑÌâµÄÉî²ãÔµ¹ÊÔ­ÓÉÆÊÎöÓë½â¾ö·¾¶

FPGA ÄÚ²¿¿É±à³ÌÂß¼­µ¥Î»Ó뻥Á¬×ÊÔ´½á¹¹Ê¾Òâͼ

Ò»¡¢FPGA ¿É±à³ÌʵÖʵÄÈÏÖªÎóÇø

1. Ó²¼þ¿É±à³ÌµÄµ×²ãÂß¼­
FPGA µÄ¿É±à³ÌÐÔÔ´ÓÚÆäÆæÒìµÄÎïÀí½á¹¹£¬£¬£¬£¬ÊµÖÊÉÏÊÇʹÓô洢Æ÷µÄ״̬¿ØÖƵç·ÅþÁ¬·½·¨£¬£¬£¬£¬¶ø·ÇÈí¼þÒâÒåÉϵÄÖ¸ÁîÖ´ÐС£¡£¡£ ¡£Òªº¦ÒªÃ÷È·Èý¸ö½¹µã×é¼þ£º

¿É±à³ÌÂß¼­µ¥Î» (CLB)£ºÓɲéÕÒ±í (LUT) + ¼Ä´æÆ÷×é³É

  • 4ÊäÈëLUTʵÖÊÉÏÊÇÒ»¸ö16×1λµÄSRAM£¬£¬£¬£¬´æ´¢ËùÓÐÊäÈë×éºÏ¶ÔÓ¦µÄÊä³ö
  • Àý£ºÊµÏÖÂß¼­º¯Êý F = A&B|C^D£¬£¬£¬£¬LUT½«´æ´¢ËùÓÐ16ÖÖÊäÈë×éºÏµÄЧ¹û

¿É±à³Ì»¥Á¬×ÊÔ´£ºÓÉ¿ÉÉèÖÿª¹Ø¾ØÕó×é³ÉµÄ²¼ÏßͨµÀ

¿É±à³ÌIOB£ºÖ§³Ö¶àÖÖµçÆ½±ê×¼ºÍÊäÈëÊä³öģʽ

  • °üÀ¨ÊäÈ뻺³å¡¢Êä³öÇý¶¯¡¢DDR¼Ä´æÆ÷µÈÄ£¿£¿£¿£¿£¿é

2. ÓëÈí¼þ±à³ÌµÄʵÖÊÇø±ð

ά¶ÈÈí¼þ±à³ÌFPGA±à³Ì
Ö´Ðлù´¡Ö¸ÁîÐòÁÐÇý¶¯CPUÖ´ÐÐÓ²¼þµçÂ·ÖØ¹¹
²¢ÐÐÐÔ˳ÐòÖ´ÐУ¨¶àÏß³ÌΪα²¢ÐУ©ÕæÕýµÄÎïÀí²¢ÐÐ
ʱ¼äÈ·¶¨ÐÔÊܲÙ×÷ϵͳµ÷ÀíÓ°ÏìÑÏ¿áʱÐòÔ¼Êø
¿ª·¢ÊÓ½ÇËã·¨Á÷³ÌÉè¼ÆÓ²¼þµç·Éè¼Æ

3. ³£¼ûÈÏÖªÎó²î°¸Àý

  • ¹ýʧÈÏÖª£ºÒÔΪ always @(posedge clk) ÀàËÆÈí¼þº¯ÊýŲÓÃ
  • ׼ȷÃ÷È·£ºÏÖʵÌìÉúµÄÊÇÎïÀí±£´æµÄ´¥·¢Æ÷ÕóÁУ¬£¬£¬£¬Ã¿¸öʱÖÓÑØËùÓмĴæÆ÷ͬʱÐж¯

¶þ¡¢HDL ÓïÑÔµÄÃ÷È·ÏÝÚå

1. Ó²¼þÐÎò vs Èí¼þÉè¼Æ
Verilog/VHDL ʵÖÊÊÇÓ²¼þ½á¹¹µÄÎı¾»¯±í´ï£¬£¬£¬£¬ÐèÒª½¨ÉèÒÔ϶ÔÓ¦¹ØÏµ£º

// ¿´ËƼòÆÓµÄ¸³ÖµÓï¾ä
assign out = a & b; 

// ÏÖʵÌìÉúµÄÓ²¼þ½á¹¹
      a
      ©¦
      ©À©¤©´
      ©¦&©À©¤©¤ out
      ©¸©¤©È
        b

2. ¿É×ÛºÏÓë²»¿É×ۺϵĽçÏß

´úÂëÀàÐÍÓ²¼þ¶ÔÓ¦°¸Àý
¿É×ۺϴúÂëÖ±½ÓÓ³ÉäΪÎïÀíµç·assign¡¢always @(posedge clk)
²»¿É×ۺϴúÂë½öÓÃÓÚ·ÂÕæÑéÖ¤#ÑÓ³ÙÓï¾ä¡¢initial¿é

3. µä·¶Ã÷È·ÎóÇø

  • ÛÕ±Õ/·ÇÛÕ±Õ¸³Öµ»ìÏý£º
// ¹ýʧÓ÷¨£¨±¬·¢Ëø´æÆ÷£©
always @(*) begin
    if(sel) q = a;
    // ȱÉÙelse·ÖÖ§
end

// ׼ȷÓ÷¨£¨×éºÏÂß¼­ÍêÕû¸³Öµ£©
always @(*) begin
    q = sel ? a : b; 
end

Èý¡¢FPGA Ó¦ÓÃÆ«ÏòÓë¼¼ÄܾØÕó

1. Èý´óÓ¦ÓÃÁìÓò±ÈÕÕ

Æ«Ïò½¹µãÐèÇóµä·¶Ó¦Óó¡¾°
¸ßËÙ½Ó¿ÚЭÒéÃ÷È·¡¢ÐźÅÍêÕûÐÔ100GÒÔÌ«Íø¡¢PCIe Gen4
Êý×ÖÐźŴ¦Öóͷ£Ë㷨ת»¯¡¢×ÊÔ´ÓÅ»¯5G²¨Êø³ÉÐΡ¢Ò½Ñ§Ó°ÏñÖØÐÞ
SOPCϵͳÈíÓ²¼þЭͬÉè¼Æ¹¤ÒµÊÓ¾õ¿ØÖÆÆ÷¡¢ÖÇÄÜÍø¹Ø

2. ¼¼ÄÜÉú³¤õ辶ͼ

graph LR
A[Êý×ֵ緻ù´¡] --> B[HDLÓ²¼þÐÎò]
B --> C[FPGA¼Ü¹¹Ã÷È·]
C --> D[ʱÐòÆÊÎöÓëÔ¼Êø]
D --> E[ϵͳ¼¶Éè¼Æ]
E --> F[ÁìÓòר¼Ò]

ËÄ¡¢Êý×ÖÂß¼­µÄ½¹µãְλ

1. »ù´¡ÀíÂÛµÄÒªº¦×÷ÓÃ

  • ¿¨ÅµÍ¼¼ò»¯£ºÓÅ»¯×éºÏÂß¼­×ÊÔ´
  • ״̬»úÉè¼Æ£ºFSMµÄ½áʵÐÔʵÏÖ
  • ʱÐòÆÊÎö£º½¨Éè/¼á³Öʱ¼äÅÌËã

2. µä·¶Éè¼ÆÈ±Ïݰ¸Àý

// Òì²½¸´Î»µ¼ÖÂʱÐòÎÊÌâ
always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        cnt <= 0;  // ¸´Î»ÐźÅÓëʱÖÓÓò²î±ð²½
    end else begin
        cnt <= cnt + 1;
    end
end

// ׼ȷ×ö·¨£ºÍ¬²½¸´Î»»òÌí¼Ó¸´Î»Í¬²½Æ÷

Îå¡¢Í»ÆÆÑ§Ï°Æ¿¾±µÄʵ¼ù¼Æ»®

1. ½¥½øÊ½ÊµÑéϵͳ

½×¶ÎʵÑéÏîĿѵÁ·Öصã
ÈëÃÅLEDÁ÷Ë®µÆ»ù´¡¹¤³Ì½¨Éè¡¢¹Ü½ÅÔ¼Êø
½ø½×UARTͨѶЭÒéʵÏÖ״̬»úÉè¼Æ¡¢Ê±ÐòÆÊÎö
Ìá¸ßHDMIÊÓÆµ½Ó¿ÚÇý¶¯IPºËʹÓᢸßËÙÐźŴ¦Öóͷ£
ÐÑĿǧÕ×ÒÔÌ«ÍøÊý¾Ýת·¢ÏµÍ³¼¯³É¡¢×ÊÔ´ÓÅ»¯

2. ÍÆ¼ö¿ª·¢ÇéÐÎÉèÖÃ

  • Ó²¼þƽ̨£ºXilinx Zynq-7000ϵÁпª·¢°å£¨PS+PLЭͬ£©
  • ¹¤¾ßÁ´£º
graph LR
Vivado --> HLS(¸ßÌõÀí×ÛºÏ)
Vivado --> SDSoC(Òì¹¹±à³Ì)
Vivado --> Vitis(AI¼ÓËÙ¿ª·¢)

3. Òªº¦µ÷ÊÔ¼¼ÇÉ

  • ILAÔÚÏßÂß¼­ÆÊÎöÒÇ£ºÊµÊ±²¶»ñÄÚ²¿ÐźÅ
  • Tcl¾ç±¾×Ô¶¯»¯£º
# ×Ô¶¯½á¹¹²¼Ï߾籾ʾÀý
synth_design -top top_module
opt_design
place_design
route_design
  • ʱÐòÔ¼Êø¹æ·¶£º
create_clock -period 10 [get_ports clk]
set_input_delay -max 2 [get_ports data_in] -clock clk

Áù¡¢Ñ§Ï°×ÊÔ´ÍÆ¼ö

1. ¾­µä¿Î±¾±ÈÕÕ

ÊéÃûÌØÉ«ÊÊÓý׶Î
¡¶FPGAÔ­ÀíÓë½á¹¹¡·ÉîÈëÆÊÎöоƬ¼Ü¹¹Öм¶½ø½×
¡¶VerilogÊý×ÖϵͳÉè¼Æ½Ì³Ì¡·´úÂëÓëÓ²¼þÓ³ÉäÇåÎúÈëÃÅʵ¼ù
¡¶¸ßËÙÊý×ÖÉè¼Æ¡·ÐźÅÍêÕûÐÔרÌâ¸ßËÙ½Ó¿Ú¿ª·¢

2. ¿ªÔ´ÏîÄ¿²Î¿¼

OpenCores ÉçÇøµÄ£º

  • Wishbone×ÜÏß¿ØÖÆÆ÷
  • AES¼ÓÃܼÓËÙºË
  • Éñ¾­ÍøÂçÍÆÀíÒýÇæ

3. ÔÚÏßѧϰƽ̨

  • Xilinx Academy£ºÌṩ´ÓÈëÃŵ½×¨¼ÒµÄϵͳ»¯¿Î³Ì
  • Hackaday FPGA רÌâ£ºÇ°ÑØÏîĿʵ¼ù·ÖÏí

Æß¡¢Ö°ÒµÉú³¤½¨Òé

1. ¸ÚλÄÜÁ¦ÐèÇó¾ØÕó

¸ÚλÀàÐͽ¹µãÄÜÁ¦ÒªÇó
FPGAÔ­ÐÍÑéÖ¤ÐèÇóÆÊÎöÄÜÁ¦¡¢IPÕûºÏÄÜÁ¦
ͨѶϵͳ¿ª·¢Ð­ÒéÕ»Ã÷È·¡¢¸ßËÙ½Ó¿Úµ÷ÊÔ
Ëã·¨¼ÓËÙʵÏÖMATLAB/CÄ£×Óת»¯¡¢HLSÓÅ»¯¼¼ÇÉ

2. ¼¼ÊõÑݽøÇ÷ÊÆ

  • Òì¹¹ÅÌË㣺FPGA+CPU+GPUЭͬ¼Ü¹¹
  • AI±ßÑØÅÌË㣺ÇáÁ¿»¯Éñ¾­ÍøÂç°²ÅÅ
  • Á¿×ÓÅÌËã½Ó¿Ú£ºµÍοØÖƵç·ʵÏÖ

ͨ¹ýϵͳÐԵع¥¿ËÉÏÊöѧϰÄѵ㣬£¬£¬£¬½¨Éè׼ȷµÄÓ²¼þÍ·ÄÔ£¬£¬£¬£¬Á¬ÏµÒ»Á¬µÄ¹¤³Ìʵ¼ù£¬£¬£¬£¬ÈκÎѧϰÕß¶¼¿ÉÒÔÍ»ÆÆFPGAµÄÈëÃűÚÀÝ£¬£¬£¬£¬×îÖÕÔÚ¼¯´ó·¢28·Éè¼Æ¡¢Í¨Ñ¶ÏµÍ³¿ª·¢¡¢ÖÇÄÜÓ²¼þµÈÁìÓò»ñµÃ³¤×ãÉú³¤¡£¡£¡£ ¡£½¨ÒéÌìÌì°ü¹Ü2СʱÒÔÉϵÄʵ¼ùʱ¼ä£¬£¬£¬£¬Íê³ÉÖÁÉÙ5¸öÍêÕûÏîÄ¿ÖÜÆÚ£¨Éè¼Æ¡úʵÏÖ¡úµ÷ÊÔ¡úÓÅ»¯£©µÄѵÁ·Ñ­»·£¬£¬£¬£¬Öð²½×÷Óý³öÕæÕýµÄÓ²¼þ¹¤³ÌÄÜÁ¦¡£¡£¡£ ¡£

Èí¼þ±à³ÌÓë FPGA Ó²¼þ±à³ÌµÄ½¹µãÇø±ð±ÈÕÕ±í
´ó·¢28¡¤(ÖйúÓÎ)¹Ù·½ÍøÕ¾
¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿