More Related Content
PPTX
Androidとfpgaを高速fifo通信させちゃう PDF
PPTX
PDF
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用) PDF
PDF
OpenCM IDE、OpenCM 485 EXPを用いてのDynamixel Xシリーズの制御 PDF
PDF
What's hot
PPTX
PPTX
PDF
PDF
ODP
PPTX
PDF
PDF
PDF
PPT
Raspberry Jam #1 20121229 PPTX
PDF
Adaptive optimization of JIT compiler PDF
microLIFA for LabVIEW & Arduino User PPTX
Cvim saisentan 半精度浮動小数点数 half PDF
OSC Tokyo 2013 Spring JRPUG PPTX
PPT
PDF
EtherCATやPROFINETを OPC UAで接続してみた PPTX
PDF
/proc/irq/<irq>/smp_affinity Similar to DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
PDF
Arduinoでプログラミングに触れてみよう 続編 PDF
ものづくりプロジェクトII 一日でわかるArduino入門 PPT
平成26年度熊本高専Arduino講座 第1週 センサーとArduno及びProcessingとの連携 PDF
3台以上のarduinoでのspi通信 2017 07-20 PDF
I2CでRaspberry Piから複数の周辺機器を制御する PDF
SFC デザイン言語WS(電子工作)第3回「電子工作の作法」 PPTX
ODP
PDF
SFC デザイン言語WS(電子工作)第5回「LED/駆動部品を使う」 PPTX
PDF
PDF
PDF
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p... KEY
PDF
20140910 Arduino for beginners ODP
PDF
PDF
PDF
PDF
プログラムによる計測と制御の仕組みを学ぶための学習支援ソフトウェア More from Yasuhiro Ishii
PPTX
CoderDojo師岡20221212発表資料.pptx PDF
20130804 OSC京都 Raspberry Piに何かつないで遊ぼう PDF
20130713 オープンハードセミナー raspberry_piに何かつないで遊ぼう PDF
ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう KEY
Arduino MemoryMapLib w/Android Accessory KEY
PDF
Android端末と組み込み機器が連携する Android Make Days PDF
Android-controlled robot,Original PCB to work as a bridge between Android-pho... PDF
Android-controlled robot,Original PCB to work as a bridge between Android-pho... DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
- 1.
- 2.
自己紹介
• 本業は組み込みファームウェア技術者
(μITRON、組み込みLinux等)
• マイコンを使用した電子工作が好き
• Arduinoは去年から触りだしました
• 日本アンドロイドの会神戸支部・プロペラブに
所属(私自身はあまり活動できてません)
• Twitter : @yishii
• Facebook : facebook.com/ishiiyasu
- 3.
- 4.
- 5.
- 6.
本の目次
• 第1章 FPGAの内部といろいろなFPGAボード
• 第2章 FPGAの回路設計を体験
• 第3章 もう少し進んだ回路設計
• 第4章 波形観測による回路デバッグ
• 第5章 FPGA内蔵CPUを試す
• 第6章 自作周辺回路の接続
• 第7章 いろいろな周辺回路を設計
• 第8章 メモリコントローラの設計
• 第9章 μClinuxの搭載
- 7.
- 8.
とりあえず何か作ろう
→Androidと繋ぐかなー
→ひとまずAndyShieldの
ArduinoをDE0に載せ替えてみよう
- 9.
- 10.
- 11.
- 12.
- 13.
構成
Main control software
MemoryMapLib
Arduino compatible layer
NiosII Processor
System Interconnect Fabric
UART PWM
GPIO(4)
Core Core
7seg
Dec
2ch driver
TB6552F
Bluetooth
SPP Module
- 14.
- 15.
- 16.
UARTをつなぐ
通信速度や
ストップビット長などは
ロジックを小さくする為
固定のタイプにした。
これも選ぶだけ。
- 17.
PWMを繋ぐ(1)
module PWM8( →SOPCビルダーの周辺機能選択肢に
input clk,
input n_rst,
input [7:0] value, PWMが無い・・・ので、
output pwmout);
wire [7:0] counter; 8ビットPWMを作る
wire [7:0] counter_d;
wire [7:0] divider;
wire [7:0] divider_d;
DFF_8 DFF_8_dividerGen(
.n_rst(n_rst),
.clk(clk),
.d(divider_d),
.q(divider));
DFF_8 DFF_8_counterGen(
.n_rst(n_rst),
.clk(divider[3]),
.d(counter_d),
.q(counter));
assign divider_d = (n_rst == 1'b0) ? 8'h00 : divider + 8'h01;
assign counter_d = (n_rst == 1'b0) ? 8'h00 : counter + 8'h01;
assign pwmout = (n_rst == 1'b0) ? (1'b0) : ((counter <= value) ? (1'b1) : (1'b0));
endmodule
- 18.
PWMを繋ぐ(2)
PWMをAVALONバスファブリックの
module PWM8_avalon_busif(
input clk,
input reset_n,
仕様に合わせたモジュールを作成
input [1:0] address,
input write,
input [7:0] writedata,
output [7:0] value1,
output [7:0] value2,
組み込みマイコンのSRAM繋ぐ時の
output pwmout1,
output pwmout2);
wire [7:0] value1_in;
バスっぽい感じ(と思った)
wire [7:0] value2_in;
wire write_posedge;
wire write_1d;
// generate write posedge
DFF_1 DFF_1_write_1dgen(
デバッグに役立つかもしれないので
.clk(clk),
.n_rst(reset_n),
.d(write),
.q(write_1d));
出力値を7セグにつないでおいた。
assign write_posedge = ((write == 1'b1) && (write_1d == 1'b0)) ? 1'b1 : 1'b0;
// latch value1
DFF_8 DFF_8_value1(
.clk(clk),
.n_rst(reset_n),
.d(value1_in),
.q(value1));
assign value1_in = ((write_posedge == 1'b1) && (address == 2'b00)) ? writedata : value1;
- 19.
- 20.
NiosII側ソフトの作成
1.Arduino的なAPIで包む
//
// Arduino Modoki Core Module void analogWrite(int ch,unsigned char value)
// {
// Author : Yasuhiro ISHII,2012 IOWR(PWM_AVALON_0_BASE,ch == 0 ? 0 : 1,value);
// }
#include "Nios2Arduino.h"
#include <unistd.h> void digitalWrite(int port,int value)
#include <sys/alt_alarm.h> {
static unsigned char outdata;
unsigned char d;
void arduinoMain(void)
{ d = 1 << port;
setup(); if(value){
while(1){ outdata |= d;
loop(); } else {
} outdata &= ~d;
} }
int millis(void) IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE,outdata);
{ }
return (alt_nticks());
}
void delayMs(int x)
{
usleep( x * 1000 );
}
- 21.
NiosII側ソフトの作成
2.UARTをMemoryMapLibと繋ぐクラス作成
unsigned char SerialStream::read(void)
{
unsigned char ret = 0;
UARTは if(mBufferedStream->size() >= 1){
mBufferedStream->pop(ret);
}
ファイルI/Oっぽく }
return(ret);
int SerialStream::write(unsigned char* buff,int len)
リードライトできる {
}
fwrite(buff,len,1,fp);
関数が用意されて void SerialStream::flush(void)
{
mBufferedStream->flush();
}
いた void SerialStream::setInterface(int* s)
{
fp = fopen(UART_0_NAME,"w+");
if(fp != NULL){
mConnected = true;
}
}
MemoryMapLib NiosII UART/BT
- 22.
- 23.
- 24.
- 25.