LSI設計・検証に関する話題など Verilog,SystemVerilog,OVL,FPGA,ASIC,... 前回の続き さて、バレルシフタをverilogでどう記述するかというとこんな感じでしょうか? parameter DATA_WIDTH = 8; parameter SHIFT_WIDTH = 3; input [DATA_WIDTH-1:0] iDATA_IN; input [SHIFT_WIDTH-1:0] iSHIFT; output [DATA_WIDTH-1:0] oDATA_OUT; wire [(DATA_WIDTH*2)-1:0] shiftedData; assign shiftedData = {iDATA_IN,iDATA_IN} << iSHIFT; assign oDATA_OUT = shiftedData[(DATA_WIDTH*2)-1:DATA
検索用語を入力 Web サイト内を検索 検索フォームを送信 お問い合わせ TOP > Verilog モジュールの書き方 テストベンチ Verilogのコーディング ファンクション 論理式を用いたゲート回路 下位モジュール ブロッキング代入とノンブロッキング代入 if文 case文 beginとend 順序回路 $readmemhと$readmemb $writememhと$writememb タスク for文とwhile文 repeatとforever文 タイミング制御 抽象データ型 forkとjoin 文字列の扱い disable 値を返すシステムタスク 階層アクセス ファイル入出力システムタスク シミュレーションの中断と終了 コンパイラ指示子 Copyright 2007 ためになるホームページ All Rights Reserved.
となる。あるモジュール内で下位モジュールを生成する際に一つの時は、「モジュール名=インスタンス名」でも構わないが、複数のサブモジュールのインスタンスを生成する時は、 別々に名前をつけてあげる必要がある。 ///////////////////////////////////////////////////////////////////////////////// //TESTBENCH // テストベンチ ///////////////////////////////////////////////////////////////////////////////// module TESTBENCH; reg [3:0] INA; reg CLK; wire [3:0] XOUT; // 1周期1000ユニットに設定 parameter STEP = 10; // クロックの定義 alw
シミュレーションをCtrl-cで止めた時の対処。 C1>とかなると思いますが、$finish;を入力して終了してあげましょう。 ↑ $stopと$finish;の使い方 $stopはシミュレーションを途中に止めたい時に使います。コンソールでやってる場合には対話モードに。Modelsimを使うときにはこっちで。 $finish;ですが、引数を取れます。 $finish(0); :シミュレーションイベントの数、CPU時間 $finish(1); :"0"の内容+シミュレーションのストップ時間(デフォルト) $finish(2); :"1"の内容+使用メモリ量 ↑ Simvisionを使う。 verilogシミュレーションでsimvision用のファイルを作成するには、 initial begin #0 $shm_open("test.shm"); $shm_probe("AC"); . . .
//テストベンチ module testbench; reg CLK; reg RST; wire [11:0] ADDR; wire [31:0] XDATA; DUMMY_ROM DUMMY_ROM( .CLK(CLK), .RST(RST), .ADDR(ADDR), .XDATA(XDATA) ); DUMMY_ADDR DUMMY_ADDR( .CLK(CLK), .RST(RST), .XADDR(ADDR) ); parameter STEP = 10; always #(STEP / 2) CLK = ~CLK; initial begin $dumpfile("wave.vcd"); $dumpvars(0, testbench); $monitor ("%t: CLK = %b, RST = %b , ADDR = %h, XDATA = %h", $time, CLK
Verilog-HDL 入門 私は,LSI に関する研究をしているため,回路をテキストで記述する(ネットリストを書く)ことがあります。これが,結構面倒くさい!! ある時ふと「Verilog」で回路を設計してみようと思い,記述してみると Verilog で記述する方が“ん10倍”楽でした(← 専門の人からすると,当然だと思いますが…)。 今回,Verilog に関する自分用のメモとしてこのページに残すことにしました。ただし,私は Verilog-HDL の専門家ではないので,誤った記述が多々存在するかもしれません。その場合には,ぜひご一報ください。 (注:プログラムも表も,キャプションを全て“図”としています) メインメニュー Verilog-HDL とは Verilog シミュレータと波形表示ソフトのインストール いりなり Verilog を書いて,シミュレーションしてみる Verilog
5.3 モジュール宣言(module, endmodule) module モジュール名(入出力ポート名); … … 回路の記述 … … endmodule モジュールとは回路ブロックのことです。Verilog-HDL で回路やシミュレーションの記述を行うときには必ず宣言します。モジュールの最後は endmodule と記述します。 module には必ずセミコロン“;”が必要ですが,endmodule には必要ありません。 モジュール名には適当な名前(識別子)を付けることができます。入出力ポート名には,入力信号と出力信号の両方を記述してください。 5.4 ポート宣言(input, output) input 入力信号名; output 出力信号名; モジュール宣言の入出力ポート名で記述したものを,入力と出力に分けて宣言します。またバスの宣言も可能です。たとえば, input a3, a2
回路記述やテストベンチでよく用いるものについて,Verilog HDLの文法の要約を示します.簡略化して表現したものもあります.また,省略できる項目には[ ]を付けました. (編集部) 1.基本項目1.1 識別子● 通常の識別子 英字またはアンダ・スコア( _ )で始まる文字列.文字列中には,英字,数字,アンダ・スコア( _ ),ドル記号($)を含むことができる.大文字と小文字を区別する.《記述例》 正しい識別子 cnt4,_reset,TEN$,INPUT (大文字なので予約語のinputとは区別できる) 誤った識別子 74LS00(先頭が数字),$test(先頭が$),xor(予約語) ● エスケープされた識別子 バック・スラッシュ( \ )で始まる文字列(日本語環境では¥で始まる文字列).任意の印字可能なASCII文字を含むことができる.ホワイト・スペース(スペース,タブ,改行)が識
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く