言語 Verilog VHDL 基本ブロック module モ ジ ュ ー ル 名 (ポ ー ト リ ス ト ); library ieee; 定数宣言 use ieee.std_logic_1164.all; 入出力宣言 use ieee.std_logic_unsigned.all; ローカル信号宣言 use ieee.std_logic_arith.all; : (数 値 演 算 を 使 う と き ) entity エ ン テ ィ テ ィ 名 is : 定数宣言 endmodule port(入 出 力 信 号 宣 言 ); : end エ ン テ ィ テ ィ 名 ; architecture ア ー キ テ ク チ ャ 名 of エ ン テ ィ テ ィ 名 is 定数宣言 コンポーネント宣言 ローカル信号宣言 begin : : end ア ー キ テ ク チ ャ 名 ; 入出力信号宣言 入力 input ポ ー ト 名 ; ポ ー ト 名 :in std_logic; 出力 output ポ ー ト 名 ; ポ ー ト 名 :out std_logic; 双方向 inout ポ ー ト 名 ; ポ ー ト 名 :inout std_logic; バンドル表現 input [n-1:0] ポ ー ト 名 ; ポ ー ト 名 :in std_logic_vector(n-1 downto 0); output [n-1:0] ポ ー ト 名 ; ポ ー ト 名 :out std_logic_vector(n-1 downto 0); inout [n-1:0] ポ ー ト 名 ; ポ ー ト 名 :inout std_logic_vector(n-1 downto 0); wire 信 号 名 ; signal 信 号 名 :std_logic; ローカル信号宣言 reg 信 号 名 ; Verilog/VHDL対応表 1 言語 Verilog VHDL コンポーネント宣言 component コ ン ポ ー ネ ン ト 名 is な し port (入 出 力 信 号 宣 言 ); end component; コンポーネント イ ン ス タ ン ス 名 :コ ン ポ ー ネ ン ト 名 port map(ポ ー ト リ ス ト ); インスタンス モジュール モ ジ ュ ー ル 名 イ ン ス タ ン ス 名 (ポ ー ト リ ス インスタンス ト ); 信号代入文 assign 左 辺 = 右 辺 ; 左 辺 <= 右 辺 ; 条件付信号代入文 assign 左 辺 = (条 件 式 ) ? (右 辺 1) : (右 左 辺 <= (右 辺 1) when (条 件 式 ) else (右 辺 2); 辺 2); 定数宣言 parameter n=8; generic (n:integer :=8); parameter reset=2'b00; constant reset:std_logic_vector(1 downto 0) :="00" ビット演算子 & | ~ ^ 論理演算子 && || ! and or not xor 関係演算子 == != >= <= = /= >= <= 定数表現 1ビット 1'b1 1'b0 1'bz '1' '0' 'Z' 定数表現 2進数 8'b1111_0000 B"1111_0000" 8'bzzzz_zzzz B"ZZZZ_ZZZZ" ( B は 省 略 可 ) 8'hf0 8'hF0 X"F0" 8'hzz 8'hZZ X"ZZ" 定 数 表 現 16 進 数 コメント // 1行のみのコメント -- 1行のみのコメント /* 複 数 行 に わ た る コ メ ン ト */ 連接演算 {cout,s} 連接子 ('0' & a) 集合体 (0=>cin,others=>'0') Verilog/VHDL対応表 2 言語 Verilog always 文 always@(信 号 名 process 文 or 信 号 名 ) begin : end if 文 VHDL process(信 号 名 ,信 号 名 ) begin : ;な し end process; if(条 件 式 ) 式 1; if(条 件 式 ) then 式 1; else 式 2; else 式 2; end if; 多 重 if 文 if(条 件 式 1) 式 1; if(条 件 式 1) then 式 1; else if(条 件 式 2) 式 2; elsif(条 件 式 2) then 式 2; else 式 3; else 式 3; elseif で は な い end if; case 文 case(信 号 名 ) case(信 号 名 ) is ケ ー ス 1: 式 1; when ケ ー ス 1 => 式 1; ケ ー ス 2: 式 2; when ケ ー ス 2 => 式 2; : : default: 式 n; endcase クロック表現 when others => 式 n; ;な し end case; always@(posedge clk) begin process(clk) begin : if(clk'event and clk='1') then end : end if; end process; 同期クリア always@(posedge clk) begin process(clk) begin if(同 期 ク リ ア 信 号 ) 式 1; else 式 2; if(clk'event and clk='1') then if(同 期 ク リ ア 信 号 ) then 式 1; end else 式 2; end if; end if; end process; 非同期クリア always@(posedge clk or negedge 非 同 期 ク リ ア 信 号 ) begin if(非 同 期 ク リ ア 信 号 ) then 式 1; if(~非 同 期 ク リ ア 信 号 ) 式 1; else 式 2; end process(clk,非 同 期 ク リ ア 信 号 ) begin elsif(clk'event and clk='1') then 式 2; end if; end process; Verilog/VHDL対応表 3 言語 Ver i l og V HD L ト ラ イ ス テ ート as s i gn ト ラ イ ス テ ート 信号名 = ト ラ イ ス テ ート 信号名 <= 制御信号名 ? 接続信号名 : 1' bZ; 特記事項 ・ al ways ブロ ッ ク 内の信号代入文の 辺は r eg 宣言し た 信号名であ る こ と ・ 大文字、 小文字の区別有り 接続信号名 when ( 制御信号条件式) el s e ' Z' ; 左 ・ out 宣言し た 信号は、ア ーキ テ ク チャ 内部でその値を 信 号 代 入 文 の 右 辺 に は 使 え な い ( 読出し 参照で き な い ) 。 左辺には使用でき る ので、 ロ ーカ ル信号を 宣言し 、 出力へは <=で再代入する こ と 。 右辺にはロ ーカ ル信号を 使う 。 ・ 大文字・ 小文字の区別無し 。 シ ミ ュ レ ーシ ョ ン 用 i ni t i al begi n 基本ブロ ッ ク pr oces s begi n : : end end pr oces s ; 入力信号 reg signal 出力信号 wire signal 遅延時間表現 `timescale 1ns/1ns wait for 100 ns; #100; 繰返し表現 for(i=1;i<=10;i=i+1) begin for i in 1 to 10 loop : サブルーチン : end end loop; task タスク名; procedure プロシージャ名(入力パラメータ; input 入力パラメータ; output 出力パラメータ; 出力パラメータ) is begin begin : : end procedure; end endtask 標準出力 $display report シミュレーション時刻 $time NOW Verilog/VHDL対応表 4
© Copyright 2024 ExpyDoc