Submit Search
Verilog-HDL Tutorial (8)
0 likes
983 views
Hiroki Nakahara
Verilog-HDL Tutorial Using DE0 FPGA Board
Education
Read more
1 of 22
Download now
Downloaded 15 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
More Related Content
PDF
Verilog-HDL Tutorial (7)
Hiroki Nakahara
PDF
OpenFOAMの壁関数
Fumiya Nozaki
PDF
カーネル法:正定値カーネルの理論
Daiki Tanaka
PDF
第12回計算機構成
眞樹 冨澤
PDF
第10回 計算機構成
眞樹 冨澤
PDF
Rによるデータサイエンス:12章「時系列」
Nagi Teramo
PDF
Rパッケージ“KFAS”を使った時系列データの解析方法
Hiroki Itô
PDF
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
Fumiya Nozaki
Verilog-HDL Tutorial (7)
Hiroki Nakahara
OpenFOAMの壁関数
Fumiya Nozaki
カーネル法:正定値カーネルの理論
Daiki Tanaka
第12回計算機構成
眞樹 冨澤
第10回 計算機構成
眞樹 冨澤
Rによるデータサイエンス:12章「時系列」
Nagi Teramo
Rパッケージ“KFAS”を使った時系列データの解析方法
Hiroki Itô
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
Fumiya Nozaki
What's hot
(6)
PDF
Stanとdlmによる状態空間モデル
Hiroki Itô
PPTX
平成26年度熊本高専Arduino講座 第3週 DCモータの制御
Katsuhiro Morishita
PDF
【展開用】日曜数学会 Sinc関数の積分について
和人 桐ケ谷
PDF
Boundary Conditions in OpenFOAM
Fumiya Nozaki
PDF
OpenFOAM の境界条件をまとめよう!
Fumiya Nozaki
PDF
OpenFOAMにおけるDEM計算の力モデルの解読
takuyayamamoto1800
Stanとdlmによる状態空間モデル
Hiroki Itô
平成26年度熊本高専Arduino講座 第3週 DCモータの制御
Katsuhiro Morishita
【展開用】日曜数学会 Sinc関数の積分について
和人 桐ケ谷
Boundary Conditions in OpenFOAM
Fumiya Nozaki
OpenFOAM の境界条件をまとめよう!
Fumiya Nozaki
OpenFOAMにおけるDEM計算の力モデルの解読
takuyayamamoto1800
Ad
Viewers also liked
(20)
PDF
Verilog-HDL Tutorial (5)
Hiroki Nakahara
PDF
Naist2015 dec ver1
Hiroki Nakahara
PDF
Nested RNSを用いたディープニューラルネットワークのFPGA実装
Hiroki Nakahara
PDF
Altera sdk for open cl アンケート集計結果(公開版)
Hiroki Nakahara
PDF
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
Hiroki Nakahara
PDF
Tensor flow usergroup 2016 (公開版)
Hiroki Nakahara
PDF
FPGAX2016 ドキュンなFPGA
Hiroki Nakahara
PDF
Verilog-HDL Tutorial (13)
Hiroki Nakahara
PDF
Verilog-HDL Tutorial (6)
Hiroki Nakahara
PDF
Verilog-HDL Tutorial (14)
Hiroki Nakahara
PDF
Verilog-HDL Tutorial (4)
Hiroki Nakahara
PDF
Funcargs & other fun with pytest
Brianna Laugher
PDF
Verilog-HDL Tutorial (12)
Hiroki Nakahara
PDF
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Shinya Takamaeda-Y
PDF
FPGAX6_hayashi
愛美 林
PDF
PythonとVeriloggenを用いたRTL設計メタプログラミング
Shinya Takamaeda-Y
PDF
Verilog-HDL Tutorial (11)
Hiroki Nakahara
PDF
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
Shinya Takamaeda-Y
PDF
FPGA・リコンフィギャラブルシステム研究の最新動向
Shinya Takamaeda-Y
PDF
Verilog-HDL Tutorial (15) hardware
Hiroki Nakahara
Verilog-HDL Tutorial (5)
Hiroki Nakahara
Naist2015 dec ver1
Hiroki Nakahara
Nested RNSを用いたディープニューラルネットワークのFPGA実装
Hiroki Nakahara
Altera sdk for open cl アンケート集計結果(公開版)
Hiroki Nakahara
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
Hiroki Nakahara
Tensor flow usergroup 2016 (公開版)
Hiroki Nakahara
FPGAX2016 ドキュンなFPGA
Hiroki Nakahara
Verilog-HDL Tutorial (13)
Hiroki Nakahara
Verilog-HDL Tutorial (6)
Hiroki Nakahara
Verilog-HDL Tutorial (14)
Hiroki Nakahara
Verilog-HDL Tutorial (4)
Hiroki Nakahara
Funcargs & other fun with pytest
Brianna Laugher
Verilog-HDL Tutorial (12)
Hiroki Nakahara
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Shinya Takamaeda-Y
FPGAX6_hayashi
愛美 林
PythonとVeriloggenを用いたRTL設計メタプログラミング
Shinya Takamaeda-Y
Verilog-HDL Tutorial (11)
Hiroki Nakahara
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
Shinya Takamaeda-Y
FPGA・リコンフィギャラブルシステム研究の最新動向
Shinya Takamaeda-Y
Verilog-HDL Tutorial (15) hardware
Hiroki Nakahara
Ad
Similar to Verilog-HDL Tutorial (8)
(20)
PDF
Verilog-HDL Tutorial (9)
Hiroki Nakahara
PPTX
論理回路2017 no.6
Hironori Nakajo
KEY
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
Yasuhiro Ishii
PPTX
自作RISC-VチップでLチカをやってみた
Junichi Akita
PPT
Uart受信設計2013
Kiyoshi Ogawa
PDF
SFC デザイン言語WS(電子工作)第3回「電子工作の作法」
Makoto Hirahara
PDF
Arduinoでプログラミングに触れてみよう 続編
Hiromu Yakura
PPT
計算機理論入門02
Tomoyuki Tarumi
PPTX
Arduino 入門
mitunaga
PPTX
Androidとfpgaを高速fifo通信させちゃう
ksk sue
PPT
平成26年度熊本高専Arduino講座 第1週 センサーとArduno及びProcessingとの連携
Katsuhiro Morishita
PDF
Bluetooth通信の仕組みと活用法紹介
Takehiko YOSHIDA
PDF
d-kami x86-1
Daisuke Kamikawa
PDF
Japanino Workshop #3
Shigeru Kobayashi
PPT
20030203 doctor thesis_presentation_makotoshuto
Makoto Shuto
PDF
Dp tf stm32_cubemx0418j
hideyukiaraki
PDF
ものづくりプロジェクトII 一日でわかるArduino入門
Yoichi Yamazaki
PPT
機械語の動作トレース による処理装置のはたらきの説明スライド
seastar orion
PDF
Japanino Workshop #2
Shigeru Kobayashi
PDF
Adk互換モジュールのbt対応改造
Reiko Yamashita
Verilog-HDL Tutorial (9)
Hiroki Nakahara
論理回路2017 no.6
Hironori Nakajo
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
Yasuhiro Ishii
自作RISC-VチップでLチカをやってみた
Junichi Akita
Uart受信設計2013
Kiyoshi Ogawa
SFC デザイン言語WS(電子工作)第3回「電子工作の作法」
Makoto Hirahara
Arduinoでプログラミングに触れてみよう 続編
Hiromu Yakura
計算機理論入門02
Tomoyuki Tarumi
Arduino 入門
mitunaga
Androidとfpgaを高速fifo通信させちゃう
ksk sue
平成26年度熊本高専Arduino講座 第1週 センサーとArduno及びProcessingとの連携
Katsuhiro Morishita
Bluetooth通信の仕組みと活用法紹介
Takehiko YOSHIDA
d-kami x86-1
Daisuke Kamikawa
Japanino Workshop #3
Shigeru Kobayashi
20030203 doctor thesis_presentation_makotoshuto
Makoto Shuto
Dp tf stm32_cubemx0418j
hideyukiaraki
ものづくりプロジェクトII 一日でわかるArduino入門
Yoichi Yamazaki
機械語の動作トレース による処理装置のはたらきの説明スライド
seastar orion
Japanino Workshop #2
Shigeru Kobayashi
Adk互換モジュールのbt対応改造
Reiko Yamashita
More from Hiroki Nakahara
(17)
PDF
FCCM2020: High-Throughput Convolutional Neural Network on an FPGA by Customiz...
Hiroki Nakahara
PDF
ROS User Group Meeting #28 マルチ深層学習とROS
Hiroki Nakahara
PDF
FPGAX2019
Hiroki Nakahara
PDF
SBRA2018講演資料
Hiroki Nakahara
PDF
DSF2018講演スライド
Hiroki Nakahara
PDF
ISCAS'18: A Deep Neural Network on the Nested RNS (NRNS) on an FPGA: Applied ...
Hiroki Nakahara
PDF
ISMVL2018: A Ternary Weight Binary Input Convolutional Neural Network
Hiroki Nakahara
PDF
FPGA2018: A Lightweight YOLOv2: A binarized CNN with a parallel support vecto...
Hiroki Nakahara
PDF
FPT17: An object detector based on multiscale sliding window search using a f...
Hiroki Nakahara
PDF
(公開版)Reconf研2017GUINNESS
Hiroki Nakahara
PDF
(公開版)FPGAエクストリームコンピューティング2017
Hiroki Nakahara
PDF
A Random Forest using a Multi-valued Decision Diagram on an FPGa
Hiroki Nakahara
PDF
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
Hiroki Nakahara
PDF
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
Hiroki Nakahara
PDF
FPL15 talk: Deep Convolutional Neural Network on FPGA
Hiroki Nakahara
PDF
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
Hiroki Nakahara
PDF
Verilog-HDL Tutorial (15) software
Hiroki Nakahara
FCCM2020: High-Throughput Convolutional Neural Network on an FPGA by Customiz...
Hiroki Nakahara
ROS User Group Meeting #28 マルチ深層学習とROS
Hiroki Nakahara
FPGAX2019
Hiroki Nakahara
SBRA2018講演資料
Hiroki Nakahara
DSF2018講演スライド
Hiroki Nakahara
ISCAS'18: A Deep Neural Network on the Nested RNS (NRNS) on an FPGA: Applied ...
Hiroki Nakahara
ISMVL2018: A Ternary Weight Binary Input Convolutional Neural Network
Hiroki Nakahara
FPGA2018: A Lightweight YOLOv2: A binarized CNN with a parallel support vecto...
Hiroki Nakahara
FPT17: An object detector based on multiscale sliding window search using a f...
Hiroki Nakahara
(公開版)Reconf研2017GUINNESS
Hiroki Nakahara
(公開版)FPGAエクストリームコンピューティング2017
Hiroki Nakahara
A Random Forest using a Multi-valued Decision Diagram on an FPGa
Hiroki Nakahara
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
Hiroki Nakahara
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
Hiroki Nakahara
FPL15 talk: Deep Convolutional Neural Network on FPGA
Hiroki Nakahara
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
Hiroki Nakahara
Verilog-HDL Tutorial (15) software
Hiroki Nakahara
Verilog-HDL Tutorial (8)
1.
1 Verilog-HDL 講習会DE0編(8) 順序回路記述(3) ∼コンパクトな乗算器∼ 3, July,
2013 鹿児島大学 中原 啓貴
2.
2 2進数の乗算 (例: 18 x
21 = 378) 1 0 0 1 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 × 18 21 256+64+32+16+8+2=378 各列毎に加算 乗数=1 → 被乗数 乗数=0 → 0ベクトル
3.
3 LUTを使った直接表現 LUT数が 入力ビット数nに 対して 指数関数的に 爆発してしまう
4.
4 順序回路を使う • 乗数の各桁(ビット)に応じて ‒ 0のとき,
途中の結果を左シフト ‒ 1のとき, 被乗数を途中の結果に加算して左シフト 1 0 0 1 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 × 18 21 各列毎に加算 乗数=1 → 被乗数 乗数=0 → 0ベクトル よく見ると, 被乗数を左シフト しながら加算すれば良い 000010010 000100100 001001000 010010000 100100000
5.
5 アルゴリズム 1. 途中結果を記憶するレジスタTEMPを初期化. TEMP
<= 0; 2. 乗数Bのi番目のビットbi (i=0,1,2,...)に対して 1. bi==0のとき, TEMP <= TEMP; 2. bi==1のとき, TEMP <= TEMP + A; // A は被乗数 3. A <= A << 1; とし, 全ての桁の計算が終わるまで2. を繰返す 4. 全ての桁の計算が終われば, RESULT に TEMPを格納. 1 0 0 1 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 × 18 21 各列毎に加算 乗数=1 → 被乗数 乗数=0 → 0ベクトル
6.
6 状態遷移図 Inital Q1 Reset R_A <=
0; R_B <= 0; TEMP <= 0; RESULT <= 0; NONE if (R_B[0] == 1'b0) TEMP <= 10'b0; else TEMP <= R_A; R_A <= R_A << 1; Q2 NONE R_A <= A; R_B <= B; TEMP <= 0; NONE if (R_B[1] == 1'b0) TEMP <= TEMP; else TEMP <= TEMP +R_A; R_A <= R_A << 1; Q3 NONE if (R_B[2] == 1'b0) TEMP <= TEMP; else TEMP <= TEMP +R_A; R_A <= R_A << 1; Q4Q5 NONE if (R_B[3] == 1'b0) TEMP <= TEMP; else TEMP <= TEMP +R_A; R_A <= R_A << 1; NONE if (R_B[4] == 1'b0) RESULT <= TEMP; else RESULT <= TEMP +R_A;
7.
7 DE0ボードに合わせて 信号線名を変更 Inital Q1 Reset R_A <=
0; R_B <= 0; TEMP <= 0; LEDG <= 0; NONE if (R_B[0] == 1'b0) TEMP <= 10'b0; else TEMP <= R_A; R_A <= R_A << 1; Q2 NONE R_A <= {5'b0,SW[4:0]}; R_B <= SW[9:5]; TEMP <= 0; NONE if (R_B[1] == 1'b0) TEMP <= TEMP; else TEMP <= TEMP +R_A; R_A <= R_A << 1; Q3 NONE if (R_B[2] == 1'b0) TEMP <= TEMP; else TEMP <= TEMP +R_A; R_A <= R_A << 1; Q4Q5 NONE if (R_B[3] == 1'b0) TEMP <= TEMP; else TEMP <= TEMP +R_A; R_A <= R_A << 1; NONE if (R_B[4] == 1'b0) LEDG <= TEMP; else LEDG <= TEMP +R_A; • A -> SW[4:0], B -> SW[9:5], R_AとR_Bでそれぞれ保持 • RESULT -> LEDG[9:0] (5ビットx5ビットの乗算は高々10ビット)
8.
8 状態符号を割当て • A ->
SW[4:0], B -> SW[9:5], R_AとR_Bでそれぞれ保持 • OUT -> LEDG[9:0] (5ビットx5ビットの乗算は高々10ビット) 000 001 Reset R_A <= 0; R_B <= 0; TEMP <= 0; LEDG <= 0; NONE if (R_B[0] == 1'b0) TEMP <= 10'b0; else TEMP <= R_A; R_A <= R_A << 1; 010 NONE R_A <= {5'b0,SW[4:0]}; R_B <= SW[9:5]; TEMP <= 0; NONE if (R_B[1] == 1'b0) TEMP <= TEMP; else TEMP <= TEMP +R_A; R_A <= R_A << 1; 011 NONE if (R_B[2] == 1'b0) TEMP <= TEMP; else TEMP <= TEMP +R_A; R_A <= R_A << 1; 100101 NONE if (R_B[3] == 1'b0) TEMP <= TEMP; else TEMP <= TEMP +R_A; R_A <= R_A << 1; NONE if (R_B[4] == 1'b0) LEDG <= TEMP; else LEDG <= TEMP +R_A;
9.
9 注意 000 001 010 NONE if
(R_B[1] == 1'b0) LEDG <= LEDG; else LEDG <= LEDG +R_A; R_A <= R_A << 1; 011 100101 NONE if (R_B[3] == 1'b0) LEDG <= LEDG; else TEMP <= TEMP +R_A; R_A <= R_A << 1; • 異なるビット幅の信号を接続する時は, ビット幅を合わせる! SW[4:0] (5ビット) R_A (10ビット) 5'b0 つまり 0 0 0 0 0 Reset R_A <= 0; R_B <= 0; TEMP <= 0; LEDG <= 0; NONE if (R_B[0] == 1'b0) TEMP <= 10'b0; else TEMP <= R_A; R_A <= R_A << 1; NONE R_A <= {5'b0,SW[4:0]}; R_B <= SW[9:5]; TEMP <= 0; NONE if (R_B[4] == 1'b0) LEDG <= TEMP; else LEDG <= TEMP +R_A;
10.
10 • ピン配置が面倒くさいので、デフォルト のプロジェクトを読み込みましょう! (DE0に限った事ではないが、Terasic製品はサンプルCD-ROMの プロジェクトを改変するのが楽でお勧め) DE0付属のCD-ROM Demonstrations 内の "DE0_Top"フォルダの ファイル全てを C:¥verilog¥DE0_tutorial_7_1¥ 内にコピー
11.
DE0_TOP.qpfをダブルクリック してQuartus IIを起動 11 Pin Plannerを開いてみると ピン配置が終わっている!
12.
Verilog-HDLを入力 12 ダブルクリック Verilog-HDLの テンプレートが 表示されるので コードを入力 コード入力したら保存を忘れずに!
13.
13 記述するVerilog-HDL
14.
14 記述するテストベンチ リセット信号と 入力値を記述 クロックを記述
15.
15 シミュレーションで動作確認 • デフォルトでは入出力信号のみ表示 ‒ 回路内部の信号(特にレジスタ)がわからない
16.
16 内部信号の表示 乗算回路の インスタンス名 「i1」を選択 (テストベンチ自動 生成で勝手に命名される) 内部信号が リストアップされます simタブをクリック
17.
17 観測する信号の追加 追加したい信号を選択し、 右クリック->「Add Wave」を 選択
18.
18 シミュレーションの再実行 Console に「restart」と入力し, 出現するウインドウの「OK」を選択 シミュレーションが初期化(波形がクリア) 「run
400ps」と入力し, #400時間シミュレーションをスタート
19.
19 シミュレーション結果を確認 • 状態が000のときに出力値(18x21=378)が得られているか確認 リセット中は 初期値が出る リセット後は 21x18を計算. 状態000で 出力値を得る.
20.
FPGA上で動作させる • Compilation を行い,
DE0ボード上に実現 20 1 0 1 0 1 21 1 0 0 1 0 18 378 0 1 0 1 1 1 1 0 1 0
21.
21 まとめ • 今回学習したこと ‒ アルゴリズムから状態遷移図を作成 ‒ 状態遷移図からVerilog-HDLを記述 ‒ 内部信号のシミュレーション • 信号の追加 •
シミュレーションの再実行
22.
22 課題 (今回は非常に難しい) • Page 6の状態遷移図の状態を併合し,
簡単化しなさい ‒ R_B[0] を変数 idx で指定できれば, 大幅に簡単化できる (つまりC言語の配列を使う) • 簡単化した状態遷移図をVerilog-HDLで記述せよ ‒ C言語の配列は直接実現できないので, マルチプレクサ(選択回路) を使う. つまり, if( R_B[idx]== 1'b0) をFunction文を使ったマル チプレクサからの信号 mux_out に置き換える. if( mux_out == 1'b0) ... assign mux_out = mux_6( R_B, idx); function mux_6; input [5:0]R_B; input [2:0]idx; ... endfunction • 6ビットの割り算回路を順序回路で設計せよ. 動作確認は シミュレーションで行え.
Download