2009-07-01から1ヶ月間の記事一覧

procedure for testbench

procedureを使うと、シミュレーションが楽に書ける。 architecture test of test_module is procedure pe(signal CLK : in std_logic) is begin wait until CLK'event and CLK='1'; end pe; procedure pe( num : in integer; signal CLK : in std_logic) is …

state machineの作り方

ポイントは三つ。 1、state のタイプ宣言は以下の通り。 type STATE is ( STA0 , STA1 , STA2 ); signal CURRENT_STATE,NEXT_STATE : STATE;現在のステートと次のステートを作っておく。 「次」とは、次のクロックのことを指す。2、clkでステートを入れ替…

bit列の一斉初期化

Y<=( 3=>0, 2=>0, 1=>0, 0=>0); の省略として、次のように書ける。 Y<=(3 downto 0 => 0);もしくは、othersを使って、 Y<=(others=>0);と書く。 これらはもちろん、テストベンチの中でしか使えない。。。というか、使わないことにしておくこと。 唯一VHDL中…

TestBenchの一例

LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.all; USE ieee.numeric_std.ALL; ENTITY testbench IS END testbench; ARCHITECTURE behavior OF testbench IS COMPONENT syncFIFO PORT( clk : IN std_logic; reset : IN std_logi…

SRAMの記述

architecture RTL ... ... type SRAM is array (0 to 2**L - 1) of STD_LOGIC_VECTOR ( W-1 downto 0); signal my_sram : SRAM; ... begin ... end RTL;とかく。

FPGAメモ

・「カウンタを作るとき、最大値を超えたら勝手に元に戻るだろう」という発想は危険。きちんと初期値に戻るよう記述してあげないと(何故か)シミュレーションが途中で止まる。・Integerの範囲指定は、 signal : INTEGER range 0 to 2** -1 := ; として行う…