LoginSignup
0
0

More than 3 years have passed since last update.

ATLAS-SoCで遊ぶ (Lチカ part2)

Last updated at Posted at 2019-12-25

目的

前回の動作確認時に使用したDE0_NANO_SOC_Default.vの一部を改変してLEDカウンタを作成する。
評価ボードの動作クロックが50MHzなのでカウント動作が目で追えるように分周し、その信号をそのままLEDに使用する。

実施

とりあえず8bitカウンタを導入したときの波形の様子をmodelsimで確認する。
テストベンチはQuartusPrimeの「test bench template writer」をベースに作成
test2.jpg
テンプレートデータは下記ディレクトリに生成される。
./{作業ディレクトリ}/simulation/modelsim/{verilogファイル名}.vt
これを行うことでテストベンチ作成の際に必要となる信号名入力の作業が省ける。

DE0_NANO_SOC_Default.vt
---------省略----------------
`timescale 1 ps/ 1 ps
module DE0_NANO_SOC_Default_vlg_tst();
// constants                                           
// general purpose registers
reg eachvec;
// test vector input registers
reg ADC_SDO;
reg FPGA_CLK1_50;
reg FPGA_CLK2_50;
reg FPGA_CLK3_50;
reg [35:0] treg_GPIO_0;
reg [35:0] treg_GPIO_1;
reg [1:0] KEY;
reg [3:0] SW;
// wires                                               
wire ADC_CONVST;
wire ADC_SCK;
wire ADC_SDI;
wire [35:0]  GPIO_0;
wire [35:0]  GPIO_1;
wire [7:0]  LED;

// assign statements (if any)                          
assign GPIO_0 = treg_GPIO_0;
assign GPIO_1 = treg_GPIO_1;
DE0_NANO_SOC_Default i1 (
// port map - connection between master ports and signals/registers   
    .ADC_CONVST(ADC_CONVST),
    .ADC_SCK(ADC_SCK),
    .ADC_SDI(ADC_SDI),
    .ADC_SDO(ADC_SDO),
    .FPGA_CLK1_50(FPGA_CLK1_50),
    .FPGA_CLK2_50(FPGA_CLK2_50),
    .FPGA_CLK3_50(FPGA_CLK3_50),
    .GPIO_0(GPIO_0),
    .GPIO_1(GPIO_1),
    .KEY(KEY),
    .LED(LED),
    .SW(SW)
);
---------省略----------------

テンプレートデータを用いてクロック部に信号を入れてやった時のテスト波形がこちら
test2.jpg
KEY はDFFのイネーブル信号です。芸はないけど気にしない:stuck_out_tongue_winking_eye:

後はLEDの点滅が目で追えるように分周部を8bitから32bitに変更して上位ビット分をLEDに繋げる。

DE0_NANO_SOC_Default.v

---------省略----------------
reg  [31:0] Cont;

always@(posedge FPGA_CLK1_50 or negedge KEY[0])
begin
      if(!KEY[0])
           Cont <=  0;
      else
           Cont <=  Cont+1;
end

assign LED[7:0] = Cont[31:24];

endmodule

以上。

期待通りLEDのカウントアップ動作が確認できました。

参考本

入門Verilog HDL記述―ハードウェア記述言語の速習&実践 (Design wave basic)
Verilog HDL&VHDLテストベンチ記述の初歩 (DESIGN WAVE MOOK)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0