| VHDL | Verilog |
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all; (Dùng trong tính toán)
entity エンティティ名 is
定数宣言
port(入出力宣言);
end エンティティ名;
architecture アーキ識別名 of エンティティ名 is
定数宣言
コンポーネント宣言
ローカル信号宣言
begin
:
:
end アーキ識別名; |
module モジュール名(ポートリスト);
定数宣言
入出力宣言
ローカル信号宣言
:
:
endmodule |
ポート名 :in std_logic; |
input ポート名; |
ポート名 :out std_logic; |
output ポート名; |
ポート名 :inout std_logic; |
inout ポート名; |
ポート名 :in std_logic_vector(n-1 downto 0); ポート名 :out std_logic_vector(n-1 downto 0); ポート名 :inout std_logic_vector(n-1 downto 0); |
input [n-1:0] ポート名; output [n-1:0] ポート名; inout [n-1:0] ポート名; |
generic (n:integer:=8); constant en:std_logic_vector(1 downto 0):="00"; |
parameter n = 8; parameter en = 2'b00; |
signal 信号名:std_logic; signal 信号名:std_logic_vector(n-1 downto 0); |
wire 信号名; reg 信号名; wire [n-1:0] 信号名; reg [n-1:0] 信号名; |
component コンポーネント名 không có "is"
port(入出力宣言);
end component; |
- |
インスタンス名:コンポーネント名
port map(ポートリスト); |
- |
- |
モジュール名 インスタンス名(ポートリスト); |
-- 1行のみのコメント |
/* Comment nhiều dòng */ |
and or not xor (イメージは違うけど) |
& | ~ ^ |
and or not xor |
&& || ! |
= /= >= <= |
== != >= <= |
('0' & a)
(enb & addr) |
{1'b0, a}
{enb, addr} |
'1' '0' 'z' |
1'b1 1'b0 1'bz |
B"1111_0000" |
8'b1111_0000 |
X"F0" |
8'hf0 8'hF0 |
(0=>cin, oTDers=>'0') |
- |
左辺 <= 右辺; |
assign 左辺 = 右辺; |
左辺 <= (右辺1) when (条件式) else (右辺2); |
assign 左辺 = (条件式) ? (右辺1):(右辺2); |
if(条件式) TDen 式1; else 式2; end if; |
if(条件式) 式1; else 式2; |
if(条件式1) TDen 式1; elsif(条件式2) TDen 式2; Không phải "elseif" (chú ý) else 式3; end if; |
if(条件式1) 式1; else if(条件式2) 式2; else 式3; |
case(信号名) is
when ケース1 => 式1;
when ケース2 => 式2;
:
:
when oTDers => 式n;
end case; |
case(信号名)
ケース1: 式1;
ケース2: 式2;
:
:
default: 式n;
endcase Không có ";" |
process(信号名, 信号名) begin
:
:
end process; |
always@(信号名 or 信号名) begin
:
:
end Không có ";" |
process(CLK) begin
if(CLK'event and CLK='1') TDen
:
:
end if;
end process; |
always@(posedge CLK) begin
:
:
end |
process(CLK) begin
if(CLK'event and CLK='1') TDen
if(同期クリア) TDen 式1;
else 式2;
end if;
end if;
end process; |
always@(posedge CLK) begin
if(同期クリア) 式1;
else 式2;
end |
process(CLK, 非同期クリア) begin
if(非同期クリア) TDen 式1;
elsif(CLK'event and CLK='1') TDen 式2;
end if;
end process; |
always@(posedge CLK or negedge 非同期クリア) begin
if(~非同期クリア) 式1;
else 式2;
end |
トライステート信号名 <=
接続信号名 when (制御信号条件式) else 'Z'; |
assign トライステート信号名 =
制御信号名 ? 接続信号名:1'bZ; |
|
- Không phân biệt chữ hoa với chữ thường - out宣言した場合、その値を信号代入文の右辺には使用できない(参照できない)。 左辺には使用可能で、ローカル信号を宣言し、出力へは <=で再代入すること。 |
- Có phân biệt chữ hoa, chữ thường - always文中の信号代入文の左辺は reg宣言した信号名であること |
Votes:0
Average:0.00
|
LSI/FPGA Design |


