• 検索結果がありません。

エンティティ : インタフェースを定義 entity HLFDD is port (, : in std_logic ;, : out std_logic ) ; end HLFDD ; アーキテクチャ : エンティティの実現 architecture RH1 of HLFDD is <= xor

N/A
N/A
Protected

Academic year: 2021

シェア "エンティティ : インタフェースを定義 entity HLFDD is port (, : in std_logic ;, : out std_logic ) ; end HLFDD ; アーキテクチャ : エンティティの実現 architecture RH1 of HLFDD is <= xor"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)

1/16

VHDL を使った

PLD 設計のすすめ

2001/7/13 大久保 弘崇

http://www.aichi-pu.ac.jp/ist/~ohkubo/ 2/16

VHDL 設計のメリット

汎用の設計になる

(どこのデバイスにも搭載可能)

設計の再利用が促進

MIL記号のCADでの設計との比較。

Verilog-HDL などでも別に同じ。

メーカー独自のHDLは、今となっては特にメリットはない。

PLD 利用のメリット

小型化・高集積化

回路の修正が容易

3/16

PLD 制作の作業フロー

動作記述

*.vhd

構成ファイル

論理合成

配置配線

テストベンチ

*.vhd

シミュレーション

動作検証

4/16

VHDL 記述の概略 : 階層構造

◇エンティティ:インタフェースを定義

◇アーキテクチャ:実現を定義

◇コンポーネント:エンティティを利用

5

(2)

5/16

エンティティ:インタフェースを定義

entity HALFADD is

port ( A,B : in std_logic ;

S,C : out std_logic ) ;

end HALFADD ;

A

B

S

C

HALFADD

6/16

A

B

S

C

HALFADD

アーキテクチャ:エンティティの実現

architecture ARCH1 of HALFADD is

begin

S <= A xor B ;

C <= A and B ;

end ARCH1 ;

ひとつのエンティティに対して、いくつもアーキテクチャを

定義することができる。

例) 加算回路のエンティティに、キャリーの繰り上げ方の異

なる複数のアーキテクチャが宣言できる。

ARCH1

7/16

コンポーネント:部品の呼び出し

entity FULLADD is

port (A,B,Ci : in std_logic ;

S,Co

: out std_logic ) ;

end FULLADD ;

architecture FA1 of FULLADD is

component HALFADD

port (A,B : in std_logic ;

S,C : out std_logic ) ;

end component ;

(つづく)

8/16

signal S1, C1, C2 : std_logic ;

begin

HA1 : HALFADD

port map(A=>A,B=>B,S=>S1,C=>C1);

HA2 : HALFADD

port map(S1,Ci,S,C2) ;

Co <= C1 or C2 ;

end FA1 ;

(

architecture FA1

のつづき...)

B

Ci

S1

C1

C2

S

Co

FULLADD

FA1

HA1

A B S C

HA2

A B S C

A

(3)

9/16

VHDL のデータ型

std_logic 'U' :

Unknown

'X' :

Undefined

'0' :

Low

'1' :

High

'Z' :

Hi-Z

'-' :

Don't Care

std_logic_vector

Integer

Character

ユーザ定義型

(

列挙・部分値

)

0/16

ベクタの例

entity ADDER8bit is

port (A,B : in std_logic_vector (7 downto 0) ; S : out std_logic_vector (7 downto 0) ; Co : out std_logic ) ;

[中略]

signal C : std_logic_vector (8 downto 0) ;

L : for i in 0 to 7 generate FAx : FULLADD

port map (A=>A(i),B=>B(i),C=>C(i+1),S=>S(i)); end generate; C(0) <= '0' ; Co <= C(8) ; 1/16

プロセス:逐次処理風の記述が可能

architecture A1 of SELECT is

begin

PROC1 : process (A,B,SEL)

begin

if SEL='1' then Y <= A ;

else Y <= B ;

end if ;

end process ;

end A1 ;

センシティビィティリスト

A

B

SEL

Y

 プロセス文は、センシティビティリストの信号が変化したとき、プロセス内で 信号代入している(出力)信号を対応して変化させる回路を生成する。  センシティビティリストの信号が変化しない間は、それ以外の(入力)信号が 変化しても、出力は変化せず先の値を保持する。  そのような信号をもつプロセスは一般に順序回路に合成されるが、ここの 例のVHDLプログラムのように、組合せ回路で充分表現できるものもある。そ ういうプロセスはちゃんと組合せ回路に合成される(はず)。 2/16

状態の保持 : CPU 内レジスタの例

architecture REG1 of REGISTER is

signal content : std_logic_vector (7 downto 0) ; begin

write : process ( reset, clock )

if reset = '1' then content <= '00000000' ;

elsif ( clock'event and clock = '1') then if we='1' then content <= inbus ; endif ;

endif ; end process ;

outbus <= content when oe='1' else 'ZZZZZZZZ' ; end REG1 ;

値を入れる信号線

非同期リセット

立ち上がり動作

Ci=>C(i), Co

(4)

3/16

検証もVHDLの枠組みで

テスト対象の

VHDL プログラム

テストパターン

結果を

比較

テストベンチのVHDLプログラム

・ファイル入出力

・wait, after, assert 構文

・配置配線後のタイミング検証も

合成不可能なことがらもVHDLは記述可能

4/16

実演1

HalfAdd → FullAdd → 4bit Adder

実演2

プロジェクト作成、シミュレーション、制約、合成、ダウンロード コンポーネント設計、有限状態機械(FSM) カウンタ クロック 速度指定 数値入力 比較器 4 4 リセット eq 内部状態 状態 遷移 出力生成 Finite State Machine

LED点滅 5/16

参考文献

HDLによるデジタル設計の基礎

桜井 至, テクノプレス, 1997, 3,200円

実践的に例から入っていくのでとっつきやすい。Verilog-HDL の例 も平行して掲載されている。詳細に入っていくと物足らなくなる。

VHDLによるハードウェア設計入門

長谷川 裕恭, CQ出版社, 1995, 2300円

変に合成結果の詳細に入り込んでいるところがあるが、 一通りのことが説明されている。

VHDL言語入門, Jayaram Bhasker,

CQ出版社, 1995, 3200円

訳本。

VHDL, Douglas L.Perry, ASCII, 1996, 4500円

これも訳本。この中で一番字が多い。 6/16

関連URL

Xilinx

www.xilinx.co.jp www.xilinx.com

Altera

www.altera.co.jp www.altera.com

ModelTech

www.model.com

ビーアイティ

www3.famille.ne.jp/~bit/

(5)

Fri Jul 13 01:58:52 2001 rotator.vhd page 1

1 library IEEE;

2 use IEEE.STD_LOGIC_1164.ALL; 3

4 entity rotator is

5 Port ( pulse : in std_logic;

6 led : out std_logic_vector(7 downto 0)); 7 end rotator;

8

9 architecture behavioral of rotator is

10 type tmystate is (s0,u1,u2,u3,u4,u5,u6,s7,d6,d5,d4,d3,d2,d1); 11 signal mystate : tmystate ;

12 begin

13 -- state machine 14 process(pulse) 15 begin

16 if (pulse’event and pulse = ’1’) then 17 case mystate is 18 when s0 => mystate <= u1 ; 19 when u1 => mystate <= u2 ; 20 when u2 => mystate <= u3 ; 21 when u3 => mystate <= u4 ; 22 when u4 => mystate <= u5 ; 23 when u5 => mystate <= u6 ; 24 when u6 => mystate <= s7 ; 25 when s7 => mystate <= d6 ; 26 when d6 => mystate <= d5 ; 27 when d5 => mystate <= d4 ; 28 when d4 => mystate <= d3 ; 29 when d3 => mystate <= d2 ; 30 when d2 => mystate <= d1 ; 31 when d1 => mystate <= s0 ; 32 end case; 33 end if ; 34 end process ; 35 -- signal output 36 process(mystate) 37 begin 38 -- led <= "00000000" ; 39 case mystate is 40 when s0 => led <= "10000000" ; 41 when u1 => led <= "01000000" ; 42 when u2 => led <= "00100000" ; 43 when u3 => led <= "00010000" ; 44 when u4 => led <= "00001000" ; 45 when u5 => led <= "00000100" ; 46 when u6 => led <= "00000010" ; 47 when s7 => led <= "00000001" ; 48 when d6 => led <= "00000010" ; 49 when d5 => led <= "00000100" ; 50 when d4 => led <= "00001000" ; 51 when d3 => led <= "00010000" ; 52 when d2 => led <= "00100000" ; 53 when d1 => led <= "01000000" ; 54 end case; 55 end process ; 56 57 end behavioral;

Fri Jul 13 01:35:32 2001 comparate.vhd page 1

1 library IEEE;

2 use IEEE.STD_LOGIC_1164.ALL; 3

4 entity comparate is

5 Port ( a,b : in std_logic_vector(3 downto 0); 6 eq : out std_logic);

7 end comparate; 8

9 architecture behavioral of comparate is 10

11 begin

12 eq <= ’1’ when a = b else ’0’ ; 13 end behavioral;

(6)

Fri Jul 13 02:03:12 2001 kr.vhd page 1 1 library IEEE; 2 use IEEE.STD_LOGIC_1164.ALL; 3 4 entity kr is 5 Port ( clk : in std_logic;

6 inp : in std_logic_vector(3 downto 0); 7 led : out std_logic_vector(7 downto 0);

8 mon : out std_logic_vector(3 downto 0)); 9 end kr;

10

11 architecture kr1 of kr is 12 component counter is

13 Port ( clk,rst : in std_logic;

14 val : out std_logic_vector(3 downto 0)); 15 end component;

16 component comparate is

17 Port ( a,b : in std_logic_vector(3 downto 0); 18 eq : out std_logic);

19 end component;

20 component rotator is

21 Port ( pulse : in std_logic;

22 led : out std_logic_vector(7 downto 0)); 23 end component;

24 signal countval : std_logic_vector(3 downto 0); 25 signal pulse : std_logic ;

26 begin

27 CT1 : counter port map (clk,pulse,countval) ; 28 CP1 : comparate port map (countval,inp,pulse) ; 29 RT1 : rotator port map (pulse,led) ;

30 mon <= countval ; 31 end kr1;

Fri Jul 13 01:33:42 2001 counter.vhd page 1

1 library IEEE; 2 use IEEE.STD_LOGIC_1164.ALL; 3 use IEEE.STD_LOGIC_UNSIGNED.ALL; 4 5 entity counter is 6 Port ( clk,rst : in std_logic;

7 val : out std_logic_vector(3 downto 0)); 8 end counter;

9

10 architecture ct1 of counter is 11

12 signal value : std_logic_vector(3 downto 0) ; 13

14 begin 15

16 process(clk) 17 begin

18 if (clk’event and clk=’1’) then 19 if rst=’1’ then 20 value <= "0000" ; 21 else 22 value <= value + "0001" ; 23 end if; 24 end if ; 25 end process ; 26 27 val <= value ; 28 29 end ct1;

参照

関連したドキュメント

9, Tokyo: The Centre for East Asian Cultural Studies for Unesco.. 1979 The Meaninglessness

averaging 後の値)も試験片中央の測定点「11」を含むように選択した.In-plane averaging に用いる測定点の位置の影響を測定点数 3 と

 本校は,2019年度から文部科学省WWL(ワール

そればかりか,チューリング機械の能力を超える現実的な計算の仕組は,今日に至るま

1-1 睡眠習慣データの基礎集計 ……… p.4-p.9 1-2 学習習慣データの基礎集計 ……… p.10-p.12 1-3 デジタル機器の活用習慣データの基礎集計………

議論を深めるための参 考値を踏まえて、参考 値を実現するための各 電源の課題が克服さ れた場合のシナリオ

②立正大学所蔵本のうち、現状で未比定のパーリ語(?)文献については先述の『請来資料目録』に 掲載されているが

トリガーを 1%とする、デジタル・オプションの価格設定を算出している。具体的には、クー ポン 1.00%の固定利付債の価格 94 円 83.5 銭に合わせて、パー発行になるように、オプション