Giter Site home page Giter Site logo

python_and_vhdl_tutorials's Introduction

PythonとVHDLを使ったチュートリアル

PythonとVHDLについて、ざっくり習得する。

Pythonのチュートリアル

環境構築

Windowsの場合

Windowsの場合、Python 3.8.7の下のほうにある、Windows installer (64-bit)からインストーラーをダウンロードしてPythonのランタイムをインストールする。 現時点(2021/1/20)での最新版は3.9系だが、別途インストールするパッケージ(ライブラリ)が対応していなかったりするトラブルが発生する可能性があるので、ひとつ前の3.8系のものをインストールするのが良い。

インストールしたら環境変数PATHC:\Python38C:\Python39\Scriptsがあることを確認する。 確認の方法は、コマンドプロンプトなら以下のコマンドで確認できる。(> は入力不要で、コマンドの入力部分を示す) PowerShellを使用している場合はecho $env:PATHで同等の表示ができる。

> echo %PATH%
C:\Python38\Scripts\;C:\Python38\; ... (なんかたくさん表示される)

このコマンドは環境変数PATHの内容を表示するもので、PATH;を区切りにして複数のディレクトリを指定している。 このため、通常はPython以外のたくさんのディレクトリが;で区切って表示される。 この環境変数にディレクトリを追加することを、PATHを通すという。

念のため、コマンドプロンプトで以下のコマンドを打って、変更されたPATHを反映させる。

> refreshenv

PATHが通って入ればPythonを使う準備は完了で、以下のコマンドでインストールされたPythonのバージョンを確認することができる。

> python --version
Python 3.8.7
エディタ

Pythonスクリプトのコードを書くのに、メモ帳ではない高機能なエディタを使用すると効率が上がる。 最近はVisual Studio Code(VSCode)を入れておけば大丈夫という風潮。 社内規定などでインストールして使うのに不都合があればポータブル版もある。

Pythonスクリプトの実行

以下の1行だけのファイルを作成して、hello.pyという名前で保存する。

print("Hello.")

コマンドプロンプトなどで、保存したファイルの場所に移動して以下のコマンドを打つとHello.が表示されるはず。 場所の移動はcdで行う。

python hello.py
pipパッケージのインストール

VPNや社内ネットワークなど、プロキシ環境下の場合は事前に付属のpip_proxy_on.batを参考にプロキシの設定を行う必要がある。 ユーザ名やパスワードは適宜変更が必要だが、記号類はURLエンコードする必要があることに注意すること。 例えばユーザ名に@が含まれる場合は当該部分を%40に置き換える必要がある。

Pythonのパッケージ(ライブラリ)は基本的にpipというコマンドで管理されており、このコマンドによってWeb上の各種パッケージをインストールすることができる。 このチュートリアルで使用する予定のパッケージを以下のコマンドでインストールしておく。パッケージのインストールにはデフォルトで管理者権限が必要。 環境を汚したくない場合は別途venvなどを使って仮想環境を作っておくとよい。venvについてはvenv: Python 仮想環境管理などを参照のこと(検索で一番上に出てきた記事)。

pip install --upgrade pip
pip install numpy pandas matplotlib pylint lxml

最初の行は、pip事態のアップグレードをしている。 二行目でパッケージをインストールしている。

  • NumPy: 数値計算用のパッケージのデファクトスタンダード。
  • pandas: データ解析用パッケージのデファクトスタンダード。
  • Matplotlib: Pythonでのグラフ表示用のパッケージ。他にもモダンなグラフ表示パッケージはあるが、バックエンドはMatplotlibだったりする。
  • Pylint: Pythonの文法チェック(リント)を行うツール。入れておくとVSCodeなどのエディタで自動的に文法チェックしてくれる。
  • lxml: pandasでHTMLのスクレイピングをするときに必要になるやつ。直接は使わない。

気象庁データのスクレイピング

前提

  • ここでやりたいこと
    • 気象庁の過去の気象データをスクレイピングして、テキスト保存
    • 気象庁の過去の気象データをスクレイピングしてグラフ表示
    • 余裕があればOpenWeatherの予報データをAPI経由で取得して、グラフ表示

スクレイピングする対象は、以下のものにするがみだらにアクセスしないように注意。

OpenWeatherについてはAPIキーの取得が必要だが、キーの発行は登録から数時間かかるので注意。

実装

現時点ではヒントのみを記載しておく。各自コーディングする。(なんか同じ人のブログばっかりひっかかるが知り合いではない)

OpenWeatherのデータ取得はスクレイピングではないので、urllib.requestなどを使用してAPIアクセスする必要がある。 基本的には以下の流れでデータの取得、pandasデータフレームへの変換ができる。 コードは、weather_data.pyが参考になる。 予報データ取得のためのAPIの説明は5 day weather forecastあたりに記載されている。

import pandas as pd

# 標準ライブラリのインポート(pipでのインストール不要)
import urllib.request
import json

URL = "http://api.openweathermap.org/XXXXX" # 適切なURLを記入、ここでAPIキーも必要

json_obj = None

# GETで取得した内容をjsonに変換
# jsonにするのはデバッグ時や保存時に見やすくなるため
request = urllib.request.Request(URL, method='GET')
with urllib.request.urlopen(request) as response:
    json_obj = json.loads(response.read().decode("utf-8"))

# どんな形か見たければ、print()で簡易的に確認できる。
print(json_obj)

# グラフ表示に向けてpandasデータフレーム形式に変換
pd.json_normalize(json_obj['list'])

I2Cセンサーの値を読む

一般的に、マイコンなどに低速の外部機器を接続する場合はI2CSPIなどのインターフェイスが使用される。 どちらも接続ピンを少なくするためにシリアルバス方式になっていて、以下のように接続される。

I2C

SPI

上記2つの画像は "en:user:Cburnett - Own work made with Inkscape, CC 表示-継承 3.0"

今回SPIを選択しなかったのは、送受信が同時に起こるためソフトウェアで扱いづらいためである。 個人的な印象ではI2Cのデバイスは相性問題が発生しやすく、SPIのデバイスの方が安定しているイメージである。

また、SPIは接続ピン数が多くなる代わりに高速に通信できるものが多い。 最近のFPGAやマイコンのFlashメモリにはQSPI(Quad SPI)というSPIベースのインターフェイスで接続するものが使われることが多い。 QSPIのFlashメモリは少ないピン本数としては比較的高速(100MHzとか)に動作する。

使用するI2Cセンサ

はんだ付けをしたくない場合は、Qwiic接続のものを使うといいと思う。 今回は例として以下のものを使うことにする。(センサ1,794円、ケーブルキット1,073円)

使用するマイコンなど(作成途中)

VHDLのチュートリアル(作成途中)

環境構築

シミュレータについて、install_VHDL_simurators.mdに記載した。 以降、なるべくこれらのシミュレータに関する記述を併記する。

python_and_vhdl_tutorials's People

Contributors

nv-h avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.