スライド タイトルなし

言語
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