素人の論理設計

図書室      文書作成      写真室      問い合わせ                         

機能実行譜
2008. 6.11 更新↓
データ分離器


論理譜
2008. 6.14 追加↓
BCD変換器
2008. 6.14 追加↓
LCDドライバ
2008. 6.13 追加↓
FDD読み取り器
2008. 6. 4 更新↓
データ分離器
2008. 6.14 更新↓
PCモニタアダプタ2
2008. 6.15 更新↓
メモリモニタ
バス操作アダプタ
2008. 6.16 更新↓
通信モニタアダプタ
2008. 6.12 更新↓
Z80P
シリアル受信アダプタ
シリアル送信アダプタ
2008. 6. 2 改訂中↓
PCモニタアダプタ


読み物
2008. 6.15 移動↓
USB読本
2008. 6.15 移動↓
インテルプロセッサノート
2008. 6.12 追加↓
BCD変換器LCD表示
2008. 6.13 更新↓
FDD読み取り器
データ分離器
FDアダプタ
キーマウスブリッジ
PCマウスアダプタ
PCキーボードアダプタ
PCモニタアダプタ2
2008. 6.15 更新↓
8086
通信モニタアダプタ
PCマウスアダプタ
PCキーボードアダプタ
キーボードコントローラ
HEX ローダ
I2C ローダ
2008. 6.12 更新↓
Z80Pの論理設計
2008. 6.12 更新↓
Z80P命令仕様
Z80PとSDCCのCプログラミング
チップ搭載のZ80
電卓の論理設計
アセンブラの論理設計
プログラミング
PROASM2
2008. 6.19 更新↓
AASM
MACRO80
LSIC80
PLMX
FifthZ180
CB80
FORTRAN80
Modula2 Z80
Pascal/MT+ 8080
Turbo Pascal Z80
PLM80
BDS C
SMALLC/Plus
AztecC 8080
SDCC Z80
BASCOM
Z80アセンブラ
雑文
CP/M80

   L言語
2種類の条件文だけで論理設計と論理検証を行いVHDL等のファイルを得ることができます。
  • 単純な言語で論理設計から検証設計までを行い論理を完成 させます。
  • ステップ数の多い検証もすぐにシミュレーションから閲覧 ができ、結果をPDFにすることも簡単です。
  • LTOOL はインストール不用なので どのパソコンでもすぐ に論理設計を始めたり、シミュレーションをしたりできます。
  • L言語で設計してチップ化することも他言語に変換したフ ァイルを使って簡単にできます。
基本解説   配布


   目次
はじめに   論理設計の勧め   基本編   基本論理   74シリーズ   応用編   プロセッサ編   USB編   部品編   計数器   比較器   送信器   受信器   分周器   キーボード   表示器   メモリ   変換器   端末   演算器

 
   はじめに

ここではブール代数を原典とする論理設計について取り扱っています。 L言語は論理設計のための言語ですので記述されたものはすべて内部的にブール代数に表現できる データに変換されます。 同期式の記憶を使った順序論理はブール代数で取り扱うことができますのでL言語の設計 範囲です。 非同期式の記憶を使った順序論理はブール代数で取り扱うことができないのでL言語の設 計の範囲外です。

ですから、L言語で表記することはすべてブール代数で書いていることと同じです。 ブール代数ですべての論理設計を表せますがブール代数の式の並びから論理構造を読み取ることは大変 なので設計することが難しくなります、そこで ifswitch などの文章構造を使うことで容易に論理設計 できるようになりました。

if (a)
   if (b)
      y=1;
   else
      y=0;
   endif   
else
   y=0;
endif
は右のブール式と同じです。
y = a & b
はもっと簡単に書いた右とも同じです。
if (a)
   if (b)
      y=1;
   endif
endif

ところでブール代数に時間の概念はありません。 L言語で
a = 1;
b = 1; 
と書いた場合はふたつの代入は同時に行われます。 時間を取り入れたい場合は時間を表す信号を入力にすることで時間を自由自在に扱えます。
if (t==3)
   a = 1;
else
   a = a;
endif

if (t==5)
   b = 1;
else
   b = b;
endif 
a と b が記憶信号であった場合に t が時間を表す信号なら上のように書いて代入に時間差が付けられます。

コンピュータプログラミングと論理設計と言うことを考えると基本的な違いはないと考えます。 コンピュータプログラミングは書いたものを逐次実行するためコンピュータの性能に起因する時間的制約が 大きいので全く同じに扱えない面がありますがアセンブラレベルで見るとブール代数の逐次実行であり機能 面では論理設計と同じものを作りあげることができます。
論理設計は論理構造を作り上げるものですがコンピュータプログラミングはコンピュータという論理構造が 逐次実行する手順として書かれてコンピュータとプログラムが一体になったところにプログラマの意図した 論理構造に完成させるものです。
コンピュータプログラムの振る舞いはコンピュータの論理構造であるアーキテクチャによるものなのであま り固定的に言うこともできませんがコンピュータの論理構造は論理設計によるものなのでプログラムまでを 含んだコンピュータシステムは論理設計に含まれるものでブール代数の原理で動いている装置と理解してよ いと思います。

パスカルは歯車を組み合わせて計算機を作ったそうです。 ブール代数が発案された頃は真空管もリレーもトランジスタもない時代です。 論理設計を具現化するとき今では電気的な部品を使って作るのですが、これは現時点の技術では論理設計を 具現化するためには電気装置に実現するのが最も容易だという理由によります。

論理設計のある程度の機能がひとつのICに集約されてTTLやCMOSの標準ICをつなぎ合わせて電気装置を作る 時代になると論理設計は軽視され、つなぎ合わされた部品が電気的に正常動作するかに関心が移りました。 論理設計に関心の薄い人が論理的な解決と電気的な解決をよく分けることができないことにより論理設計 と電気設計を一体に考えて「ブール代数などの知識は知らないよりましだがディジタル回路の設計の実際 には役に立たない」と本に記した専門家もいます。

しかし今後は標準ICをつなぎ合わせるようなことでは実現の難しかったものを容易にひとつのICに論理設計 できるようになりました。 論理設計を標準ICを探して解決することはできなくなりました、論理設計が標準ICを組み合わせる制約から 自由になったので再び論理設計が重視されるようになりました。 当サイトでは論理設計の方法とそれを具現化する技術を別々のものと考えています、ブールらの先達の大き な功労の成果に感謝したいと思います。

 
   論理設計のすすめ
コンピュータチップやマルチタスクOSなどの複雑な機構にたよらなくても 並列動作を高速に行う装置を容易に論理設計によって構築できます。 具現化するときはCPLDやFPGAになりますが論理が入り端子数や動作速度が 合えば品種やメーカは問わないので時間の経過による部品の供給などの問 題も心配することなく設計をどんどん蓄積していくことができます。

 
   基本編
L言語を使った論理設計の基本になるものを置きます。

真理値表   状態遷移   手続きの作り方   記憶   体験見本    低速動作   書き方

 
   基本論理
論理設計の基本要素となるようなもので小規模なものを集めてあります。

一桁の加算器   四桁の加算器   四桁の減算器   四桁の計数器
比較器   八桁の比較器
四桁の乗算器1   四桁の乗算器2   八桁の除算器
パリティ1   パリティ2
D記憶   RS記憶   JK記憶   シフトレジスタ
CRC5   CRC16   CRC32
計数器1   計数器2   計数器3   計数器4
起点1   起点2   起点3   起点4   起点5
分周器1   分周器2   分周器3   分周器4   分周器5
受信1   受信2   送信1   送信2
ALU

 
   74シリーズ
標準ICの74シリーズですが非同期のものは同期化してあります。

74シリーズ
番号 機能
74LP00 2入力 NAND 4個
74LP02 2入力 NOR 4個
74LP04 NOT 6個
74LP08 2入力 AND 4個
74LP10 3入力 NAND 3個
74LP11 3入力 AND 3個
74LP20 4入力 NAND 2個
74LP21 4入力 AND 2個
74LP27 3入力 NOR 3個
74LP30 8入力 NAND
74LP32 2入力 OR 4個
74LP42 BCD to DECIMAL
74LP51 複合ゲート 2個
74LP73 JK 2個
74LP74 D 2個
74LP75 4ビットD
74LP76 JK 2個
74LP77 4ビットD
74LP85 4ビット比較器
74LP86 2入力 XOR 2個
74LP109 JK 2個
74LP131 3to8 復号器
74LP133 13入力 NAND
74LP138 3to8 復号器
74LP139 2to4 復号器 2個
74LP147 10to4 符号器
74LP148 8to3 符号器
74LP151 8入力1 選択器
74LP153 4入力1 選択器 2個
74LP154 4to16 復号器
74LP155 2to4 復号器 2個
74LP157 2to1 選択器 2個
74LP158 2to1 選択器 否定 2個
74LP162 4ビット設定付 10進計数器
74LP163 4ビット設定付 2進計数器
74LP164 8ビットシフトレジスタ
74LP165 8ビットシフトレジスタ 並列入力直列出力
74LP166 8ビットシフトレジスタ 並列入力直列出力 初期化付
74LP173 4ビットD 絶縁付
74LP174 4ビットD 初期化付
74LP175 4ビットD 初期化付 否定出力付
74LP192 4ビット10進増減計数器
74LP193 4ビット2進増減計数器
74LP194 4ビットシフトレジスタ並列入出力
74LP195 4ビットシフトレジスタ直列入力並列出力
74LP238 3to8 復号器
74LP240 4ビットバスバッファ 否定出力 絶縁付 2個
74LP241 4ビットバスバッファ 正出力 絶縁付 2個
74LP242 4ビット双方向バスバッファ 否定出力
74LP243 4ビット双方向バスバッファ 正出力
74LP244 4ビットバスバッファ 正出力 2個
74LP245 8ビット双方向バスバッファ 正出力
74LP251 8入力 選択器 絶縁付
74LP253 4入力 選択器 絶縁付 2個
74LP257 2入力 選択器 絶縁付 2個
74LP258 2入力 選択器 否定出力 絶縁付 2個
74LP259 記憶位置指定レジスタ
74LP273 8ビットD 初期化付
74LP280 9ビットパリティ
74LP283 4ビット全加算器
74LP298 2入力 選択器 レジスタ 4個
74LP354 8レジスタ入力 選択器 レベル記憶
74LP356 8レジスタ入力 選択器 エッジ記憶
74LP365 バスバッファ 正出力 6個
74LP366 バスバッファ 否定出力 6個
74LP367 バスバッファ 正出力 6個
74LP368 バスバッファ 否定出力 6個
74LP373 8ビットD 正出力 絶縁付 レベル記憶
74LP374 8ビットD 正出力 絶縁付 エッジ記憶
74LP375 4ビットD 正否出力
74LP390 4ビット 10進計数器 2個
74LP393 4ビット 2進計数器 2個
74LP533 8ビットD 否定出力 絶縁付 レベル記憶
74LP534 8ビットD 否定出力 絶縁付 エッジ記憶
74LP595 8ビットシフトレジスタ 記憶 絶縁付
74LP597 8ビットシフトレジスタ 入力レジスタ付
74LP640 8ビット双方向バスバッファ 否定出力
74LP643 8ビット双方向バスバッファ 正否出力
74LP688 8ビット比較器

 
   応用編
論理設計を始めるときに参考になるものを置きます。

メモリ   計数器   8ビット中の1を数える   チャタリング   パルス発生器   累算器   シフトレジスタ   乗算器   除算器   低速動作   数値調査   並び替え

 
   プロセッサ編
プロセッサを論理設計したものを置きます。

小プロセッサ


   CPU8A
8ビットの独自仕様のプロセッサです。
  • 開発室A : 8ビットマイコンの設計をしています。
  • 支援室A : 開発室A で設計した8ビットマイコンのデバッガがあります。
  • プログラム支援室A : 開発室A で設計した8ビットマイコンのプログラムがあります。
  • プログラム支援室A0 : 開発室A で設計した8ビットマイコンをプログラム的に16ビットマイコンにして使います。
開発室A   支援室A   プログラム支援室A   プログラム支援室A0

 
   USB編
設計中の備忘録です。

基礎知識 デバイス
コントローラ
ホスト
コントローラ
手続き テストベンチ
電気部 概要 概要 手続き譜(栞付き) 準備と方法
初期化 実効譜(栞付き) 使い方 手続き譜(目次付き) 機能実効譜(栞付き)
通信概要 実効譜(目次付き) 実効譜(栞付き) 機能実効譜(目次付き)
パケット 実効譜(目次付き)
信号
データ
デバイスリクエスト
ディスクリプタ
文書 日時 備考
USB LP 初出 : 2006. 1.18 チップ化前

 
   部品編
論理設計したあらゆるものを種類分けしてここに置きます。

 
   計数器
番号 機能
LDL06D25A リセットとイネーブルのついた4ビットのアップカウンタです。
LDL06D26A リセットとイネーブルのついた4ビットのダウンカウンタです。
LDL06D26B リセットとイネーブルのついた4ビットの固定上限つきのアップカウンタです。
LDL06D27A リセットとイネーブルのついた4ビットの固定下限つきのダウンカウンタです。
LDL06D28A リセットとイネーブルのついた4ビットのアップダウンカウンタです。

 
   比較器
番号 機能
LDL06D29A 4個の8ビット値から最大値を選んでそれが入力された場所を番号で示します。
LDL06D30A 4個の8ビット値から最小値を選んでそれが入力された場所を番号で示します。
LDL06E01A 4個の8ビット値から最大値を選んで出力します。
LDL06E01B 4個の8ビット値から最小値を選んで出力します。
LDL06E01C 次々に入力される8ビット値からより大きい値を記憶して出力します。
LDL06E01D 次々に入力される8ビット値からより小さい値を記憶して出力します。

 
   送信器
番号 機能
LDL06E02A 8ビットのデータをパリティなしの1ストップビットで直列送信します。
LDL06E02B 8ビットのデータを偶数パリティつきの1ストップビットで直列送信します。

 
   受信器
番号 機能
LDL06E05A 8ビットのデータをパリティなし1ストップビットで受信します。受信CLKは1ビットの16倍の周波数を使います。

 
   分周器
番号 機能
LDL06E06A 24ビットの分周器です。
LDL06E07A 出力選択式の分周器です。

 
   キーボード
番号 機能
LDL06E04A 5×5のキーボードを読み取ります。

 
   表示器
番号 機能
LDL06E09A 8桁の7セグメントLEDの表示器です。

 
   メモリ
番号 機能
LDL06E10A 4ビット×8の2ポートRAMです。
LDL06E12A 4ビット×8の3ポートRAMです。
LDL06E14A 入力データの番地を上昇計数式にした4ビット×8の3ポートRAMです。
LDL06E25A せり上がり記憶の4ビット×8の3ポートRAMです。
LDL06F02A せり上がり記憶と番地指定書き込みの4ビット×8の4ポートRAMです。

 
   変換器
番号 機能
LDL06E12B 4桁の10進数のBCDを16ビット値に変換します。
LDL06E21A 8桁の10進数のBCDを32ビット値に変換します。
LDL06F04A 32ビット値を8桁のBCD値に変換します。

 
   端末
番号 機能
LDL06E13A 10進数を8桁まで入力できる端末です。
LDL06E26A 10進数を8桁まで入力できるせり上がり入力の端末です。
LDL06E27A 10進数を8桁まで入力できる数値出力の端末です。
LDL06E30A 10進数を8桁まで入力できる機能番号出力付の数値出力の端末です。
LDL06E31A 10進数を8桁まで入力できる加算機能付きの数値出力の端末です。
LDL06F06A 10進数を8桁まで入力できる外部から表示データの変更可能な端末です。

 
   演算器
番号 機能
LDL06E17A 32ビットの加算器です。
LDL06E18A 32ビットの減算器です。
LDL06E19A 32ビットの乗算器です。
LDL06E20A 32ビットの除算器です。
LDL06F04B 剰余付の32ビットの除算器です。




プログラム
2008. 6.17 更新↓
CP/M アダプタ

チップ
2008. 6.12 追加↓
LCDドライバ
2008. 6.12 追加↓
BCD変換器
メモリモニタ

製作
2008. 6.16 更新↓
BCD変換器LCD表示
メモリモニタ

ピックアップ
LTOOL 1.34

部品考
シリアルROM
パラレルROM
SRAM
DRAM
FPGA

調査研究
2008. 6.18 更新↓
SHマイコン






  1. 無料アクセス解析