Synthesijer
DE0-Nano/Synthesijer

DE0-Nano/Synthesijer_Samples_Serial1

DE0-Nano/Synthesijerで作成した環境上で synthesijer_samples の
serial_echo を DE0-Nano 上で動作させるまでの手順について記載します。

serial_echo のサンプルには EchoTest(入力文字をそのまま返すサンプル)と
ToUpper(大文字で返すサンプル)があります。
ここではToUpper(大文字にするサンプル)について記載します。

DE0-Nano には serial port がありませんので GPIO PIN に TX、RX を割り当てます。
またその GPIO PIN に接続するため今回は FTDI CHIP 社製の FT232H を搭載した
USB to UART ケーブル C232HD-DDHSP-0 を使用しています。
http://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_C232HD_UART_CABLE.PDF

シリアル接続は Windows 上 Teraterm で確認しています。
(C232HD-DDHSP-0 のドライバインストール、Teraterm のインストールについては省略します)

serial_echo の以下のソースファイルを修正します。
注:これは DE0-Nano 用ですので、他の FPGA で同様の修正で動作するかは未確認です。

対象の FPGA は DE0-Nano ですので、Makefile を以下のように修正します。

$ vi Makefile

VERILOG_SOURCES = $(SOURCES:.java=.v)

all: hdl
# all: hdl exstick microboard

hdl: $(SOURCES)

ToUpper.java の sys_clk を 50MHz に設定します。

$ vi ToUpper.java

public class ToUpper{

        private final RS232C_RX_Wrapper rx = new RS232C_RX_Wrapper("sys_clk", "50000000", "rate", "9600");
        //private final RS232C_RX_Wrapper rx = new RS232C_RX_Wrapper("sys_clk", "100000000", "rate", "9600");
        private final RS232C_TX_Wrapper tx = new RS232C_TX_Wrapper("sys_clk", "50000000", "rate", "9600");
        //private final RS232C_TX_Wrapper tx = new RS232C_TX_Wrapper("sys_clk", "100000000", "rate", "9600");

        public void run(){

修正完了後、make を実行します。

$ make

上記までと同様にDE0-Nano System Builder でプロジェクトファイルを作成します。
Synthesijer の ToUpper に合わせてプロジェクト名は ToUpper にします。

作成したプロジェクトを Ubuntu に移動します。
その際プロジェクトファイル内にある ToUpper.v はリネームしておきます。
serial_echoサンプルの clk_div.vhd、rs232c_rx.vhd、rs232c_tx.vhd とビルドした ToUpper.vhdを
同じディレクトリにコピーします。

Ubuntu 上で ToUpper.qsf をビルドした ToUpper.vhd にあわせて以下のように編集します。
今回はGPIO[32] を RX、GPIO[33] を TX として割り当てています。

$ vi ToUpper.qsf

#============================================================
# CLOCK
#============================================================
set_location_assignment PIN_R8 -to clk
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to clk
# set_location_assignment PIN_R8 -to CLOCK_50
# set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CLOCK_50
...<略> 
set_location_assignment PIN_D12 -to rx_din
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to rx_din
set_location_assignment PIN_B12 -to tx_dout
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to tx_dout
#set_location_assignment PIN_D12 -to GPIO[32]
#set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[32]
#set_location_assignment PIN_B12 -to GPIO[33]
#set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[33]
#============================================================
# End of pin assignments by Terasic System Builder
#============================================================
set_location_assignment PIN_A11 -to reset
set_instance_assignment -name IO_STANDARD 2.5V -to reset
set_global_assignment -name VHDL_FILE clk_div.vhd
set_global_assignment -name VHDL_FILE rs232c_rx.vhd
set_global_assignment -name VHDL_FILE rs232c_tx.vhd
set_global_assignment -name VHDL_FILE ToUpper.vhd
set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "2.5 V"

また、DE0-Nano 上の GPIO[32] に C232HD-DDHSP-0 の TXD にあたるオレンジの端子を
GPIO[33] に RXD にあたる黄色の端子を接続します。

serial.JPG

後は quickstart と同様に Quartus を起動し Complication の実行、Pin Planner で PIN 配置の確認を
行い Programmer からイメージを DE0-Nano に流し込みます。

動作確認のため C232HD-DDHSP-0 を接続した Windows 上で Teraterm を起動し対象の COM Port を
開き ボーレート 9600 になっていることを確認し a〜z までの文字列をタイプした際、TeraTerm 上で
大文字になって表示されることを確認します。

toupper.png

以上で serial_echo 内 ToUpper の動作確認は完了です。

更新履歴

2014/09/04 構成変更のため本ページへ移動
2014/09/02 初稿掲載

syariten

BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   新規 一覧 単語検索 最終更新   最終更新のRSS