コンテンツにスキップ

最初のカスタムチップを作成する

カスタムチップは、自分でプログラムするコンポーネントです。velxio-chip.h APIに対してプレーンなC言語で記述すると、VelxioがクラウドでWebAssemblyにコンパイルし、その結果はカタログ上の部品と同じように動作します。配線するピン、編集する属性、シミュレーション内で実行されるロジックを備えています。

  • 必要なICがカタログにない場合(ニッチなシフトレジスタ、独自のセンサープロトコルなど)。
  • テストフィクスチャ(パルスジェネレータ、プロトコルエクササイザー、スクリプト化された値を持つフェイクセンサー)が必要な場合。
  • デジタルロジックを教えていて、学生にチップを単に使用するだけでなく_実装_させたい場合。
  1. コンポーネントピッカーを開き、キャンバスにCustom Chipを追加します。
  2. サンプルギャラリーが開きます。開始点を選択します(または空白から始めます)。
  3. 通常のコードエディタが開きます。チップはファイルエクスプローラー内に独自のセクションを持ち、そこには2つの通常のファイルがあります。
    • chip.c — 動作;
    • chip.json — マニフェスト: 名前、ピン、属性(入力時に補完機能付きで検証されます)。 これは組み込みのInverterの例です:
#include "velxio-chip.h"
#include <stdlib.h>
typedef struct { vx_pin in, out; } chip_state_t;
static void on_in_change(void* ud, vx_pin pin, int value) {
chip_state_t* s = ud;
vx_pin_write(s->out, value ? VX_LOW : VX_HIGH);
}
void chip_setup(void) {
chip_state_t* s = malloc(sizeof *s);
s->in = vx_pin_register("IN", VX_INPUT);
s->out = vx_pin_register("OUT", VX_OUTPUT);
vx_pin_write(s->out, vx_pin_read(s->in) ? VX_LOW : VX_HIGH);
vx_pin_watch(s->in, VX_EDGE_BOTH, on_in_change, s);
vx_log("inverter ready");
}

そのマニフェストは次のとおりです:

{
"schema": "velxio-chip/v1",
"name": "Inverter",
"pins": ["IN", "OUT", "GND", "VCC"],
"attributes": []
}
  1. INをボタンに、OUTをLEDに配線し、Run(実行)を押します。ソースが変更されるたびに、チップは自動的にコンパイルされます(チップのファイルエクスプローラーセクションにあるハンマーボタンで単独でコンパイルでき、エラーは他のCコンパイラと同様に出力コンソールに表示されます)。
  2. トグルして動作を確認します。シミュレーションを停止している間にチップをクリックすると、そのchip.cに戻ります。編集して再度Run(実行)します。

デフォルトでは、チップはダークなボディにシルクスクリーンバンド上の名前と、その周囲のピンラベルが描かれます。この外観を、実際のブレイクアウトボードの写真、データシートの図、アイコンなど、独自のアートワークに置き換えることができます。

チップのファイルエクスプローラーセクションにあるimage(画像)ボタン(Compileの隣)をクリックし、256 KBまでのPNG、JPEG、SVGを選択します。これはchip.cやchip.jsonと一緒に、そのチップのセクション内の別のファイル(chip.png、chip.jpg、またはchip.svg)として追加されるため、プロジェクトと一緒に移動し、.vlx内にエクスポートされ、チップをMy Chipsに保存するときにも一緒に保存されます。

画像はチップのボディに合わせてスケーリングされ、トリミングやストレッチはされません。ピンは移動しません。ピンの位置は依然としてchip.jsonから取得されるため、配線済みのチップにアートワークを追加しても、すべての配線は元の位置に正確に保たれます。ピンラベルは画像の上に残り、白とダークな輪郭で描画されるため、明るいアートワークでも暗いアートワークでも読み取れます。また、印刷された名前はアートワークに譲ります(ホバーツールチップには残ります)。

削除するには、画像ボタンの横にあるボタンを使用するか、チップのセクションから画像ファイルを削除します。

ホストは、チップインスタンスごとにchip_setup()を1回呼び出します。その後、チップはリアクティブになります。コードはコールバック内でのみ実行されます(監視対象のピンの変更、I2Cバイトの到着、タイマーの発火など)。ブロックするメインループはないため、カスタムチップを回路内に気軽に散りばめるのに十分な軽量さが保たれます。

チップエディタには、読み込んで変更できる動作するソースが用意されています。ロジックゲート(インバータ、XOR)、シフトレジスタ(74HC595、CD4094)、I2C部品(PCF8574、DS3231 RTC、24Cxx EEPROM)、SPI ADC(MCP3008)、UART ROT13トランスフォーマー、パルスカウンター、そして、本当に冒険好きな人のためのレトロCPUコレクション(Intel 4004など)です。

次へ: チップAPIリファレンス。 —– END PAGE —–