ひでみのアイデア帳 2020-09-30T18:47:37+09:00 urn:uuid:32c34578-c4da-8d90-5f18-1740239359ee Node.jsでWebサーバ urn:uuid:fa8c756f-c511-33b3-611a-4a198497cd6e Node.jsでWebサーバ

普段、Webサーバのテストを行うときはPythonのSimpleHTTPServerをよく使うのですがNode.jsでWebサーバが動けばそれで代用できるんじゃないかと思って調べた。

そしたら、やっぱりあるのね。

ソースコード

JavaScriptは次のように書いて、Node.jsで実行するとlocalhostの8080番ポートがlistenになるのでWebブラウザからhttp://localhost:8080/にアクセスするとよい。

// httpモジュールを読み込み、インスタンスを生成
var http    = require('http');
var fs      = require('fs');
var server  = http.createServer();

server.on('request', function(req, res) {
  res.writeHead(404, {'Content-Type' : 'text/plain'});
  res.write(req.url);
  res.end();
});

server.listen(8080, "127.0.0.1");

ファイルを表示

URLでファイルを表示する場合は次のように書く。

// httpモジュールを読み込み、インスタンスを生成
var http    = require('http');
var fs      = require('fs');
var server  = http.createServer();

server.on('request', function(req, res) {
  // ファイルを読み込むときはcallbackにする
  fs.readFile(__dirname + req.url, 'utf-8', function (err, data) {
    // エラー発生時
    if (err) {
      res.writeHead(404, {'Content-Type' : 'text/plain'});
      res.write('page not found');
      return res.end();
    }

    res.writeHead(200, {'Content-Type' : 'text/html'});
    res.write(data);
    res.end();
  });
});

server.listen(8080, "127.0.0.1");

これでhttp://localhost:8080/hello.htmlとかでアクセスすると、Node.jsを実行したディレクトリのhello.htmlを表示する。

]]>
2020-08-15T16:18:18+09:00 ひでみ hidemi@sweetcafe/jp <h1>Node.jsでWebサーバ</h1> <p>普段、Webサーバのテストを行うときはPythonのSimpleHTTPServerをよく使うのですがNode.jsでWebサーバが動けばそれで代用できるんじゃないかと思って調べた。</p> <p>そしたら、やっぱりあるのね。</p> <h2>ソースコード</h2> <p>JavaScriptは次のように書いて、Node.jsで実行するとlocalhostの8080番ポートがlistenになるのでWebブラウザから<code>http://localhost:8080/</code>にアクセスするとよい。</p> <pre><code class="txt">// httpモジュールを読み込み、インスタンスを生成 var http = require('http'); var fs = require('fs'); var server = http.createServer(); server.on('request', function(req, res) { res.writeHead(404, {'Content-Type' : 'text/plain'}); res.write(req.url); res.end(); }); server.listen(8080, "127.0.0.1");</code></pre> <h2>ファイルを表示</h2> <p>URLでファイルを表示する場合は次のように書く。</p> <pre><code class="txt">// httpモジュールを読み込み、インスタンスを生成 var http = require('http'); var fs = require('fs'); var server = http.createServer(); server.on('request', function(req, res) { // ファイルを読み込むときはcallbackにする fs.readFile(__dirname + req.url, 'utf-8', function (err, data) { // エラー発生時 if (err) { res.writeHead(404, {'Content-Type' : 'text/plain'}); res.write('page not found'); return res.end(); } res.writeHead(200, {'Content-Type' : 'text/html'}); res.write(data); res.end(); }); }); server.listen(8080, "127.0.0.1");</code></pre> <p>これで<code>http://localhost:8080/hello.html</code>とかでアクセスすると、Node.jsを実行したディレクトリのhello.htmlを表示する。</p>
任意のバージョンのNode.jsインストール urn:uuid:ea4e5e0f-0ebc-5897-21c1-8e6be6aff692 任意のバージョンのNode.jsインストール

Node.jsとはサーバサイドで動作するJavaScriptです。

詳しくは「Node.jsとは」を参照してください。

JavaScriptとは主にWebブラウザで動作するスクリプト言語です。

JavaScriptの使用はAjavaとは関係ありません。

私はときどき、JavaScriptを使うのでNode.jsを使います。

ただ、新規環境を構築するときにNode.jsのインストールに迷ってしまうことがあるのでインストール手順をメモする。

バージョン

私が普段使用するUbuntu 20.04LTS(執筆時点)では次のようになっています。

項目 バージョン
Ubuntu 20.04LTS 10.19.0
公式推奨版 12.18.3
公式最新版 14.8.0

aptでインストールするとバージョンが古いし、最新版好きの私としては14.8.0を使いたいところです。

最新のインストールというよりは任意のバージョンのNode.jsのインストール手順をまとめます。

インストール

インストールはaptを使用しません。

次のようにcurlを使ってsetupスクリプトを実行します。

$ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -

念の為にapt updateしておきます。

$ sudo apt update
$ sudo apt upgrade

aptコマンドでnodejsをインストールします。

$ sudo apt install nodejs

インストールしたNode.jsのバージョンを確認します。

$ node -v
v14.8.0
]]>
2020-08-15T09:29:06+09:00 ひでみ hidemi@sweetcafe/jp <h1>任意のバージョンのNode.jsインストール</h1> <p>Node.jsとはサーバサイドで動作するJavaScriptです。</p> <p>詳しくは「<a href="https://nodejs.org/ja/about/">Node.jsとは</a>」を参照してください。</p> <p>JavaScriptとは主にWebブラウザで動作するスクリプト言語です。</p> <p>JavaScriptの使用はAjavaとは関係ありません。</p> <p>私はときどき、JavaScriptを使うのでNode.jsを使います。</p> <p>ただ、新規環境を構築するときにNode.jsのインストールに迷ってしまうことがあるのでインストール手順をメモする。</p> <h2>バージョン</h2> <p>私が普段使用するUbuntu 20.04LTS(執筆時点)では次のようになっています。</p> <table> <thead> <tr> <th>項目</th> <th>バージョン</th> </tr> </thead> <tbody> <tr> <td>Ubuntu 20.04LTS</td> <td>10.19.0</td> </tr> <tr> <td>公式推奨版</td> <td>12.18.3</td> </tr> <tr> <td>公式最新版</td> <td>14.8.0</td> </tr> </tbody> </table> <p>aptでインストールするとバージョンが古いし、最新版好きの私としては14.8.0を使いたいところです。</p> <p>最新のインストールというよりは任意のバージョンのNode.jsのインストール手順をまとめます。</p> <h2>インストール</h2> <p>インストールはaptを使用しません。</p> <p>次のようにcurlを使ってsetupスクリプトを実行します。</p> <pre><code class="txt">$ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -</code></pre> <p>念の為にapt updateしておきます。</p> <pre><code class="txt">$ sudo apt update $ sudo apt upgrade</code></pre> <p>aptコマンドでnodejsをインストールします。</p> <pre><code class="txt">$ sudo apt install nodejs</code></pre> <p>インストールしたNode.jsのバージョンを確認します。</p> <pre><code class="txt">$ node -v v14.8.0</code></pre>
image.ubからDeviceTreeの抽出 urn:uuid:4d26fdfe-8d55-2b2f-086c-ff53f60fdf93 image.ubからDeviceTreeの抽出

image.ubとはKernelやDevice Treeをまとめたu-bootのブートイメージです。

Xilinx系の評価プロジェクトでこれが提供されていることがあるのだが、ここからDeviceTreeを取り出したくなるときがある。

そのためのメモである。

image.ubを生成するにはmkimageを使用するが、抜き出しにはdumpimageを使用する。

まずはimage.ubがどのように構成されているか確認する。

$ dumpimage -l image.ub
FIT description: U-Boot fitImage for PetaLinux/4.14-xilinx-v2018.3+gitAUTOINC+eeab73d120/plnx-zynqmp
Created:         Tue May 26 22:38:33 2020
 Image 0 (kernel@1)
  Description:  Linux kernel
  Created:      Tue May 26 22:38:33 2020
  Type:         Kernel Image
  Compression:  gzip compressed
  Data Size:    7111615 Bytes = 6944.94 KiB = 6.78 MiB
  Architecture: AArch64
  OS:           Linux
  Load Address: 0x00080000
  Entry Point:  0x00080000
  Hash algo:    sha1
  Hash value:   a28aa4f3f6dc093f484e3d8f62383a7827a6ec49
 Image 1 (fdt@system-top.dtb)
  Description:  Flattened Device Tree blob
  Created:      Tue May 26 22:38:33 2020
  Type:         Flat Device Tree
  Compression:  uncompressed
  Data Size:    36434 Bytes = 35.58 KiB = 0.03 MiB
  Architecture: AArch64
  Hash algo:    sha1
  Hash value:   8100aa8e2a88a8e18696033cf27161d56b5b3ad1
 Default Configuration: 'conf@system-top.dtb'
 Configuration 0 (conf@system-top.dtb)
  Description:  1 Linux kernel, FDT blob
  Kernel:       kernel@1
  FDT:          fdt@system-top.dtb
  Hash algo:    sha1
  Hash value:   unavailable

つまり、imageが2個とconfigが1個入っていることになっている。

抜き出すのは2個目のimageで次のようにする。

$ dumpimage -T flat_dt -p 1 -o hoge.dtb image.ub

あとはdtcでテキストにしちゃえばいいだけ。

]]>
2020-07-26T00:01:56+09:00 ひでみ hidemi@sweetcafe/jp <h1>image.ubからDeviceTreeの抽出</h1> <p>image.ubとはKernelやDevice Treeをまとめたu-bootのブートイメージです。</p> <p>Xilinx系の評価プロジェクトでこれが提供されていることがあるのだが、ここからDeviceTreeを取り出したくなるときがある。</p> <p>そのためのメモである。</p> <p>image.ubを生成するにはmkimageを使用するが、抜き出しにはdumpimageを使用する。</p> <p>まずはimage.ubがどのように構成されているか確認する。</p> <pre><code class="txt">$ dumpimage -l image.ub FIT description: U-Boot fitImage for PetaLinux/4.14-xilinx-v2018.3+gitAUTOINC+eeab73d120/plnx-zynqmp Created: Tue May 26 22:38:33 2020 Image 0 (kernel@1) Description: Linux kernel Created: Tue May 26 22:38:33 2020 Type: Kernel Image Compression: gzip compressed Data Size: 7111615 Bytes = 6944.94 KiB = 6.78 MiB Architecture: AArch64 OS: Linux Load Address: 0x00080000 Entry Point: 0x00080000 Hash algo: sha1 Hash value: a28aa4f3f6dc093f484e3d8f62383a7827a6ec49 Image 1 (fdt@system-top.dtb) Description: Flattened Device Tree blob Created: Tue May 26 22:38:33 2020 Type: Flat Device Tree Compression: uncompressed Data Size: 36434 Bytes = 35.58 KiB = 0.03 MiB Architecture: AArch64 Hash algo: sha1 Hash value: 8100aa8e2a88a8e18696033cf27161d56b5b3ad1 Default Configuration: 'conf@system-top.dtb' Configuration 0 (conf@system-top.dtb) Description: 1 Linux kernel, FDT blob Kernel: kernel@1 FDT: fdt@system-top.dtb Hash algo: sha1 Hash value: unavailable</code></pre> <p>つまり、imageが2個とconfigが1個入っていることになっている。</p> <p>抜き出すのは2個目のimageで次のようにする。</p> <pre><code class="txt">$ dumpimage -T flat_dt -p 1 -o hoge.dtb image.ub</code></pre> <p>あとはdtcでテキストにしちゃえばいいだけ。</p>
VSCodeでDraw.ioを使う urn:uuid:4b36c3a5-5c13-89c9-35ba-8d22ed16696f VSCodeでDraw.ioを使う

Draw.ioとはdiagrams.netが提供しているMicrosoft VisioやInkscapeなどのツールと同等レベルのドローツールです。

筆者はよく使うドローツールです。

Web上でお絵描きできるツールとして有名ですがWebだけではなく、Windows、Mac、Linuxなどのネイティブアプリでも提供されています。

Web上ではファイルの保存先を直接、google driveやdropboxなどオンラインストレージを指定できるのでオンラインストレージでファイルを管理して使われている方も多いのではないかと思います。

Draw.ioで作成した絵に限らず、他のドローツールで作成した絵であってもその絵だけで資料が完成することはほぼありません。

何らかの文書とともに絵が存在して一つの資料としてまとまると思います。

このDraw.ioが非公式ながらVSCodeのExtensionとしてインストールすることができます。

インストール

インストール

ファイルオープン

ファイルの拡張子は.drawio.dio.drawio.svgとなっているとEXPLORERでファイルを選択時すると自動的にDraw.ioで開きます。

ファイルオープン

ここでは、作成済みのファイルをオープンしていますがファイルを新規作成するとブランクなキャンパスで開くことができます。

キャンパス色の変更

ファイルオープンで見えるキャンパスはwebで作成したファイルを持ってきたものです。

Webでは白背景のキャンパスで作成したものでした。

VScodeは黒背景になっているので文字が消えてしまったいるように見えます。

筆者はキャンパスは白背景で良いのでVScodeのDraw.ioのThemeを変更します。

VScodeでFilePreferenceHediet > Vscode-drawio:Themeを開いて、atlasに変更します。

Themeの変更

キャンパスを白背景にすると次のようになります。

キャンパスを白背景

これでWebと同じキャンパスで描けるようになります。

Webで作成

WebでDraw.ioを使うにはdiagrams.netに直接アクセスするか、google driveであれば新規その他diagrams.netで作成することができます。

Webで作成

google driveからVSCodeへ

今までにgoogle driveなどで作成した絵はダウンロードして使うことができます。

google driveで保存されるファイルは.drawioですがfileexportXMLでXMLファイルとしてダウンロードします。

Export

ダウンロードすると拡張子が.xmlになるので.drawioまたは.dioに変換するとVSCodeでもそのまま読み込むことができます。

あとがき

筆者としてはドキュメントとDraw.ioで作成した絵に限らずドキュメントに掲載する元ファイルは一元管理したい思いがあります。

今まではgoogle driveでDraw.ioの絵を描いて、PNGでダウンロードしてMarkdownのドキュメントに入れてということをして、ドキュメントと絵を2つの場所で管理していましたがVScodeでDraw.ioができるようになってドキュメントと絵を一元管理して、githubに入れることができるようなりました。

VScodeは結構便利です。

なんでもかんでもVScodeでというのもあとあと危険な可能性もあるのですが今のところ、いい感じなので当分はこのまま使用していきます。

]]>
2020-07-20T11:38:24+09:00 ひでみ hidemi@sweetcafe/jp <h1>VSCodeでDraw.ioを使う</h1> <p>Draw.ioとはdiagrams.netが提供しているMicrosoft VisioやInkscapeなどのツールと同等レベルのドローツールです。</p> <p>筆者はよく使うドローツールです。</p> <p>Web上でお絵描きできるツールとして有名ですがWebだけではなく、Windows、Mac、Linuxなどのネイティブアプリでも提供されています。</p> <p>Web上ではファイルの保存先を直接、google driveやdropboxなどオンラインストレージを指定できるのでオンラインストレージでファイルを管理して使われている方も多いのではないかと思います。</p> <p>Draw.ioで作成した絵に限らず、他のドローツールで作成した絵であってもその絵だけで資料が完成することはほぼありません。</p> <p>何らかの文書とともに絵が存在して一つの資料としてまとまると思います。</p> <p>このDraw.ioが非公式ながらVSCodeのExtensionとしてインストールすることができます。</p> <h2>インストール</h2> <p><img src="./files/20200720-01.png" alt="インストール" /></p> <h2>ファイルオープン</h2> <p>ファイルの拡張子は<code>.drawio</code>、<code>.dio</code>、<code>.drawio.svg</code>となっているとEXPLORERでファイルを選択時すると自動的にDraw.ioで開きます。</p> <p><img src="./files/20200720-02.png" alt="ファイルオープン" /></p> <p>ここでは、作成済みのファイルをオープンしていますがファイルを新規作成するとブランクなキャンパスで開くことができます。</p> <h2>キャンパス色の変更</h2> <p>ファイルオープンで見えるキャンパスはwebで作成したファイルを持ってきたものです。</p> <p>Webでは白背景のキャンパスで作成したものでした。</p> <p>VScodeは黒背景になっているので文字が消えてしまったいるように見えます。</p> <p>筆者はキャンパスは白背景で良いのでVScodeのDraw.ioのThemeを変更します。</p> <p>VScodeで<code>File</code>→<code>Preference</code>→<code>Hediet &gt; Vscode-drawio:Theme</code>を開いて、<code>atlas</code>に変更します。</p> <p><img src="./files/20200720-03.png" alt="Themeの変更" /></p> <p>キャンパスを白背景にすると次のようになります。</p> <p><img src="./files/20200720-04.png" alt="キャンパスを白背景" /></p> <p>これでWebと同じキャンパスで描けるようになります。</p> <h2>Webで作成</h2> <p>WebでDraw.ioを使うにはdiagrams.netに直接アクセスするか、google driveであれば<code>新規</code>→<code>その他</code>→<code>diagrams.net</code>で作成することができます。</p> <p><img src="./files/20200720-05.png" alt="Webで作成" /></p> <h2>google driveからVSCodeへ</h2> <p>今までにgoogle driveなどで作成した絵はダウンロードして使うことができます。</p> <p>google driveで保存されるファイルは<code>.drawio</code>ですが<code>file</code>→<code>export</code>→<code>XML</code>でXMLファイルとしてダウンロードします。</p> <p><img src="./files/20200720-06.png" alt="Export" /></p> <p>ダウンロードすると拡張子が<code>.xml</code>になるので<code>.drawio</code>または<code>.dio</code>に変換するとVSCodeでもそのまま読み込むことができます。</p> <h2>あとがき</h2> <p>筆者としてはドキュメントとDraw.ioで作成した絵に限らずドキュメントに掲載する元ファイルは一元管理したい思いがあります。</p> <p>今まではgoogle driveでDraw.ioの絵を描いて、PNGでダウンロードしてMarkdownのドキュメントに入れてということをして、ドキュメントと絵を2つの場所で管理していましたがVScodeでDraw.ioができるようになってドキュメントと絵を一元管理して、githubに入れることができるようなりました。</p> <p>VScodeは結構便利です。</p> <p>なんでもかんでもVScodeでというのもあとあと危険な可能性もあるのですが今のところ、いい感じなので当分はこのまま使用していきます。</p>
同期/非同期リセットでの生成回路の違い(5) urn:uuid:e7c4db5d-1ddd-4c63-8939-e257cc7a4e9a 同期/非同期リセットでの生成回路の違い(5)

結局、STAで問題なければよいのでどの記述でもいいわけなんだけど、他にいくつか試してみた。

信号名をRSTでないケース

ケース2と同じ記述でRST_NからRSTを削除したものです。

`default_nettype none
`timescale 1ns/1ps

module fftest5
(
    input wire DINX,
    input wire CLK,

    input wire DIN0,
    input wire DIN1,
    input wire DIN2,
    input wire DIN3,
    input wire DIN4,
    input wire DIN5,
    input wire DIN6,

    output reg DOUT
);

reg CLK_DINX;

always @(posedge CLK) begin
    CLK_DINX <= DINX;
end

always @(posedge CLK) begin
    if(!CLK_DINX) begin
        DOUT <= 0;
    end else begin
        DOUT <= DIN0 | (DIN1 & DIN2 & DIN3 & DIN4 & DIN5 & DIN6);
    end
end

endmodule

`default_nettype wire

結果はケース2と同じになりました。

0への初期化はリセットと認識されるんですかね?

三項演算子にしたケース

RST名前もなしに三項演算子で0に初期化するケースです。

`default_nettype none
`timescale 1ns/1ps

module fftest7
(
    input wire DINX,
    input wire CLK,

    input wire DIN0,
    input wire DIN1,
    input wire DIN2,
    input wire DIN3,
    input wire DIN4,
    input wire DIN5,
    input wire DIN6,

    output reg DOUT
);

reg CLK_DINX;

always @(posedge CLK) begin
    CLK_DINX <= DINX;
end

always @(posedge CLK) begin
    DOUT <= (!CLK_DINX)?0:(DIN0 | (DIN1 & DIN2 & DIN3 & DIN4 & DIN5 & DIN6));
end

endmodule

`default_nettype wire

この場合もケース2と同じ結果になった。

0への初期化はRSTとして認識するんですね。

論理に組み込んだケース

初期化するというよりかいネーブル信号に近い形にしたケースです。

`default_nettype none
`timescale 1ns/1ps

module fftest6
(
    input wire DINX,
    input wire CLK,

    input wire DIN0,
    input wire DIN1,
    input wire DIN2,
    input wire DIN3,
    input wire DIN4,
    input wire DIN5,
    input wire DIN6,

    output reg DOUT
);

reg CLK_DINX;

always @(posedge CLK) begin
    CLK_DINX <= DINX;
end

always @(posedge CLK) begin
    DOUT <= CLK_DINX & (DIN0 | (DIN1 & DIN2 & DIN3 & DIN4 & DIN5 & DIN6));
end

endmodule

`default_nettype wire

この場合は次のようになりました。

ケース2に比べてLUTが1個減り、つぎの構成になりました。

  • DINXのFF
  • DOUTのFF
  • (DIN1 & DIN2 & DIN3 & DIN4 & DIN5 & DIN6)のLUT
  • CLK_DINX & (DIN0 | 上記の信号)のLUT

だから、なんなのさぁと言われても何もないんですけどね。

]]>
2020-07-03T00:00:00+09:00 ひでみ hidemi@sweetcafe/jp <h1>同期/非同期リセットでの生成回路の違い(5)</h1> <p>結局、STAで問題なければよいのでどの記述でもいいわけなんだけど、他にいくつか試してみた。</p> <h2>信号名をRSTでないケース</h2> <p>ケース2と同じ記述で<code>RST_N</code>から<code>RST</code>を削除したものです。</p> <pre><code class="txt">`default_nettype none `timescale 1ns/1ps module fftest5 ( input wire DINX, input wire CLK, input wire DIN0, input wire DIN1, input wire DIN2, input wire DIN3, input wire DIN4, input wire DIN5, input wire DIN6, output reg DOUT ); reg CLK_DINX; always @(posedge CLK) begin CLK_DINX &lt;= DINX; end always @(posedge CLK) begin if(!CLK_DINX) begin DOUT &lt;= 0; end else begin DOUT &lt;= DIN0 | (DIN1 &amp; DIN2 &amp; DIN3 &amp; DIN4 &amp; DIN5 &amp; DIN6); end end endmodule `default_nettype wire</code></pre> <p>結果はケース2と同じになりました。</p> <p><code>0</code>への初期化はリセットと認識されるんですかね?</p> <h2>三項演算子にしたケース</h2> <p><code>RST</code>名前もなしに三項演算子で<code>0</code>に初期化するケースです。</p> <pre><code class="txt">`default_nettype none `timescale 1ns/1ps module fftest7 ( input wire DINX, input wire CLK, input wire DIN0, input wire DIN1, input wire DIN2, input wire DIN3, input wire DIN4, input wire DIN5, input wire DIN6, output reg DOUT ); reg CLK_DINX; always @(posedge CLK) begin CLK_DINX &lt;= DINX; end always @(posedge CLK) begin DOUT &lt;= (!CLK_DINX)?0:(DIN0 | (DIN1 &amp; DIN2 &amp; DIN3 &amp; DIN4 &amp; DIN5 &amp; DIN6)); end endmodule `default_nettype wire</code></pre> <p>この場合もケース2と同じ結果になった。</p> <p><code>0</code>への初期化は<code>RST</code>として認識するんですね。</p> <h2>論理に組み込んだケース</h2> <p>初期化するというよりかいネーブル信号に近い形にしたケースです。</p> <pre><code class="txt">`default_nettype none `timescale 1ns/1ps module fftest6 ( input wire DINX, input wire CLK, input wire DIN0, input wire DIN1, input wire DIN2, input wire DIN3, input wire DIN4, input wire DIN5, input wire DIN6, output reg DOUT ); reg CLK_DINX; always @(posedge CLK) begin CLK_DINX &lt;= DINX; end always @(posedge CLK) begin DOUT &lt;= CLK_DINX &amp; (DIN0 | (DIN1 &amp; DIN2 &amp; DIN3 &amp; DIN4 &amp; DIN5 &amp; DIN6)); end endmodule `default_nettype wire</code></pre> <p>この場合は次のようになりました。</p> <p><img src="./files/20200628_fftest07-01.png" alt="" /></p> <p>ケース2に比べてLUTが1個減り、つぎの構成になりました。</p> <ul> <li>DINXのFF</li> <li>DOUTのFF</li> <li>(DIN1 &amp; DIN2 &amp; DIN3 &amp; DIN4 &amp; DIN5 &amp; DIN6)のLUT</li> <li>CLK_DINX &amp; (DIN0 | 上記の信号)のLUT</li> </ul> <p>だから、なんなのさぁと言われても何もないんですけどね。</p>