[¤³¤Î¥Ú¡¼¥¸¤ÎÊÔ½¸ÍúÎò]

Åŵ¤²óÏ©/HDL/Verilog¤ÇÈȤ·¤¬¤Á¤Êµ­½Ò¥ß¥¹

Top / Åŵ¤²óÏ© / HDL / Verilog¤ÇÈȤ·¤¬¤Á¤Êµ­½Ò¥ß¥¹

¸ø³«¥á¥â

°Õ¿Þ

¥¤¥ó¥×¥ê¥á¥ó¥È»þ¤Î¥ï¡¼¥Ë¥ó¥°¤ò¤¦¤Þ¤¯¸«¤ëÊýË¡¤¬Ê¬¤«¤é¤º¡¢ ´Êñ¤Êµ­½Ò¥ß¥¹¤Î¤»¤¤¤Ç£²¡¤£³»þ´Ö¤ò̵Â̤ˤ¹¤ë¤³¤È¤¬¤·¤Ð¤·¤Ð¤Ê¤Î¤Ç¡¢ ¤¢¤ê¤¬¤Á¤Ê¥ß¥¹¤ä¤½¤ì¤Ø¤ÎÂнèË¡¤ò¤³¤³¤Ëµ­½Ò¤·¤Æ¡¢Æüº¢¤«¤éÃí°Õ¤·¤è¤¦¤È¤¤¤¦»»ÃʤǤ¹¡£

Àë¸À¤µ¤ì¤Æ¤¤¤Ê¤¤¿®¹æÀþ¤¬Éý£±¤Î wire ¤È¤·¤Æ²ò¼á¤µ¤ì¤ë

Verilog ¤Ç¤Ï¤³¤ì¤Ï¸À¸ì»ÅÍͤʤΤǡ¢·Ù¹ð¤â½Ð¤Ê¤¤¤Î¤Ç¤¹¤è¤Í¡£

¤³¤Î¤»¤¤¤Ç¡¢¥¯¥í¥Ã¥¯¤¬Àµ¤·¤¯·Ò¤¬¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¤ê¡¢ Éý¤Î¹­¤¤¥Ð¥¹Àþ¤Î¤Ï¤º¤¬£±¥Ó¥Ã¥ÈÌܤ·¤«·Ò¤¬¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¤ê¡¢ ¾ï¤Ëµã¤«¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

Àë¸À¤µ¤ì¤Æ¤¤¤Ê¤¤¿®¹æÀþ¤¬»È¤ï¤ì¤¿¤é¥¨¥é¡¼¤Ë¤¹¤ë¤«¡¢ ºÇÄã¤Ç¤â·Ù¹ð¤ò½Ð¤¹¥ª¥×¥·¥ç¥ó¤¬¤¢¤ì¤Ð¤«¤Ê¤ê³«È¯¤¬ ½çÄ´¤Ë¿Ê¤à¤È»×¤¦¤Î¤Ç¤¹¤¬¡¦¡¦¡¦

¸«¤Ä¤±¤é¤ì¤Æ¤¤¤Ê¤¤¤À¤±¤«¤â¤·¤ì¤Þ¤»¤ó¡©

ÂнèË¡

(2010/06/03 Äɵ­)

marsee ¤µ¤ó¤ËÂнèË¡¤ò¶µ¤¨¤Æ¤¤¤¿¤À¤­¤Þ¤·¤¿¡£

¥½¡¼¥¹¥³¡¼¥É¤ÎºÇ½é¤Ë

`default_nettype none

¤òµ­½Ò¤¹¤ì¤ÐÎɤ¤¤½¤¦¤Ç¡¢ÄêµÁ¤·¤Æ¤¤¤Ê¤¤¿®¹æ¤ò¥¨¥é¡¼¤Ë¤Ç¤­¤Þ¤¹¡£ Verilog 2001 °Ê¹ß¤Ç»È¤¨¤ë¤½¤¦¤Ç¤¹¡£

°Ê²¼¤ÎÃí°Õ¤â°ì½ï¤Ë¤¤¤¿¤À¤­¤Þ¤·¤¿¡£

Ãí°ÕÅÀ£±

marsee ¤µ¤ó¤è¤ê¡§

Xilinx¤Î¥é¥¤¥Ö¥é¥ê¤Ê¤É¤Ç¤Ï¡¢1¥Ó¥Ã¥È¤Îwire¤ÏÄêµÁ¤·¤Æ¤¤¤Ê¤¤¤³¤È¤â¤¢¤ë¤Î¤Ç¡¢

¥³¥ó¥Ñ¥¤¥ë¤Î½çÈ֤ˤè¤Ã¤Æ¤Ï¡¢¤½¤³¤Ç¥¨¥é¡¼¤Ë¤Ê¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£

¤½¤³¤Ç¡¢ºÇ¸å¤Ë`default_nettype wire¤ò½ñ¤¤¤Æ¤ª¤¯¤ÈÎɤ¤¤È»×¤¤¤Þ¤¹¡£

¤Ä¤Þ¤ê¡¢

LANG:verilog

`default_nettype none

(Verilog¤Î²óÏ©ËÜÂÎ)

`default_nettype wire

¤Ç¤¹¡£

Ãí°ÕÅÀ£²

¤Ç¡¢¤â¤¦°ì¤Ä¼«Ê¬¤Ç¸«¤Ä¤±¤¿Ãí°ÕÅÀ¤Ç¤¹¤¬¡¢

http://japan.xilinx.com/support/answers/34811.htm

¤Ë¤¢¤ë¤È¤ª¤ê¡¢`default_nettype none ¤ÎÉûºîÍѤȤ·¤Æ¡¢¼¡¤Î¥³¡¼¥É¤¬¥³¥ó¥Ñ¥¤¥ë¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£

`default_nettype none
module my_module (
  input    clk,
  input    reset,
  input    data_in ,
  output   data_out
);
  ...

endmodule

¼¡¤Î¤è¤¦¤Ë½ñ¤±¤Ð¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤»¤ó¡£

`default_nettype none
module my_module (
  input wire clk,
  input wire reset,
  input wire data_in ,
  output wire data_out
);
  ...

endmodule

¸½ºß¤Î½ê¡¢Implementation »þ¤Ë¾åµ­¥³¡¼¥É¤¬¥¨¥é¡¼¤Ë¤Ê¤ë¤Î¤Ï Virtex-6 ¤È Spartan-6 FPGA ¤È¤¤¤Ã¤¿ºÇ¿·¤Î FPGA ¤ËÂФ·¤Æ¤Î¤ß¤Î¤è¤¦¤Ç¤¹¡£ Spartan 3A DSP ¤Ç¤Ï¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£

¤¿¤À¡¢ISim ¤Ç¤Ï Spartan 3 ¤Ç¤âºÇ¿·¤Î¥Ñ¡¼¥µ¡¼¤¬»È¤ï¤ì¤ë¤è¤¦¤Ç¡¢ ¤Û¤Ü¤¹¤Ù¤Æ¤Î¥â¥¸¥å¡¼¥ë¤Ç¥¨¥é¡¼¤¬½Ð¤Þ¤¯¤Ã¤Æ¶Ã¤­¤Þ¤·¤¿¡£

º£¸å¤Î¤³¤È¤â¹Í¤¨¤ë¤È¡¢input / output ¤Ç wire ¤ò¾Êά¤¹¤ë¤Î¤Ï¤ä¤á¤¿Êý¤¬Îɤ¤¤è¤¦¤Ç¤¹¡£

¡¦¡¦¡¦¤¦¡¼¤ó¡¢¤É¤³¤«¤Ç wire ¤òÆþ¤ì¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ë¤³¤È¤â¤¢¤Ã¤¿¤è¤¦¤Ê¡©¡©¡©

ÂнèË¡£±

¤½¤³¤½¤³°ÂÁ´¤ÊÂнèË¡¤Ï `define ¤ò»È¤¦ÊýË¡¤Ç¡¢

`default_nettype none
(ÆâÍÆ)
`default_nettype wire

¤ÎÂå¤ï¤ê¤Ë

`ifdef DEFAULT_NETTYPE_NONE
`default_nettype none
`endif
(ÆâÍÆ)
`default_nettype wire

¤È¤·¤Æ¤ª¤¤¤Æ¡¢¥³¥ó¥Ñ¥¤¥é¥ª¥×¥·¥ç¥ó¤Ç DEFAULT_NETTYPE_NONE ¤òÄêµÁ¤¹¤ë¤È¤¤¤¦ÊýË¡¤Ç¤¹¡£

DEFAULT_NETTYPE_WIRE ¤¬Ì¤ÄêµÁ¤Î¾ì¹ç¤Ë¤â¡¢ÌäÂê¤Ê¤¯¥³¥ó¥Ñ¥¤¥ë¤Ç¤­¤ë¤Î¤Ç¡¢ ¥³¡¼¥É¤ò¤½¤Î¤Þ¤ÞÊÌ¤Î¥×¥í¥¸¥§¥¯¥È¤Ë»ý¤Ã¤Æ¹Ô¤Ã¤Æ¤â¾¯¤·¤À¤±ÌµÂ̤ʥ³¡¼¥É¤¬¤¢¤ë ¤È¤¤¤¦¤À¤±¤Ç¼Â³²¤ÏÀ¸¤¸¤Þ¤»¤ó¡£

ÂнèË¡£²

wire ¤â reg ¤âÉÕ¤¤¤Æ¤¤¤Ê¤¤¤¹¤Ù¤Æ¤Î input/output/inout ¤Ë°ì³ç¤Ç wire ¤òÉÕ¤±¤Æ¤·¤Þ¤ª¤¦¡¢¤È¤¤¤¦Êý¿Ë¤Ç¤¢¤ì¤Ð¡¢

(^[ \t]*(input|output|inout)\>)(?! *(wire|reg))

¤È¤¤¤¦Àµµ¬É½¸½¤Ç¸¡º÷¤·¤Æ¡¢

\1 wire

¤ËÃÖ¤­´¹¤¨¤ì¤Ð¡¢¤«¤Ê¤ê¼ê´Ö¤¬¾Ê¤±¤Þ¤¹¡£

¤Þ¤º¤¤¤Î¤Ï function ¤ÎÃæ¿È¤Ê¤É¤Ç¡¢

function some_function;
    input a;
    input b;

¤Þ¤Ç

function some_function;
    input wire a;
    input wire b;

¤Ë¤µ¤ì¤Æ¤·¤Þ¤¦¤¿¤á¡¢¤½¤ÎÉôʬ¤À¤±¼êºî¶È¤Ç¸µ¤ËÌ᤹¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

±é»»»Ò¤ÎÍ¥Àè½ç°Ì

»²¹Í¡§http://homepage3.nifty.com/hdl_design/verilog_hdl2.htm

¥Ó¥Ã¥È±é»»»Ò¤ÈÅù¹æ

¥Ó¥Ã¥ÈÏÀÍý±é»»»Ò¤Î & ¤ä | ¤è¤ê¤âÅù¹æ¡¦ÉÔÅù¹æ¤ÎÊý¤¬Í¥Àè½ç°Ì¤¬ ¹â¤¤¤³¤È¤ò¤¹¤°¤Ë˺¤ì¤Æ¤·¤Þ¤¤¡¢Äˤ¤Ìܤò¸«¤Þ¤¹¡£

assign a = b == c & d;

¤³¤ì¤Ï¡¢

assign a = ( b == c ) & d;

¤È²ò¼á¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢

assign a = b == ( c & d );

¤È¤·¤¿¤±¤ì¤Ð¡¢³ç¸Ì¤Ïɬ¿Ü¤Ç¤¹¡£

Pascal ¤ä Ruby ¤Ç¤Ï¥Ó¥Ã¥ÈÏÀÍý±é»»¤¬Åù¹æ¤è¤ê¤â¶¯¤«¤Ã¤¿¤Î¤Ç¡¢ º£¤Ç¤â´ª°ã¤¤¤·¤Æ¸¶°ø¤¬Ê¬¤«¤é¤ºÅÓÊý¤ËÊë¤ì¤Þ¤¹¡£

C++ ¤ä C#, Java ¤â¥Ó¥Ã¥ÈÏÀÍý±é»»¤¬Åù¹æ¤è¤ê¼å¤¤¤Î¤Ç¡¢ ¤½¤Á¤é¤Ç¤â´Ö°ã¤¨¤Þ¤¯¤ê¤Ç¤¹¡Êµã

Åù¹æ¤È£³¹à±é»»»Ò

assign a = b == c ? d : e

¤Ï¡¢

assign a = ( b == c ) ? d : e

¤È²ò¼á¤µ¤ì¤ë¤Î¤Ç¡¢

assign a = b == ( c ? d : e )

¤È¤·¤¿¤±¤ì¤Ð³ç¸Ì¤Ïɬ¿Ü¤Ç¤¹¡£

¤³¤ì¤â·ë¹½¤ä¤é¤«¤·¤Þ¤¹¡£

£³¹à±é»»»Ò ? : ¤Ï¤¹¤Ù¤Æ¤Î±é»»»Ò¤ÎÃæ¤ÇºÇ¤âÍ¥Àè½ç°Ì¤¬Ä㤤¡¢¤È³Ð¤¨¤Æ¤ª¤±¤Ð¤¤¤¤¤Î¤Ç¤¹¤Í¡£

Èæ³Ó¤äÂåÆþ¤Ë¤ª¤±¤ë¿®¹æ¤Î¥Ó¥Ã¥È¿ô¤Î¼è¤ê°ã¤¤

¤Á¤ç¤Ã¤È¤¹¤°¤ËÎ㤬»×¤¤É⤫¤Ð¤Ê¤¤¤Î¤Ç¤¹¤¬¡¢

http://japan.xilinx.com/support/answers/33037.htm

¤Ë¤¢¤ëÏäȻ÷¤¿¤è¤¦¤Ê¾õ¶·¤Ç¡¢Äê¿ô¤ä¡¢±é»»·ë²Ì¤Î¥Ó¥Ã¥È¿ô¤¬¡¢ »×¤¤É⤫¤Ù¤¿¥Ó¥Ã¥È¿ô¤È°Û¤Ê¤ë¤¿¤á¤Ë¡¢²óÏ©¤¬»×¤Ã¤¿¤è¤¦¤Ëưºî¤·¤Ê¤¤¤³¤È¤¬¤·¤Ð¤·¤Ð¤¢¤ê¤Þ¤·¤¿¡£

ÂçÄñ¤Ï¡¢{ 8'h00, some_signal } ¤Î¤è¤¦¤ËÌÀ¼¨Åª¤Ë¿®¹æÉý¤Î³ÈÄ¥¤ò¹Ô¤¦¤³¤È¤Ç²ò·è¤¹¤ë¤Î¤Ç¤¹¤¬¡¢ °ì¸«Àµ¤·¤½¤¦¤Ç´Ö°ã¤Ã¤¿¼°¤ò½ñ¤¯¤³¤È¤¬¤Ç¤­¤Æ¤·¤Þ¤¦¤è¤¦¤Ê¤Î¤Ç¡¢Ãí°Õ¤¬É¬ÍפǤ¹¡£

¼ºÇÔÎã¤ò»×¤¤½Ð¤·¤¿¤éÄɵ­¤·¤Þ¤¹¡£

°ú¤­»»¤Ç¤Î·å¤¢¤Õ¤ì

marsee ¤µ¤ó¤Ë¶µ¤¨¤Æ¤â¤é¤Ã¤¿Îã¤Ç¤¹¡£
http://marsee101.blog19.fc2.com/blog-entry-763.html

Á°Äó¤È¤·¤Æ¡¢Verilog ¤Ç¤Ï¥Ó¥Ã¥ÈÉý¤ò»ØÄꤷ¤Ê¤¤À°¿ô¤Ï£³£²¥Ó¥Ã¥ÈÉý¤Ç¤¢¤ë¤È²¾Äꤵ¤ì¤Þ¤¹¡£

¤½¤·¤Æ¡¢±é»»¤Ç¤Ï¥Ó¥Ã¥ÈÉý¤Î¾®¤µ¤¤¿®¹æ¤òÂ礭¤¤¿®¹æ¤ÎÉý¤Ë¹ç¤ï¤»¤Æ¤«¤é·×»»¤¬¹Ô¤ï¤ì¤Þ¤¹¡£

¤·¤¿¤¬¤Ã¤Æ¡¢¼¡¤ÎÎã¤Ï rp == 8'h00, wp == 8'hff ¤Î»þ¡¢¸íưºî¤·¤Þ¤¹¡£

reg [7:0] wp, rp;
...
assign fifo_full = ( rp - 1 == wp ) ? 1 : 0;

¸íưºî¤Î¸¶°ø¤Ï¡¢rp - 1 == wp ¤Îɾ²Á¤¬°Ê²¼¤Î¤è¤¦¤Ë¹Ô¤ï¤ì¤ë¤¿¤á¤Ç¤¹¡£

  • 1 ¤Ï 32'h00000001 ¤È²ò¼á¤µ¤ì¤ë
  • rp ¤¬ 32'h00000001 ¤Ë¹ç¤ï¤»¤Æ { 24'h000000, rp } ¤Î·Á¤Ç 32 ¥Ó¥Ã¥ÈÉý¤Ë³ÈÄ¥¤µ¤ì¤ë
  • ¤½¤³¤«¤é 32'h00000001 ¤¬º¹¤·°ú¤«¤ì¤ë
  • wp ¤¬¤ä¤Ï¤ê 32 ¥Ó¥Ã¥ÈÉý¤Ë³ÈÄ¥¤µ¤ì¤Æ { 24'h000000, wp } ¤È¤Ê¤ë
  • ·ë²ÌŪ¤Ë { 24'h000000, rp } - 32'h00000001 == { 24'h000000, wp } ¤¬É¾²Á¤µ¤ì¤ë

rp == 8'h00 ¤Î»þ¡¢º¸ÊÕ¤Ï 32'hffffffff ¤È¤Ê¤Ã¤Æ¡¢±¦ÊդΠ32'h000000ff ¤È¤Ï°Û¤Ê¤ë¤Èɾ²Á¤µ¤ì¤ë¤Î¤Ç¤¹¤¬¡¢¤³¤ì¤Ï¥³¡¼¥É¤ò½ñ¤¤¤¿ marsee ¤µ¤ó¤Î°Õ¿Þ¤¹¤ë ¤È¤³¤í¤Ç¤Ï¤Ê¤«¤Ã¤¿¤È¤¤¤¦¤ªÏäǤ¹¡£

²óÈòºö¤Ï¡¢

assign fifo_full = ( rp - 8'h01 == wp ) ? 1'b1 : 1'b0;

¤Î¤è¤¦¤Ë¡¢³ÆÄê¿ô¤ËÀµ¤·¤¯Éý¤ò»ØÄꤹ¤ë¤³¤È¤Ç¤¹¡£

http://marsee101.blog19.fc2.com/blog-entry-763.html ¤Î¥³¥á¥ó¥È¤Ç¤Ï¡Ö­¤·»»¤Ê¤é¡¦¡¦¡¦¡× ¤È¤¤¤¦Ïäâ½Ð¤Æ¤¤¤ë¤Î¤Ç¤¹¤¬¡¢¥Ó¥Ã¥ÈÉý¤ò»ØÄꤷ¤Ê¤¤¤È­¤·»»¤Ç¤â¤¦¤Þ¤¯¹Ô¤«¤Ê¤¤¤Ç¤¹¤è¤Í¡£ º£ÅÙ¤Ï rp == 8'hff ¤Î»þ¤Ë rp + 1 == 32'h00000100 ¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¤È»×¤¤¤Þ¤¹¡£

¤Á¤ç¤Ã¤È½ñ¤­Êý¤ò̤äƤ·¤Þ¤¦¤Î¤¬¥Ó¥Ã¥ÈÉý¤¬ parameter ¤Ç²ÄÊѤξì¹ç¤Ç¤·¤ç¤¦¤«¡£ ¸«Ä¾¤·¤Æ¤ß¤ë¤È¡¢¼«ºî¤Î [[È󯱴ü FIFO>Åŵ¤²óÏ©/HDL/È󯱴ü¿®¹æ¤ò°·¤¦¤¿¤á¤Î´í¤¦¤¤Verilog¥é¥¤¥Ö¥é¥ê#È󯱴ü FIFO]] ¤Ç¤Ï°Ê²¼¤Î¤è¤¦¤Ê½ñ¤­Êý¤ò¤·¤Æ¤Þ¤·¤¿¡£

parameter DEPTH_BITS = 8;

reg [DEPTH_BITS-1:0] wp, rp;
wire [DEPTH_BITS-1:0] one = 1;
...
assign fifo_full = ( rp - one == wp ) ? 1 : 0;

¤È¤¤¤¦¤«¡¢¼«ºî¤Î¥³¡¼¥É¤Ç¤Ï°Ê²¼¤Î¤è¤¦¤Ë½ñ¤¤¤Æ¤¢¤ë¤Î¤Ç¤¹¤¬¡¢ ¤³¤³¤Þ¤Ç¤¹¤ë¤Î¤ÏÀµ¤·¤¤¤È¤Ï¤¤¤¨µÕ¤Ë²ÄÆÉÀ­¤¬Äã²¼¤·¤Æ¤¤¤ëµ¤¤¬¤·¤Æ¤­¤Þ¤·¤¿¡£
¡ô¼ÂºÝ¤Ë¤Ï¥Ó¥Ã¥È¿ô¤ò¿ô¤¨´Ö°ã¤Ã¤Æ¤¤¤¿¤Î¤ò¹²¤Æ¤ÆÄ¾¤·¤Þ¤·¤¿(´À

wire [DEPTH_BITS-1:0] one  = { {(DEPTH_BITS-1){1'b0}}, 1'b1 };

signed ¤È unsigned ¤ò¥·¥¹¥Æ¥à¥¿¥¹¥¯¤ÇÊÑ´¹¤Ç¤­¤ë¤è¤¦¤Ë¡¢ ²¿¤«¸À¸ì¾å¤¦¤Þ¤¯¥Ó¥Ã¥ÈÉý¤ò¥Ñ¥é¥á¡¼¥¿¤Ç½ñ¤¯ÊýË¡¤¬¤¢¤ë¤È¤¤¤¤¤Î¤Ç¤¹¤¬¡¢¡¢¡¢

(2010/06/12Äɵ­) µÕ¤Ë¥Ó¥Ã¥ÈÉý¤Î¼«Æ°³ÈÄ¥¤ò¤¦¤Þ¤¯ÍøÍѤ¹¤ë¤³¤È¤ò¹Í¤¨¤ë¤È¡¢

assign fifo_full = rp - 1'b1 == wp;

¤¬°ìÈÖ Verilog ¤Ã¤Ý¤¤½ñ¤­Êý¤Ê¤Î¤«¤â¤·¤ì¤Þ¤»¤ó¤Í¡£

Veritak ¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¥Ú¡¼¥¸¤Î²òÀâ

Verilog ±é»»»Ò¤ÎºÙ¤«¤¤Ãí°Õ»ö¹à¤Ï¡¢Veritak ¤Î verilog ¥Á¥å¡¼¥È¥ê¥¢¥ë
http://japanese.sugawara-systems.com/tutorial/verilog/framepage7.htm
¤Î£¸¾Ï¤òÆÉ¤à¤È°ìÄ̤ê¤Î¤³¤È¤òÊÙ¶¯¤Ç¤­¤Þ¤¹¤Í¡£

¤È¤Æ¤â¤¿¤á¤Ë¤Ê¤ê¤Þ¤¹¡£

¼°Ãæ¤Î¥Ó¥Ã¥ÈÉýµÚ¤ÓÉ乿¤Ë´Ø¤¹¤ë´ðËÜŪ¤Ê¹Í¤¨Êý¤Ï¡¢

  1. ¡Ö¼°Ãæ¤Ë¸½¤ì¤ë¿ôÃ͡פȡַë²Ì¤òÂåÆþ¤¹¤ëÀè¡×¤òÁ´¤ÆÈæ³Ó¤·¤Æ¡¢ ºÇÂç¤Î¥Ó¥Ã¥ÈÉý¤ò»ý¤Ä¿ôÃͤ˹ç¤ï¤»¡¢Á´¤Æ¤Î¿ôÃͤò¥Ó¥Ã¥È³ÈÄ¥¤·¤Æ¤«¤é±é»»¤ò»Ï¤á¤ë
  2. ±é»»¤ËÍѤ¤¤ë¤¹¤Ù¤Æ¤Î¿ôÃͤ¬É乿ÉÕ¤­¤Ç¤¢¤ì¤Ð¡ÊÂåÆþÀè¤Ï´Ø·¸¤Ê¤¤¡Ë¡¢¥Ó¥Ã¥È³ÈÄ¥¤ÏÉ乿ÉÕ¤­¤Ç¹Ô¤ï¤ì¡¢±é»»¤âÉ乿ÉÕ¤­¤Ç¹Ô¤ï¤ì¤ë
  3. £±¤Ä¤Ç¤âÉ乿¤Ê¤·¤¬´Þ¤Þ¤ì¤Æ¤¤¤ì¤Ð¡¢¤¹¤Ù¤Æ¤Î¥Ó¥Ã¥È³ÈÄ¥¤ä±é»»¤¬É乿¤Ê¤·¤Ç¹Ô¤ï¤ì¤ë
  4. ÂåÆþÀ褬±é»»·ë²Ì¤è¤ê¶¹¤¤¾ì¹ç¡¢±é»»·ë²Ì¤Î¾å°Ì¥Ó¥Ã¥È¤¬ÀÚ¤ê¼Î¤Æ¤é¤ì¤ë
  5. ¥Ó¥Ã¥ÈÉý¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤Äê¿ô¤Ï£³£²¥Ó¥Ã¥È°Ê¾å¤ÎÉý¤ò»ý¤Ä¤â¤Î¤È¤·¤Æ°·¤ï¤ì¤ë

¤È¤¤¤¦¤³¤È¤À¤½¤¦¤Ç¤¹¡£

ÇÝÉ÷´Û¡Ö£Ò£Ô£ÌÀß·×¥¹¥¿¥¤¥ë¥¬¥¤¥É¡×¤Ë¤è¤ë¤È¡¢¤³¤ì¤é¤Ë²Ã¤¨¤Æ

  • if ʸ¤Î¾ò·ï¼°¤Ê¤É¤Ï¡Ö·ë²Ì¤òÂåÆþ¤¹¤ëÀè¡×¤¬ÌÀ¼¨¤µ¤ì¤Ê¤¤¤¬¡¢ ÆâÉôŪ¤Ë¤Ï 32bit ¤¬²¾Äꤵ¤ì¤ë¤¿¤á¡¢ ¡Ö¼°Ãæ¤Ëɽ¤ì¤ë¿ôÃ͡פÀ¤±¤ò¸«¤Æ¤¤¤ë¤ÈͽÁۤǤ­¤Ê¤¤Â礭¤Ê¥Ó¥Ã¥È³ÈÄ¥¤¬À¸¤¸¤ë¤³¤È¤¬¤¢¤ë¡£
    ¡Ê¤¿¤Ö¤ó»°¹à±é»»»Ò "? :" ¤äÏÀÍý±é»»»Ò "&&", "||", "^^" ¤âƱ¤¸¡©¡Ë

¥·¥ß¥å¥ì¡¼¥·¥ç¥ó»þ¤Î RAM / ROM ¤Ø¤Î¥¢¥¯¥»¥¹

¼¡¤Î¥³¡¼¥É¤Ï FIFO ¤ÎÆÉ¤ß½Ð¤·Éôʬ¤òÁÛÄꤷ¤¿¤â¤Î¤Ç¤¹¤¬¡¢ ÆÃ¤Ë¡¢¥·¥ß¥å¥ì¡¼¥·¥ç¥ó¤Ç¤Ï´üÂÔÄ̤ê¤Ëư¤«¤Ê¤¤¾ì¹ç¤¬¤¢¤ë¤ß¤¿¤¤¤Ç¤¹¡£

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
parameter DATA_BITS = 8;
parameter DEPTH_BITS = 11;

reg [DATA_BITS-1:0] mem [0:2**DEPTH_BITS-1];
reg [DEPTH_BITS-1:0] rp;

always @(posedge clk) begin
    if (rst) begin
        rp <= 0;
    end else begin
        rp <= rp + 1;
    end
    odata <= mem[re ? rp+1 : rp];
end

ÌäÂ꤬¤¢¤ë¤Î¤Ï 13 ¹ÔÌܤˤʤê¤Þ¤¹¡£

¾åµ­¤Î¤È¤ª¤ê¡¢rp ¤¬ DEPTH_BITS ¥Ó¥Ã¥ÈÉý¤Ç¤¢¤Ã¤Æ¤â rp + 1 ¤Ï¡¢ 1 ¤¬ 32'd1 ¤È²ò¼á¤µ¤ì¤ë¤¿¤á¡¢±é»»·ë²Ì¤Ï 32 ¥Ó¥Ã¥ÈÉý¤È¤Ê¤ê¤Þ¤¹¡£

Ʊ¤¸¼°¤Î½Ð¤Æ¤¯¤ë 11 ¹ÔÌܤǤϡ¢rp ¤Ø¤ÎÂåÆþ»þ¤Ë¤³¤Î 32 ¥Ó¥Ã¥ÈÉý¤Î¿ôÃͤΠLSB ¤Î DEPTH_BITS ¥Ó¥Ã¥È¤¬¼è¤ê½Ð¤µ¤ì¤ë¤¿¤á¡¢¤½¤Î¤è¤¦¤Ë 32 ¥Ó¥Ã¥È¤Ç±é»»¤µ¤ì¤Æ¤â¼Â³²¤Ï¤¢¤ê¤Þ¤»¤ó¡£

¤È¤³¤í¤¬ mem[rp+1] ¤Ç¤Ï¤½¤Î¤è¤¦¤Ê±é»»·ë²Ì¤Ø¤Î¥Ó¥Ã¥ÈÉý¤Ø¤ÎÀ©¸Â¤¬ ¡Ê¾¯¤Ê¤¯¤È¤â¸À¸ì»ÅÍ;å¤Ï¡Ë¸ºß¤·¤Ê¤¤¤¿¤á¡¢ÌäÂ꤬ȯÀ¸¤·¤Þ¤¹¡£

rp == {DEPTH_BITS{1'b1}} ¤Î»þ¡¢rp + 1 ¤Ï 32 ¥Ó¥Ã¥ÈÉý¤Î 1 << DEPTH_BITS ¤ÈÅù¤·¤¤ÃͤȤʤꡢ¤½¤ì¤¬¤½¤Î¤Þ¤Þ mem ¤Ø¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹ ¤È¤·¤Æ»È¤ï¤ì¤Þ¤¹¡£¤¹¤ë¤È¡¢Àë¸À¤µ¤ì¤¿¥ì¥ó¥¸¤ò¥ª¡¼¥Ð¡¼¤·¤Æ¤·¤Þ¤¦¤¿¤á ¥·¥ß¥å¥ì¡¼¥¿¾å¤Ç¤Ï X ¤¬½ÐÎϤµ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

¾åµ­¥³¡¼¥É¤¬Ä̾ïÄ̤ê¹çÀ®¤µ¤ì¤ì¤Ð RAM ¤Ø¤Î¥¢¥É¥ì¥¹Àþ¤¬ DEPTH_BITS Éý¤È¤Ê¤ë¤Î¤Ç¡¢ ¥¢¥É¥ì¥¹ÃͤȤ·¤Æ¤Ï rp + 1 ¤Î LSB ¤Î DEPTH_BITS ¥Ó¥Ã¥È¤¬»È¤ï¤ì¤ë¤³¤È¤Ë¤Ê¤ê¡¢ ¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤¿£±¥Ó¥Ã¥È¤ÏÀÚ¤ê¼Î¤Æ¤é¤ì¡¢ ÁÛÄêÄ̤ê¥á¥â¥ê¥¢¥É¥ì¥¹£°¤ÎÃͤ¬½ÐÎϤµ¤ì¤Þ¤¹¡£

¤Ä¤Þ¤ê¡¢¾åµ­¤Î½ñ¤­Êý¤Ë¤è¤ëÌäÂê¤Ï¥·¥ß¥å¥ì¡¼¥·¥ç¥ó»þ¤Î¤ß¤·¤«¸½¤ì¤Ê¤¤¤Î¤Ç¤¹¤¬¡¢ ¤¤¤º¤ì¤Ë¤·¤Æ¤â¡¢¾åµ­¥³¡¼¥É¤Ë¤Ï²þÁ±¤Î;ÃϤ¬¤¢¤ê¤Þ¤¹¡£

¸å¤«¤éµ¤¤Å¤¤¤¿¤Î¤Ç¤¹¤¬¡¢¤³¤Î¼ê¤ÎÌäÂê¤ò̤Á³¤ËËɤ°¤¿¤á¡¢ ÇÛÎó¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤È¤·¤Æ¥Ó¥Ã¥ÈÉý¤ÎÂ礭¤¹¤®¤ëÃͤò¤·¤Æ¤¤¤·¤¿Éôʬ¤Ë¡¢ Synthesis »þ¤Ë¼¡¤Î·Ù¹ð¤¬½Ð¤ë¤è¤¦¤Ç¤¹¡£

Xst:1433 - Contents of array <mem> may be accessed with an index that
exceeds the array size. This could cause simulation mismatch.

²þÁ±ºö¤È¤·¤Æ¤Ï rp + 1 ¤ò

  • rp + {{(DEPTH_BITS-1){1'b0}}, 1'b1} ¤È½ñ¤¯
  • ¾¯¤·¼ê¤òÈ´¤¤¤Æ rp + 1'b1 ¤È½ñ¤¯
  • rp + 1 ¤ÎÃͤò°ìö DEPTH_BITS Éý¤Î wire ¤òÄ̤·¤Æ¤«¤é mem ¤ËÅϤ¹

¤È¤¤¤Ã¤¿ÊýË¡¤¬¹Í¤¨¤é¤ì¤ë¤È»×¤¤¤Þ¤¹¡£

±é»»·ë²Ì¤Î¥ª¡¼¥Ð¡¼¥Õ¥í¡¼

¼¡¤Î¼°¤Ï»×¤Ã¤¿Ä̤ê¤Ëư¤­¤Þ¤»¤ó¡£

¤¿¤Ã¤¯¤µ¤ó¤Î¥Ú¡¼¥¸¤Ë¤¢¤Ã¤¿¤Î¤ò¸«¤Æ¡¢¼«Ê¬¤Ç¤â¤ä¤é¤«¤·¤¿¤Î¤ò»×¤¤½Ð¤·¤Þ¤·¤¿¡£

reg [15:0] a, b, c;
c = (a + b) >> 1;

¤³¤ì¤Ï¡¢a + b ¤¬ 16 ¥Ó¥Ã¥ÈÉý¤Ç±é»»¤µ¤ì¤Æ¤«¤é >> 1 ¤µ¤ì¤ë¤¿¤á¡¢ a + b ¤Ç¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤¬µ¯¤­¤¿¾ì¹ç¤Ë¤Ï¥·¥Õ¥È¤ÎÁ°¤ËºÇ¾å°Ì¥Ó¥Ã¥È¤¬¼º¤ï¤ì¤Æ¤·¤Þ¤¦¤¿¤á¤Ç¤¹¡£

reg [15:0] a, b, c;
c = ( {1'b0, a} + {1'b0, b} ) >> 1;

¤Ê¤É¤È¤·¤Æ¡¢¾¯¤Ê¤¯¤È¤â°ìÊý¤ò 17 ¥Ó¥Ã¥ÈÉý¤Ë³ÈÄ¥¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£

32 ¥Ó¥Ã¥È°Ê¾å¤Î parameter

Verilog ¤Î parameter ¤Ï¥Þ¥¯¥í¤ÎÃÖ¤­´¹¤¨¤È¤Ï°Û¤Ê¤ê¸ÇÍ­¤Î¿®¹æÀþÉý¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£

¤·¤¿¤¬¤Ã¤Æ parameter ¤Ë¤Ï¥Ó¥Ã¥ÈÉý»ØÄ꤬²Äǽ¤Ê¤Î¤Ç¤¹¤¬¡¢ ¿¤¯¤Î¥µ¥ó¥×¥ë¤Ç¤Ï parameter ¤ä localparam ¤Ë¥Ó¥Ã¥ÈÉý¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£

¾¯¤Ê¤¯¤È¤â Xilinx ISE ¤Ç»î¤¹¸Â¤ê¡¢¥Ó¥Ã¥ÈÉý¤òÌÀ¼¨¤·¤Ê¤¤ parameter / localparam ¤Ï 32 ¥Ó¥Ã¥ÈÉý¤Ë¤Ê¤ë¤¿¤á¡¢¥Ñ¥é¥á¡¼¥¿¤È¤·¤Æ»ØÄꤵ¤ì¤¿Ãͤ¬°Õ¿Þ¤»¤ºÀÚ¤ê¼Î¤Æ¤é¤ì¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£

parameter ¤Ë 32 ¥Ó¥Ã¥È°Ê¾å¤ÎÃͤòÆþ¤ì¤ë²ÄǽÀ­¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï ¥Ó¥Ã¥ÈÉý»ØÄê¤ò˺¤ì¤Ê¤¤¤è¤¦¤Ë¤È³Ð¤¨¤Æ¤ª¤­¤Þ¤·¤ç¤¦¡£

module some_module #(
   parameter PARAM1 = 64'h123456789abcdef
) (
  ...

);
   // PARAM1 ¤Ï 32 ¥Ó¥Ã¥ÈÉý¤ËÀÚ¤êµÍ¤á¤é¤ì¤Æ¤·¤Þ¤¦

endmodule

¤³¤ì¤òËɤ°¤Ë¤Ï

module some_module #(
   parameter [63:0] PARAM1 = 64'h123456789abcdef
) (
  ...

);
   // PARAM1 ¤Ï 64 ¥Ó¥Ã¥ÈÉý¤È¤·¤Æ»È¤¨¤ë

endmodule

¤Ê¤É¤È¤·¤Æ¥Ó¥Ã¥ÈÉý¤òÌÀ¼¨¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

¼ÂÎã¤È¤·¤Æ¡¢ Ê£¿ô¥Ó¥Ã¥È¥Ð¡¼¥¸¥ç¥ó¤Î double_ff ¤Î½é´üÃͤòÍ¿¤¨¤ë parameter ¤Ë ¥Ó¥Ã¥ÈÉý»ØÄê¤ò»È¤Ã¤¿Îã¤òµó¤²¤Æ¤ª¤­¤Þ¤¹¡£

Åŵ¤²óÏ©/HDL/¥³¡¼¥ÉÃæ¤ËÀ©Ìó¤ò½ñ¤¯¤È¤­¤ÎÃí°ÕÅÀ#¥Ó¥Ã¥ÈÉý¤Î³ÈÄ¥

module double_ff #(
    parameter BITS = 1,
    parameter [BITS-1:0] INIT = 1'b0
) (
    input wire [BITS-1:0] idata,
    input wire oclk,
    output wire [BITS-1:0] odata
);
    generate
        genvar bit_i;
        for ( bit_i = 0; bit_i < BITS; bit_i = bit_i + 1 ) begin: bits
            double_ff_1bit #( (INIT >> bit_i) & 1 )
                double_ff_1bit (
                    .idata( idata[bit_i] ),
                    .oclk( oclk ),
                    .odata( odata[bit_i] )
                );
        end
    endgenerate
endmodule

¤³¤ì¤ÈƱÍͤˡ¢

    parameter PARAM1 = $signed(-1);

¤Ê¤É¤È¤·¤¿¾ì¹ç¡¢¤³¤ì¤Ï

    parameter [31:0] PARAM1 = 32'hffffffff;

¤ÈƱ¤¸°ÕÌ£¤Ç¡¢ÃÍ¤Ï default ¤Î unsigned ¤Ë¤Ê¤ë¤¿¤á¡¢ËÜÅö¤ËÉ乿ÉÕ¤­¤Ç°·¤¤¤¿¤¤»þ¤Ë¤Ï

    parameter signed [31:0] PARAM1 = -1;

¤È¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

¤³¤Î¤¢¤¿¤ê¤Ï

    `define PARAM1 $signed(-1)

¤È¤·¤¿¾ì¹ç¤ÈÂ礭¤¯°Û¤Ê¤ë¤¿¤áÃí°Õ¤¬É¬ÍפǤ¹¡£

ÁȤ߹ç¤ï¤»²óÏ©¤ò always ¤ä function ¤Ç½ñ¤¯ºÝ¤Ë¤¤¤í¤¤¤í¥ß¥¹¤ê¤ä¤¹¤¤

ÇÝÉ÷´Û¡Ö£Ò£Ô£ÌÀß·×¥¹¥¿¥¤¥ë¥¬¥¤¥É¡×¤Ç¤Ï¡¢ ÁȤ߹ç¤ï¤»²óÏ©¤òºîÀ®¤¹¤ë¤Ë¤Ï reg + always ¤¢¤ë¤¤¤Ï wire + assign + function ¤ò»È¤¦¤³¤È¤¬¿ä¾©¤µ¤ì¤Æ¤¤¤Þ¤·¤¿¡£

Î㤨¤Ð¡¢

wire S, M;
wire [3:0] A, B, C;
wire [3:0] Y;
always @(S or M or A or B or C) begin
  if ( S == 1'b0 ) begin
    if ( M == 1'b0 ) begin
      Y = A;
    end else begin
      Y = B;
    end
  end else begin
    Y = C;
  end
end

¤È¤«¡¢

function [3:0] CalcY;
input S, M;
input [3:0] A, B, C;
  begin
    if ( S == 1'b0 ) begin
      if ( M == 1'b0 ) begin
        CalcY = A;
      end else begin
        CalcY = B;
      end
    end else begin
      CalcY = C;
    end
  end
endfunction

wire S, M;
wire [3:0] A, B, C;
wire [3:0] Y;
assign Y = CalcY(S, M, A, B, C);

¤È¤¤¤Ã¤¿¶ñ¹ç¤Ç¤¹¡£

¤³¤ì¤é¤Îµ­½Ò¤Î·çÅÀ¤È¤·¤Æ¡¢

  • Á°¼Ô¤Ë¤Ä¤¤¤Æ
    • ¥»¥ó¥·¥Æ¥£¥Ó¥Æ¥£¥ê¥¹¥È¤Ç¥ß¥¹¤ë¤È¥é¥Ã¥Á¤òÀ¸À®¤·¤Æ¤·¤Þ¤¦
    • ¡Êreg Àë¸À¤·¤Æ¤¢¤ë Y ¤¬¼Â¤Ï¥é¥Ã¥Á¤òÀ¸À®¤·¤Ê¤¤¤Î¤¬Ê¶¤é¤ï¤·¤¤¡© ¢« ¸Ä¿ÍŪ¤Ê°Õ¸«¡Ë
  • ¸å¼Ô¤Ë¤Ä¤¤¤Æ
    • function ¤Î°ú¿ô¤äÌá¤êÃͤΥӥåÈÉý¤ò¸í¤ë¥ß¥¹¤¬Â¿È¯¤¹¤ë
    • ¾åµ­¤Î¤è¤¦¤Ê function ¤Î¸Æ¤Ó½Ð¤·¤Ç¤Ï°ú¿ô¤Î½çÈÖ¤ò´Ö°ã¤¨¤ë¥ß¥¹¤â¤¢¤ê¤¬¤Á
    • °ú¿ô¤ÎÀë¸À¤ò˺¤ì¤Æ function ³°¤Î¿®¹æ¤ò»²¾È¤·¤Æ¤·¤Þ¤Ã¤Æ¤â¥¨¥é¡¼¤Ë¤Ê¤é¤Ê¤¤

¤Ê¤É¤Î¥ß¥¹¤¬À¸¤¸¤ä¤¹¤¤¤³¤È¤¬µó¤²¤é¤ì¤Æ¤¤¤Þ¤¹¡£

¤³¤ì¤é¤ÈÈæ³Ó¤·¤Æ¡Ö°­¤¤Îã¡×¤È¤·¤Æ¡¢

wire S, M;
wire [3:0] A, B, C;
wire [3:0] Y;
assign Y = (S==1'b0) ? (M==1'b0) ? A : B : C;

¤È¤¤¤¦¤Î¤¬µó¤²¤é¤ì¤Æ¤¤¤Þ¤·¤¿¡£

Û©¤¯¡¢¡Ö£³¹à±é»»»Ò¤¬Ï¢Â³¤¹¤ë¤ÈÆÉ¤ß¤Ë¤¯¤¤¤Î¤ÇÈò¤±¤ë¤Ù¤­¡×¤È¤Î¤³¤È¤Ç¤·¤¿¡£

¤Û¤ó¤È¡©

¡¦¡¦¡¦¤¤¤ä¤¤¤ä¡¢¤³¤ì¤Ã¤ÆÃ±¤Ë¥¤¥ó¥Ç¥ó¥È¤ä³ç¸Ì¤òÉÕ¤±¤ì¤ÐÎɤ¤ÌäÂê¤Ç¤Ï¡©¡©¡©

¸Ä¿ÍŪ¤Ë¤Ï¾åµ­¤Î²óÏ©¤Ï¡¢always ¤ä function ¤ò»È¤Ã¤¿¤Î¤ËÈæ¤Ù¤Æ¤â¡¢

wire S, M;
wire [3:0] A, B, C;
wire [3:0] Y;

assign Y = !S ? (
                !M ? A
                   : B )
              : C;

¤È½ñ¤¯¤Î¤¬ÆÉ¤ß¤ä¤¹¤¯´¶¤¸¤Þ¤¹¡£

¤¢¤ë¤¤¤Ï¡¢¡Ö¾ò·ïʸ¤Ç¤ÏÎ㳰Ū¤Ê¤â¤Î¤òÀè¤Ë½èÍý¤¹¤ë¡×¤È¤¤¤¦ ¥½¥Õ¥È¥¦¥§¥¢¤Ç¤è¤¯ÃΤé¤ì¤¿¥¹¥¿¥¤¥ë¥¬¥¤¥É¤òŬÍѤ¹¤ë¤Ê¤é¡¢ ¸µ¤Î²óÏ©¤Îʤӽç¤òÊѹ¹¤·¤Æ

wire S, M;
wire [3:0] A, B, C;
wire [3:0] Y;

assign Y = S ? C :
           M ? B :
               A ;

¤È¤¹¤ì¤Ð¤µ¤é¤ËÆÉ¤ß¤ä¤¹¤¤¤Ç¤¹¤Í¡£

¤³¤Á¤é¤¬ÆÉ¤ß¤ä¤¹¤¤¤È»×¤¦Íýͳ¤È¤·¤Æ¤Ï¡¢

  • C ¤ä C++ ¤Ë´·¤ì¤Æ¤¤¤ì¤Ð S==1'b0 ¤ä S==1'b1 ¤Ï¾éĹ¤Ç¡¢¤½¤ì¤¾¤ì !S ¤ä S ¤È½ñ¤±¤Ð½½Ê¬
  • £³¹à±é»»»Ò¤ÎÏ¢º¿¤Ï¡Ö¤Á¤ã¤ó¤È³ç¸Ì¤ä¥¤¥ó¥Ç¥ó¥È¤òÉÕ¤±¤ì¤Ð¡×¡¢if ¤Î¤è¤¦¤Ë¤â case ¤Î¤è¤¦¤Ë¤â»È¤¨¤ë
  • ¾åµ­¥³¡¼¥É¤Ç¿´ÇÛ¤µ¤ì¤¿ÌäÂê¤Ï¤¹¤Ù¤Æ¥¯¥ê¥¢¤µ¤ì¤Æ¤¤¤ë
  • ²¿¤è¤êû¤¯½ñ¤±¤ëʬ¡¢°ìÌÜ¤ÇÆâÍÆ¤òÍý²ò¤Ç¤­¤ë

¤¢¤¿¤ê¤Ç¤¹¡£¾åµ­¤Î¤è¤¦¤Êµ­½Ò¤ò¿ÍѤ¹¤ë¤³¤È¤Ç¡¢

  • reg + always ¤ò½ç½ø²óÏ©¤ÎÀ¸À®¤Ë
  • wire + assign ¤òÁȤ߹ç¤ï¤»²óÏ©¤ÎÀ¸À®¤Ë

¤½¤ì¤¾¤ì¸ÂÄꤷ¤Æ»È¤¦¤³¤È¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤Ç¡¢½ç½ø²óÏ©¤ÈÁȤ߹ç¤ï¤»²óÏ©¡¢¤É¤Á¤é¤ò°Õ¿Þ¤·¤Æ¤¤¤ë¤«°ìÌܤÇʬ¤«¤Ã¤ÆÎɤ¤´¶¤¸¤Ç¤¹¡£

ÅöÁ³¡¢¤ä¤ä¤³¤·¤¤·×»»Éôʬ¤Ï function ¤Ë¤Þ¤È¤á¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¤¬¡¢ ¾åµ­¤Î¤è¤¦¤Ë»°¹à±é»»»Ò¤Ç´Êñ¤Ë½ñ¤±¤ë¤â¤Î¤ò¤ï¤¶¤ï¤¶ function ¤Ë¤¹¤ë¤³¤È¤Ï ¥³¡¼¥É¤Ë¥Î¥¤¥º¤òÁý¤ä¤¹¤À¤±¤Ê¤Î¤ÇÈò¤±¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£

£±ÅÀ¡¢

  • C ¤ä C++ ¤Ë´·¤ì¤Æ¤¤¤ì¤Ð S==1'b0 ¤ä S==1'b1 ¤Ï¾éĹ¤Ç¡¢¤½¤ì¤¾¤ì !S ¤ä S ¤È½ñ¤±¤Ð½½Ê¬

¤Ë´Ø¤·¤Æ¤Ï¡¢¥³¥ó¥Ñ¥¤¥é¤ä lint ¤Ë¥Ó¥Ã¥ÈÉý¤Î¥ß¥¹¥Þ¥Ã¥Á¤ò¸¡½Ð¤µ¤»¤ëÌÜŪ¤Ç¡¢ ¥Ó¥Ã¥ÈÉý¤Î°Û¤Ê¤ëÂåÆþ¤äÈæ³Ó¤ËÂФ¹¤ë·Ù¹ð¤¬£±¤Ä¤â½Ð¤Ê¤¤¤è¤¦¤Ê¥³¡¼¥Ç¥£¥ó¥°¤ò ¿´¤¬¤±¤ë¤Î¤Ç¤¢¤ì¤Ð¼çÄ¥¤ò¼è¤ê²¼¤²¤Þ¤¹¡£ S==1'b0 ¤ä S==1'b1 ¤Îµ­½Ò¤Ë¤è¤ê¡¢ ¼«Æ°Åª¤Ë¤¹¤Ù¤Æ¤Î²Õ½ê¤Ë¤ª¤±¤ë¥Ó¥Ã¥ÈÉý¤Î¥Á¥§¥Ã¥¯¤¬¤Ç¤­¤ë¤Ê¤é¡¢ ¤³¤ì¤é¤Îµ­½Ò¤¬¾éĹ¤È¤Ï»×¤¤¤Þ¤»¤ó¡£

¤¿¤À»ä¤¬ Xilinx ISE ¾å¤Ç¥³¡¼¥Ç¥£¥ó¥°¤¹¤ë¸Â¤ê¡¢¥³¥ó¥Ñ¥¤¥ë»þ¤Î·Ù¹ð¤ò¤¹¤Ù¤Æ¤Ä¤Ö¤¹¤è¤¦¤Ê ¥³¡¼¥Ç¥£¥ó¥°¤Ï¤Û¤ÜÉÔ²Äǽ¤Ç¡¢S==1'b0 ¤ä S==1'b1 ¤Îµ­½Ò¤Ç¥³¥ó¥Ñ¥¤¥é¤Ë¤è¤ë¥Ó¥Ã¥ÈÉý¥Á¥§¥Ã¥¯¤¬Íưפˤʤ뤳¤È¤Ï˾¤á¤Þ¤»¤ó¤Ç¤·¤¿¡£

¤½¤Î¤è¤¦¤ÊÌÜŪ¤¬¤Ê¤¤¸Â¤ê S==1'b0 ¤Ê¤É¤Îµ­½Ò¤Ïñ¤Ë¾éŤÀ¤È»×¤¤¤Þ¤¹¡£

¾åµ­¤Î¥¹¥¿¥¤¥ë¥¬¥¤¥ÉËܤǤ⡢¤ï¤¶¤ï¤¶¤½¤¦½ñ¤«¤Ê¤¯¤Æ¤âÎɤ¤¤«¤â¤·¤ì¤Ê¤¤¡¢ ¤È¡Ê¤¢¤Þ¤ê¾è¤êµ¤¤¸¤ã¤Ê¤¤Ê·°Ïµ¤¤Ç¡©¡Ë½ñ¤¤¤Æ¤¤¤ë¾Ï¤¬¤¢¤ê¤Þ¤¹¤Í¡£

Ê̤ÎÎã

Ʊ¥¹¥¿¥¤¥ë¥¬¥¤¥É¤Ç¤Ï¡¢

module DEC2TO4 (
  input wire [1:0] AIN,
  input wire       EN,
  output reg [3:0] DEC
);

  always @(AIN or EN)
    if (EN)
      case (AIN)
        2'h0:    DEC = 4'b0001;
        2'h1:    DEC = 4'b0010;
        2'h2:    DEC = 4'b0100;
        2'h3:    DEC = 4'b1000;
        default: DEC = 4'bxxxx;
      endcase
    else
      DEC = 4'b0000;
  end

endmodule

¤È¤«¡¢

module DEC2TO4 (
  input wire [1:0]  AIN,
  input wire        EN,
  output wire [3:0] DEC
);

  function [3:0] CalcDEC;
  input [1:0] AIN;
  input EN;
    begin
      if (EN)
        case (AIN)
          2'h0:    CalcDEC = 4'b0001;
          2'h1:    CalcDEC = 4'b0010;
          2'h2:    CalcDEC = 4'b0100;
          2'h3:    CalcDEC = 4'b1000;
          default: CalcDEC = 4'bxxxx;
        endcase
      else
        CalcDEC = 4'b0000;
    end
  endfunction

  assign DEC = CalcDEC(AIN, EN);

endmodule

¤Ê¤É¤È¤¤¤¦¤Î¤â¾Ò²ð¤µ¤ì¤Æ¤¤¤Þ¤·¤¿¤¬¡¢¤³¤ì¤é¤â

module DEC2TO4 (
  input wire [1:0]  AIN,
  input wire        EN,
  output wire [3:0] DEC
);

  assign DEC = !EN ? 4'b0000 :
                 AIN == 0 ? 4'b0001 :
                 AIN == 1 ? 4'b0010 :
                 AIN == 2 ? 4'b0100 :
                 AIN == 3 ? 4'b1000 :
                            4'bxxxx ;

endmodule

¤Ç½½Ê¬¤À¤È»×¤¤¤Þ¤¹¡£

¥³¡¼¥É¤Ë¥Î¥¤¥º¤¬¾¯¤Ê¤¤Ê¬¡¢²¿¤ò¤ä¤Ã¤Æ¤¤¤ë¤«¤¬°ìÌÜÎÆÁ³¤Ç¤¹¡£

¤Þ¤¢¤³¤ÎÎã¤Ç¤¢¤ì¤Ð¤à¤·¤í¡¢

module DEC2TO4 (
  input wire [1:0]  AIN,
  input wire        EN,
  output wire [3:0] DEC
);

  assign DEC = { 3'b000, EN } << AIN;

endmodule

¤È½ñ¤¯¤Î¤¬ºÇ¤â²óÏ©¤Î°Õ¿Þ¤òÎɤ¯É½¤ï¤·¤Æ¤¤¤ë¤È»×¤¦¤Î¤Ç¤¹¤¬¡¢ ¤³¤ì¤À¤È AIN ¤ËÉÔÄê¥Ó¥Ã¥È¤¬´Þ¤Þ¤ì¤ë¤È¤­¤Îưºî¤¬°Û¤Ê¤ë¤Î¤Ç¡¢ ¸·Ì©¤Ë¤Ï¥ë¡¼¥ë°ãÈ¿¤Ç¤·¤ç¤¦¤«¡£

²¿¤Ë¤·¤Æ¤â¡¢²óÏ©¤Î°Õ¿Þ¤òºÇ¤â¥·¥ó¥×¥ë¤Ëɽ¤»¤ëµ­½Ò¤òõ¤¹¤³¤È¤òÍ¥À褷¤¿¤¤¤Ç¤¹¡£

¤¿¤Ö¤ó¤³¤Îµ­»ö¤Ë¤ÏÈãȽ¤¬Â¿¤¤¤È»×¤¤¤Þ¤¹

¥¹¥¿¥¤¥ë¥¬¥¤¥ÉËÜ¤Ë¾Ò²ð¤µ¤ì¤Æ¤¤¤ë¤¢¤¿¤ê¡¢Verilog ³¦¤Ç¤Ï ? : ¤ÎÏ¢º¿¤òÈò¤±¤ë¤³¤È¤ä¡¢ ¾ò·ï¼°¤Ç¤Ï S==1'b1 ¤Ê¤É¤ÈÈæ³Ó¤¹¤ë¤Î¤¬¾ï¼±¤È¤µ¤ì¤Æ¤¤¤ë¤Î¤À¤È»×¤¤¤Þ¤¹¡£

¤·¤¿¤¬¤Ã¤Æ¡¢¾åµ­¤Î¤è¤¦¤Êµ­»ö¤ò½ñ¤¯¤È¤ª¼¸¤ê¤ÎÀ¼¤â¿¤¯Ê¹¤³¤¨¤Æ¤­¤½¤¦¤Ç¤¹¡£

ÅöÁ³¡¢¸Ä¡¹¤Î¥Á¡¼¥àÆâ¤Ç¤Î¥³¡¼¥Ç¥£¥ó¥°µ¬Ìó¤ò½¤Àµ¤·¤Æ¤Þ¤Ç̵Íý¤Ë´«¤á¤ëµ¤¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢ ÎäÀŤ˾嵭¤Î²óÏ©¤Î¤É¤ì¤¬°ìÈ֯ɤߤ䤹¤¤¤«¡¢¥ß¥¹¤¬Æþ¤ê¤Ë¤¯¤¤¤«¤ò¹Í¤¨¤Æ¤ß¤ë¤È¡¢ ·ëÏÀ¤¬ÊѤï¤ë¤³¤È¤â¤¢¤ë¤Î¤Ç¤Ï¤È»×¤Ã¤¿¤¿¤áµ­»ö¤Ë¤·¤Æ¤ß¤Þ¤·¤¿¡£

¥×¥é¥¤¥ª¥ê¥Æ¥£¥í¥¸¥Ã¥¯¤ÎÏÃ

Verilog ¤Ç¤ÏËÜÍè¡¢ if ʸ¤Ç½ñ¤¤¤¿Éôʬ¤Ë¤Ä¤¤¤Æ¤Ï¾ò·ïȽÊÌ¥í¥¸¥Ã¥¯¤Ë¥×¥é¥¤¥ª¥ê¥Æ¥£¤¬ÉÕ¤¯¤¿¤á¡¢ ¾ò·ïȽÊÌ¥í¥¸¥Ã¥¯¤Î½ç½ø¤ò¤Ò¤Ã¤¯¤êÊÖ¤¹¤è¤¦¤ÊºÇŬ²½¤¬ÍÞÀ©¤µ¤ì¤ë¤Î¤À¤½¤¦¤Ç¤¹¡© ¡ÊXilinx ¤Î¥Ä¡¼¥ë¤Ç¼ÂºÝ¤Ë¤É¤¦¤Ê¤Î¤«¤Ï̤³Îǧ¡Ë

¤½¤¦¤¤¤¦°ÕÌ£¤Ç¥×¥é¥¤¥ª¥ê¥Æ¥£¤ò¿¿¤ËɬÍפȤ¹¤ëÉôʬ¤Ë¤Ä¤¤¤Æ¤Ï if ¤Ç½ñ¤«¤ì¤¿¥³¡¼¥É¤ò°Â°×¤Ë ? : ¤Ë½ñ¤­´¹¤¨¤ë¤ï¤±¤Ë¤Ï¤¤¤«¤Ê¤¤¤Ç¤¹¤Í¡£

¾åµ­¤Î S, M, A, B, C ¤«¤é Y ¤ò·×»»¤¹¤ë²óÏ©¤Î½ñ¤­´¹¤¨¤Ï ½ñ¤­´¹¤¨¸å¤Î¥³¡¼¥É¤Ç°Õ¿Þ¤È°Û¤Ê¤ë²óÏ©¤¬À¸À®¤µ¤ì¤ë²ÄǽÀ­¤¬¤¢¤ë¤Î¤ÇÃí°Õ¤¬É¬ÍפǤ¹¡£

System Verilog ¤Ç¤Ï priority if ¤È unique if ¤È¤ò»È¤¤Ê¬¤±¤ë¤³¤È¤¬¤Ç¤­¤ë¤½¤¦¤Ç¤¹¡£

µÕ¤Ë¡¢¥³¡¼¥É¤Ëµ­½Ò¤·¤¿Ä̤ê¤Î¥×¥é¥¤¥ª¥ê¥Æ¥£¤Ë¸ÂÄꤻ¤º¡¢ ɬÍפ˱þ¤¸¤Æ¾ò·ï¥í¥¸¥Ã¥¯¤òºÇŬ²½¤·¤ÆÍߤ·¤¤¤È¤­¤Ë¤Ï if ʸ¤Ç¤Îµ­½Ò¤ÏÈò¤±¤ë¤Ù¤­¤Ê¤ó¤Ç¤¹¤Í¡£

¥¤¥ó¥×¥ê¥á¥ó¥È»þ¤Î¥ï¡¼¥Ë¥ó¥°Íó¤ò¸«¤ä¤¹¤¯¤¹¤ë¹©É×

¥½¥Õ¥È¥¦¥§¥¢¤Î¥×¥í¥°¥é¥ß¥ó¥°¤Ç¤â¤½¤¦¤Ê¤Î¤Ç¤¹¤¬¡¢ ºÇ¶á¤Î¥³¥ó¥Ñ¥¤¥é¤Ï¤«¤Ê¤ê¸­¤¤¤Î¤Ç¡¢ ¥Ð¥°¤ò´Þ¤à¥³¡¼¥É¤òÍ¿¤¨¤ë¤È¹â³ÎΨ¤ÇŪ³Î¤Ê·Ù¹ð¤ò½Ð¤·¤Æ¤¯¤ì¤ë¤¿¤á¡¢ ¤Á¤ã¤ó¤È·Ù¹ðÍó¤ËÌܤò¸÷¤é¤»¤Æ¤¤¤ì¤Ð¥Ç¥Ð¥Ã¥°¤Î¼ê´Ö¤òÂçÉý¤Ë¾Ê¤¯¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¤½¤·¤Æ¡¢¥³¥ó¥Ñ¥¤¥é¤«¤é¤Î·Ù¹ð¤òÍ­¸ú¤Ë³èÍѤ¹¤ë¤¿¤á¡¢ ¥³¥ó¥Ñ¥¤¥ë»þ¤Ë½Ð¤ë·Ù¹ð¤Ï¡¢¤½¤ì¤¬Ìµ³²¤Ê¤â¤Î¤Ç¤¢¤ë¤³¤È¤¬ÌÀ¤é¤«¤Ç¤â¡¢ ¥³¡¼¥Ç¥£¥ó¥°¤ò¹©Éפ¹¤ë¤³¤È¤Ç¾å¼ê¤Ë¾Ã¤¹¤³¤È¤¬¿ä¾©¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ ¤·¤¿¤¬¤Ã¤ÆÄ̾ï¤Î¥½¥Õ¥È¥¦¥§¥¢³«È¯¤Ç¤Ï¡¢ ¥³¡¼¥É¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤â£±¤Ä¤â¥³¥ó¥Ñ¥¤¥ë·Ù¹ð¤¬½Ð¤Ê¤¤¤Î¤¬ÉáÄ̤Ǥ¹¡£

¤·¤«¤· Xilinx ISE ¤Ç Verilog ¤òÍѤ¤¤Æ¥³¡¼¥Ç¥£¥ó¥°¤·¤Æ¤¤¤ë¸Â¤ê¡¢ ¥³¡¼¥Ç¥£¥ó¥°¤Î¹©ÉפÀ¤±¤Ç¤Ï·Ù¹ð¤ò¸º¤é¤¹¤³¤È¤¬¤Ç¤­¤º¡¢ ·ë²Ì¤È¤·¤Æ·Ù¹ðÍó¤¬Ìµ³²¤Ê·Ù¹ð¤Ç¤¢¤Õ¤ì¤Æ¤·¤Þ¤Ã¤Æ ËÜÅö¤Ë´í¸±¤Ê·Ù¹ð¤Ëµ¤¤Å¤±¤Ê¤¤¾õ¶·¤Ç³«È¯¤ò¿Ê¤á¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤è¤¦¤Ç¤¹¡£

Î㤨¤Ð PicoBlaze ¤ä CoreGenerator ¤Ê¤É¡¢Xilinx ¤Î¥é¥¤¥Ö¥é¥ê¤òÁȤ߹þ¤à¤À¤±¤Ç¿ôÉ´¤â¤Î·Ù¹ð¤¬½Ð¤Þ¤¹¤Î¤Ç¡¢ ¤â¤¦¤¦¤ó¤¶¤ê¡¢¡¢¡¢¤Ê¤Î¤Ç¤¹¡£

·Ù¹ðÍó¤òÍ­¸ú³èÍѤ¹¤ë¤¿¤á¤ÎÊýË¡¤ò¥á¥â¤·¤¿¤¤¤È»×¤¤¤Þ¤¹¡£

Message Filter ¤ò»È¤¦

  • Verilog 2001 ¤Ç¤Ï¡¢¥³¡¼¥Ç¥£¥ó¥°¤Î¹©ÉפÀ¤±¤Ç¤Ï¤É¤¦¤ä¤Ã¤Æ¤â¾Ã¤»¤Ê¤¤¼ïÎà¤Î·Ù¹ð¤¬¤¢¤ë¤³¤È¡¢
  • Xilinx ¸ø¼°¤Î¥³¡¼¥É¤«¤é¿Ò¾ï¤¸¤ã¤Ê¤¤¿ô¤Î·Ù¹ð¤¬½Ð¤ë¤³¤È¡¢

¤Ê¤É¤«¤é¡¢ ̵³²¤Ê·Ù¹ð¤Ï¥³¡¼¥Ç¥£¥ó¥°¤Î¹©ÉפǤϤʤ¯¡¢¥³¥ó¥Ñ¥¤¥é½ÐÎϤòÌܤÇÄɤ¦Ãʳ¬¤Ç¥Õ¥£¥ë¥¿¤¹¤ë¡¢ ¤È¤¤¤¦ÊýË¡¤¬Ä󶡤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ç¤¹¡£

Google:Xilinx ISE Message Filter

Project Navigator ¤Ç¤Î¥á¥Ã¥»¡¼¥¸ ¥Õ¥£¥ë¥¿¤ÎÀßÄê
http://www.xilinx.com/itp/xilinx7j/help/iseguide/html/ise_filtering_messages_pn.htm

¤³¤ì¡¢¥Õ¥£¥ë¥¿¤Î¿ô¤¬¾¯¤Ê¤¤¤¦¤Á¤Ï¤è¤¤¤Î¤Ç¤¹¤¬¡¢¥Õ¥£¥ë¥¿´ÉÍý¤Î GUI ¤¬¼å¤¹¤®¤ë¤¿¤á¡¢ ²¿É´¤â¤Î¥Õ¥£¥ë¥¿¤ò This Instance Only ¤ÇÄɲ䷤Ƥ¤¤¯¤È¡¢ ¥Õ¥£¥ë¥¿¤Îºï½ü¤ä̵¸ú²½¤ò¤·¤¿¤¤¤È¤­¤Ë¤Ë¤Ã¤Á¤â¤µ¤Ã¤Á¤â¤¤¤«¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£

[Edit Message Filters] ¥á¥Ë¥å¡¼¤òÁª¤Ö¤À¤±¤Ç¿ô½½Éäλþ´Ö¤¬³Ý¤«¤ê¡¢ ¤Ê¤ª¤«¤Ä¥Õ¥£¥ë¥¿¤Î̵¸ú²½¡¦Í­¸ú²½¤ä¡¢ºï½ü¤Ë¤Ï¡¢ £±¤Ä£±¤Ä¤Î¥Õ¥£¥ë¥¿¤ËÂФ·¤Æ¥Þ¥¦¥¹¤Ç¤ÎÁàºî¤¬É¬Íפˤʤê¤Þ¤¹¡£

¤Þ¤È¤á¤Æºï½ü¤Ç¤­¤Ê¤¤ GUI ¤Ï¡¢¤¢¤Þ¤ê¤Ë¼ê¤òÈ´¤­¤¹¤®¤Ç¤¹¡£

ISE 11 ¤Þ¤Ç¤Ï¤³¤ì¤é¤Î¥Õ¥£¥ë¥¿¤Ï¥×¥í¥¸¥§¥¯¥È¥Ç¥£¥ì¥¯¥È¥ê¤Î filter.filter ¡Ê¤À¤Ã¤¿¤Ã¤±¡©¡Ë¤È¤¤¤¦¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤¿¤Î¤Ç¡¢ ºÇ¸å¤Î¼êÃʤϤ³¤ì¤ò¿µ½Å¤Ë¥Æ¥­¥¹¥È¥¨¥Ç¥£¥¿¤ÇÊÔ½¸¤¹¤ë¤³¤È¤Ç¤·¤¿¡£

ISE 12 ¤Ç¤Ï³ÊǼ¾ì½ê¤¬ÊѤï¤Ã¤¿¤è¤¦¤Ç iseconfig/filter.filter ¤Ç¤¹¤Í¡£

¤¤¤¶¤È¤Ê¤Ã¤¿¤é¤³¤ì¤òÊÔ½¸¤¹¤ë¥½¥Õ¥È¤ò¼«ºî¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤«¤â¡¢ ¤È»×¤Ã¤Æ¤¤¤ë¤Î¤Ç¤¹¤¬¡¢¤¹¤Ç¤Ë¤É¤³¤«¤Ë¤¢¤Ã¤¿¤ê¤¹¤ë¤Î¤Ç¤·¤ç¤¦¤«¡©

¡ÊÄɵ­¡Ë¤·¤«¤¿¤¬¤Ê¤¤¤Î¤Ç¡¢·ë¶É¼«Ê¬¤Çºî¤ë±©Ìܤˡʵã
Åŵ¤²óÏ©/HDL/Xilinx ISE ¤Î¥á¥Ã¥»¡¼¥¸¥Õ¥£¥ë¥¿#m858a0f5

̤¹Æ

°Ê²¼¡¢¼«Ê¬¤Ç½ñ¤¤¤¿¥³¡¼¥É¤«¤é¤Ê¤ë¤Ù¤¯·Ù¹ð¤ò½Ð¤µ¤Ê¤¤¹©Éפò¥á¥â¤í¤¦¤È¤·¤¿¤Î¤Ç¤¹¤¬¡¢¡¢¡¢ ¤Þ¤À¤¢¤Þ¤ê¸«¤Ä¤±¤é¤ì¤Æ¤¤¤Þ¤»¤ó¡£

WARNING:Xst:2677 - Node <????????> of sequential type is unconnected in block <????>.
HDLCompilers:261 - "????????" line ???? Connection to output port '??????' does not match port size

¤¢¤¿¤ê¤Ï¡¢¤¤¤¯¤Ä¤«¤Î¥Ô¥ó¤ò°Õ¿ÞŪ¤Ë»È¤Ã¤Æ¤¤¤Ê¤¤¤³¤È¤ò»ØÄꤹ¤ë¹½Ê¸¤¬ verilog ¤Î¸À¸ì»ÅÍͤˤ¢¤ì¤ÐÎɤ¤¤Î¤Ç¤¹¤¬¡¢¤¿¤Ö¤ó¤Ç¤­¤Ê¤¤¤Î¤Ç¤¹¤è¤Í¡£

¥³¥á¥ó¥È




(²èÁü¤Îʸ»úÎó¤òÆþÎϤ·¤Æ²¼¤µ¤¤)

Àë¸À¤¹¤ë̾Á°¤Ë¹©Éפ¹¤ë

[¥¢¥×¥í] (2010-06-04 (¶â) 15:51:24)

regÀë¸À, ¡Á_reg ¤Ã¤ÆÉÕ¤±¤ë¡£F/F¤ò¿äÄê
reg [1:0] aaaa_reg ; /* ¥³¥á¥ó¥È */

wireÀë¸À, ¡Á_sig ¤Ã¤ÆÉÕ¤±¤ë¡£ÁȤ߹ç¤ï¤»²óÏ©¤äñ¤Ê¤ëÀܳ¿®¹æ
wire bbbb_sig ; /* ¥³¥á¥ó¥È */

¤³¤ó¤Ê´¶¤¸¤Ë¤¤¤Ä¤â¤·¤Æ¤¤¤Þ¤¹¡£¤Þ¤¢¡¢¹¥¤ß¤Ç¤¹¤±¤É(¾Ð)

  • ·Ð¸³ÉÔ­¤Ç¡¢reg ¤È wire ¤È¤ò°ìÌܤǸ«Ê¬¤±¤é¤ì¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¤Î¥á¥ê¥Ã¥È¤¬¤Þ¤À¸«¤¨¤Æ¤¤¤Þ¤»¤ó¡£¿®¹æ¸»¤¬ reg ½ÐÎϤ½¤Î¤Þ¤Þ¤Ç¤¢¤ë¤«¡¢ÁȤ߹ç¤ï¤»¥í¥¸¥Ã¥¯¤Î½ÐÎϤǤ¢¤ë¤«¤ò¸«Ê¬¤±¤ë¤³¤È¤Ç¥Ï¥¶¡¼¥É¤äÃÙ±äÎ̤òÀµ¤·¤¯´üÂÔ¤¹¤ë¡¢¤È¤«¤Ç¤·¤ç¤¦¤«¡©¤è¤í¤·¤±¤ì¤ÐÌÜŪ¤ò¶µ¤¨¤Æ¤¤¤¿¤À¤±¤ë¤ÈÊÙ¶¯¤Ë¤Ê¤ê¤Þ¤¹¡£ -- [ÉðÆâ¡Ê´ÉÍý¿Í¡Ë] 2010-06-04 (¶â) 21:05:41
  • ÆâÉô¤Ç¥â¥¸¥å¡¼¥ë¤ò¸Æ¤Ó½Ð¤·¤ÆÀܳ¤¹¤ëºÝ¤Ë¡¢¤³¤ì¤Ê¤ó¤À¤Ã¤±¡© ¤È¤«¡¢¥â¥¸¥å¡¼¥ë¤Î½ÐÎÏ¥Ô¥ó¤È¤·¤Æ¡¢assignʸ¤ò½ñ¤¯»þ¤Ë¡¢F/F¤À¤Ã¤±¡© ÁȤ߹ç¤ï¤»¤À¤Ã¤±¡© ¤¹¤°¤ËȽÌÀ¤·¤Þ¤¹ -- [¥¢¥×¥í] 2010-06-05 (ÅÚ) 06:51:19
  • ¤Õ¤à¤Õ¤à¡¢²¿¤È¤Ê¤¯Ê¬¤«¤Ã¤Æ¤­¤Þ¤·¤¿¡£¤É¤¦¤â¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£ -- [ÉðÆâ¡Ê´ÉÍý¿Í¡Ë] 2010-06-05 (ÅÚ) 15:02:50

(²èÁü¤Îʸ»úÎó¤òÆþÎϤ·¤Æ²¼¤µ¤¤)

Verilogµ­½Ò¤Î»þ¤Î¼ºÇÔÎã

[marsee] (2010-06-04 (¶â) 13:16:24)

15¿¼ÅÙ¤ÎFIFO¤Îfull¤òVerilog¤Ç½ñ¤¤¤¿»þ¤Î»ä¤Î¼ºÇÔÎã¤Ç¤¹¡£¤³¤ì¤¬¤ï¤«¤ë¤Þ¤Ç¤Ë¶ìÏ«¤·¤Þ¤·¤¿¡£
http://marsee101.blog19.fc2.com/blog-entry-763.html

  • ¤¢¡ª¤³¤ì¤Ë¶á¤¤¤³¤È¤ò»ä¤â¤ä¤ê¤Þ¤·¤¿¡£ËÜʸ¤ËÆþ¤ì¤µ¤»¤Æ¤¤¤¿¤À¤­¤Þ¤¹¡£ -- [ÉðÆâ¡Ê´ÉÍý¿Í¡Ë] 2010-06-04 (¶â) 14:51:34

(²èÁü¤Îʸ»úÎó¤òÆþÎϤ·¤Æ²¼¤µ¤¤)

̵Âê

[¥¢¥×¥í] (2010-06-04 (¶â) 12:25:12)

¥á¥ê¥Ã¥È:
¡¦HDL¥Á¥§¥Ã¥¯¥Ä¡¼¥ë¤Î¥¨¥é¡¼Âкö¡¢RTL¥¹¥¿¥¤¥ë¥¬¥¤¥É½àµò
¡¡À½Éʸþ¤±¤ÎÂбþ¤ÎÀ߷ץ롼¥ë¤Ç¤¹¤Í
¡¦ÀµÏÀÍý¡¢ÉéÏÀÍý¤ò¤Ï¤Ã¤­¤ê¤µ¤»¤ë¤³¤È¤È¡¢¤½¤ÎÉôʬ¤Ç¥Ó¥Ã¥È¿ô¤¬ÌÀ³Î¤Ë¤Ê¤ê¤Þ¤¹
¡¡¥½¡¼¥¹¤òÆÉ¤à¾ì¹ç¡¢¤¤¤Á¤¤¤Á¡¢Àë¸ÀÉôʬ¤Þ¤ÇÌá¤Ã¤Æ¸«¤ë¤³¤È¤ò¤ä¤ê¤¿¤¯¤Ê¤¤
¡¡¤Ê¤Ë¤·¤í¡¢300¹Ô°Ê¾å¤Ï¥¶¥é¤Ç¤¹¤«¤é¤Í

  • ¤ªÊÖ»ö¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£ÀµÏÀÍý¡¦ÉéÏÀÍý¤Ë¤Ä¤¤¤Æ¡¢if(enable) ¤ä if(!not_enable) ¤È½ñ¤¯¤Î¤È¡¢if(enable==1'b1) ¤ä if(not_enable==1'b0) ¤È½ñ¤¯¤Î¤È¤Ç¸å¼Ô¤ÎÊý¤¬ÆÉ¤ß¤ä¤¹¤¤¤È¤¤¤¦µ¤¤¬¤·¤Ê¤¤¤Î¤Ç¤¹¤¬¡¢¡¢¡¢¤Þ¤À¤è¤¯Ê¬¤«¤Ã¤Æ¤¤¤Ê¤¤¤ß¤¿¤¤¤Ç¤¹¡£ -- [ÉðÆâ¡Ê´ÉÍý¿Í¡Ë] 2010-06-04 (¶â) 14:31:38
  • ¥Ó¥Ã¥È¿ô¤ÎÏäϤª±¢¤µ¤Þ¤Ç²¿¤È¤Ê¤¯Ê¬¤«¤ê¤Þ¤·¤¿¡£¤¬¡¢¼Â´¶¤È¤·¤ÆÆÀ¤ë¤Ë¤Ï¾¯¤·Äˤ¤Ìܤò¸«¤Ê¤¤¤È¹ü¿È¤Ë¤·¤ß¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡Ê´À -- [ÉðÆâ¡Ê´ÉÍý¿Í¡Ë] 2010-06-04 (¶â) 14:50:04

(²èÁü¤Îʸ»úÎó¤òÆþÎϤ·¤Æ²¼¤µ¤¤)

()¤Ïɬ¿Ü¤Ç¤¹

[¥¢¥×¥í] (2010-06-03 (ÌÚ) 07:57:45)

assignʸ¤Ë¤è¤ëÁȤ߹ç¤ï¤»²óÏ©¤Ç¡¢¾ò·ïȽÄꤹ¤ë¾ì¹ç¤Ï¡¢() ¤Ç¤¯¤¯¤ëÊʤò¤Ä¤±¤¿Êý¤¬¤¤¤¤¤Ç¤¹¤è

¤Þ¤¿¡¢¤¢¤È¤¢¤ÈÏÀÍý¤¬¤ï¤«¤ë¤è¤¦¤Ë
(c == 1'b1) ?
¤È¤«ÌÀ¼¨¤¹¤ë¤È¤è¤¤¤Ç¤·¤ç¤¦

  • ½ñ¤­¹þ¤ß¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£Í½ËɤΤ¿¤á¤Ë³ç¸Ì¤òÉÕ¤±¤ëÊʤòÉÕ¤±¤ë¤È¤¤¤¦¤Î¤¬Àµ¤·¤¤»ÑÀª¤Ê¤Î¤Ç¤·¤ç¤¦¤Í¡£ -- [ÉðÆâ¡Ê´ÉÍý¿Í¡Ë] 2010-06-03 (ÌÚ) 13:16:48
  • ¾ò·ïȽÄê¤Ç c == 1'b1 ¤È½ñ¤¯¤Î¤Ï¸Ä¿ÍŪ¤Ë¤Ï¤Þ¤À¼õ¤±Æþ¤ì¤Ë¤¯¤¤¤Ç¤¹¡£C ¤ò»Ï¤á¤È¤¹¤ë¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Ç¤Ï c != 0 ¤È¤« c != false ¤Ï¾éŤǤ¢¤ë¤È¤¤¤¦¤Î¤¬¾ï¼±¤Ç¡¢¤³¤Î½ñ¤­Êý¤â¤½¤ì¤Ë»÷¤Æ¤¤¤ë¤è¤¦¤Ë»×¤¨¤Æ¤·¤Þ¤¤¤Þ¤¹¡£ÆÃ¤Ë¥Ó¥Ã¥ÈÉý¤Þ¤Ç»ØÄꤷ¤¿¾ì¹ç¤Ë c == 1'b1 ¤È c == 1'b0 ¤ò½Ö»þ¤ËȽÊ̤Ǥ­¤Ê¤¤¤¿¤á¡¢c ¤È !c ¤Ç½ñ¤­Ê¬¤±¤ë¤Î¤ËÈæ¤Ù¤Æ¤«¤¨¤Ã¤Æ»ëǧÀ­¤¬°­¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¤Î¤Ç¤Ï¤È´¶¤¸¤Æ¤¤¤Þ¤¹¡£c == 1'b1 ¤È¤¤¤¦½ñ¤­Êý¤Î¥á¥ê¥Ã¥È¤Ï¤É¤Î¤¢¤¿¤ê¤Ë¤¢¤ë¤Î¤Ç¤·¤ç¤¦¡© -- [ÉðÆâ¡Ê´ÉÍý¿Í¡Ë] 2010-06-03 (ÌÚ) 13:19:38

(²èÁü¤Îʸ»úÎó¤òÆþÎϤ·¤Æ²¼¤µ¤¤)

Àë¸À¤µ¤ì¤Æ¤¤¤Ê¤¤¿®¹æÀþ¤¬Éý£±¤Î wire ¤È¤·¤Æ²ò¼á¤µ¤ì¤ë¤Î²ò·èË¡

[marsee] (2010-06-03 (ÌÚ) 07:09:46)

Àë¸À¤µ¤ì¤Æ¤¤¤Ê¤¤¿®¹æÀþ¤¬Éý£±¤Î wire ¤È¤·¤Æ²ò¼á¤µ¤ì¤ë¤Î²ò·èË¡¤È¤·¤Æ¤Ï¡¢`default_nettype none¤òºÇ½é¤Ëµ­½Ò¤¹¤ë¤È¤¤¤¦ÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£¤³¤¦¤¹¤ë¤ÈÄêµÁ¤·¤Æ¤¤¤Ê¤¤¿®¹æ¤¬¤¢¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£¤¿¤À¡¢¤³¤ì¤ÏVerilog2001¤Î¹½Ê¸¤Ç¤¹¡£Xilinx¤Î¥é¥¤¥Ö¥é¥ê¤Ê¤É¤Ç¤Ï¡¢1¥Ó¥Ã¥È¤Îwire¤ÏÄêµÁ¤·¤Æ¤¤¤Ê¤¤¤³¤È¤â¤¢¤ë¤Î¤Ç¡¢¥³¥ó¥Ñ¥¤¥ë¤Î½çÈ֤ˤè¤Ã¤Æ¤Ï¡¢¤½¤³¤Ç¥¨¥é¡¼¤Ë¤Ê¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£¤½¤³¤Ç¡¢ºÇ¸å¤Ë`default_nettype wire¤ò½ñ¤¤¤Æ¤ª¤¯¤ÈÎɤ¤¤È»×¤¤¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢
`default_nettype none
Verilog¤Î²óÏ©ËÜÂÎ
`default_nettype wire
¤Ç¤¹¡£

  • ÂçÊÑÍ­ÍѤʾðÊó¤ò¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£ºòÆü¤«¤é¤É¤³¤¬°­¤¤¤«Á´¤¯Ê¬¤«¤é¤º¶ìÏ«¤·¤Æ¤¤¤ë²óÏ©¤Ë¤³¤ì¤òÉÕ¤±¤¿¤é¥Ð¥°¤¬¸«¤Ä¤«¤ê¤½¤¦¤Êͽ´¶¤Ç¤¹¡Ê´À -- [ÉðÆâ¡Ê´ÉÍý¿Í¡Ë] 2010-06-03 (ÌÚ) 13:21:18
  • ¥á¥â¥ê¥â¥¸¥å¡¼¥ë¤Î¥Æ¥¹¥È¤Ç ModelSim ¤Î¥¹¥Æ¥Ã¥×¿ôÀ©¸Â¤Ë¤«¤«¤Ã¤Æ¤·¤Þ¤Ã¤¿¤Î¤Ç¡¢µ×¤·¤Ö¤ê¤Ë ISim ¤òµ¯Æ°¤·¤¿¤é http://japan.xilinx.com/support/answers/34811.htm ¤Î±Æ¶Á¤Ç¥¨¥é¡¼½Ð¤Þ¤¯¤ê¤Ç¤·¤¿¡£¤³¤Î `default_nettype none ¤ÎÉûºîÍѤˤĤ¤¤Æ¾å¤ËÄɵ­¤·¤Þ¤·¤¿¡£ -- [ÉðÆâ¡Ê´ÉÍý¿Í¡Ë] 2010-06-03 (ÌÚ) 21:17:35

(²èÁü¤Îʸ»úÎó¤òÆþÎϤ·¤Æ²¼¤µ¤¤)

Last-modified: 2013-02-27 (¿å) 21:22:16 (79d)