ラベル ロジックIC の投稿を表示しています。 すべての投稿を表示
ラベル ロジックIC の投稿を表示しています。 すべての投稿を表示

2022年2月8日火曜日

8to3エンコーダ 74HC148を使う

FV-1は2進3bitで8つのプログラムを選択できます。スイッチ3個で選択するのもレトロな感じで面白いかもしれませんが、つまみで選択できたほうが便利です。

マイコンでロータリーエンコーダを使うのもありですが、8to3エンコーダというロジックICがありロータリースイッチの切り替えを3bit値に変換できます。

回路図

74HC148は2Vから6Vで使えますので、FV-1の動作電圧3.3Vで使用します。

ブレッドボード配線


7(Pin4)が最低位となっているので、ロータリースイッチの1番を7(Pin4)、2番を6(Pin3)という風に接続します。ロータリースイッチが6Pのものしか手持ちがないので実験では線数が足りていません。上位bitは入力ピンをケーブルでGNDに落としてテストしました。

EI(5Pin)はイネーブラー(Active Low)なのでGND、GS(14Pin)とEO(15Pin)は同じICを連結して使うためのものでOpenにしておきます。

74HC148の論理表

メモ:


他にもロータリースイッチとダイオードで8to3エンコードされている作例もあります。

2021年10月10日日曜日

SubOSC Dフリップフロップを利用したサブオシレーターの製作

 Dフリップフロップの分周回路を利用してサブオシレーターを製作しました。1/2分周で1オクターブ下、1/4分周で2オクターブ下が出せます。

Dフリップフロップの分周は以前ブレッドボードで実験しました。「Dフリップフロップを使った矩形波の分周(CD4013)



回路図
U2BのOPアンプはコンパレータとして使っています。入力信号はSaw2Sqrの出力(±5Vの矩形波)を想定していますが、コンパレータなので振幅の小さい信号でもよく、矩形波以外のノコギリ波や三角波でもかまいません。コンパレータの出力は電源電圧±12Vより少し小さい振幅の矩形波となります。

ロジックICは単電源動作のため、入力信号にGNDより下の負電圧成分があると定格外になります。そのためD1のR5のリミッター回路で信号の負側をカットしています。

U3AのDフリップフロップは1/2分周回路です。

U3BのDフリップフロップも1/2分周回路でU3Aの1/2とU3Bの1/2あわせて1/4分周されます。

C1でACカップリングしてDC成分を除去して再びGNDを中心とした正負に振れる波形に戻します。

R1とR3の抵抗による分圧で信号が±5Vの振幅になるようにしています。

U1A、U1Bはボルテージフォロワによる出力バッファです。

なお、電源電圧が12VのためDフリップフロップはCMOSロジックICの4013を使います。74系は耐圧が低いので使えません。

入出力波形


1/2分周

CH1:入力 CH2:出力

1/4分周

CH1:入力 CH2:出力

ACカップリングの影響で矩形波の天井と底が斜めになっていますが、特にきちんとした矩形波にする必要はないと思います。むしろ味になるかもしれません。

VCOの出力とMIXしてみる


自作したVCOからノコギリ波、三角波、矩形波を出力し、SubOSCの1/2分周出力とMIXした波形を観測しました。

ノコギリ波とのMIX

CH1:基本波形 CH2:合成波形

三角波とのMIX

CH1:基本波形 CH2:合成波形

矩形波とのMIX

CH1:基本波形 CH2:合成波形

サブオシレーター同士でMIXしてみる


1/2 + 1/4

MIXの比率をうまく調節すると荒いノコギリ波のような波形になります。

ノコギリ波 + 1/2 + 1/4

CH1:基本波形 CH2:合成波形

矩形波とノコギリ波のMIXですが、ノコギリ波の比率を多くすると矩形波の階段状の波形は消え、ノコギリ状の波形になります。

サブオシレーターについて参考


矩形波以外にも、ノコギリ波、三角波、サイン波のサブオシレーターについての記事があります。

2019年6月11日火曜日

Dフリップフロップを使った矩形波の分周(CD4013)

Dフリップフロップを使った分周器で、矩形波のサブオシレーターとして使います。入出力の振幅を稼ぐために4000シリーズのCD4013を使いました。

参考:トランジスタ技術2015年8月号 74p



シミュレーション回路図

過渡解析

入力した矩形波に対して、1/2、1/4に分周された矩形波が出力されます。

ブレッドボード図


信号源: SQR_FG
電源: 5V

1/2

ch1:IN ch2:1/2

1/4

ch1:IN ch2:1/4

2018年12月13日木曜日

マイコンの非同期出力をデジタル回路でラッチして同期させるシミュレーション(メモ)

MIDI_CV_CONVの実験でArduinoからCV、GATE信号を出力していますが、チャンネルごとに1ms以上のずれがあります。

MIDIの通信速度は「31.25Kbps (±1%) の非同期方式 https://ja.wikipedia.org/wiki/MIDI」ということなので、1バイト(8bit)送受信するのに最低でも256usかかります。(1 / 31.25Kbps = 32us/bit で 32us/bit * 8bit = 256us)

→なんで「31.25Kbps」という中途半端な通信レートにしたのかも逆数をとると256という切りの良い数値になるのでわかる?

Arduinoなどマイコンで逐次処理すると、MIDIメッセージを解釈してCVやGATEとして出力すると、1処理ごとに、どうしても256us以上のずれが発生することになります。

1MHz駆動のマイコンなら1クロックで1usかかるので、大雑把に考えてMIDI->GATE変換に1ms以上のずれが発生するのはしかたないと思います。

1msというと短い時間のようですが、逆数をとると1kHzでもろに可聴帯域なのでそれほど気軽には考えられません。

実際にやるかどうかはわかりませんが、CV/GATEのチャンネルごとの時間的なずれをデジタル回路で同期させることを考え、LTSpiceでシミュレーションしました。

デジタル回路なら素子の特性によるので、マイクロ秒~ナノ秒(1MHz~1GHz)オーダーに抑えられると思います。

CV信号を発生させるDACのMCP4922は「LDAC」というラッチ端子があるので、GATE信号とまとめて同期できると思います。

シミュレーション回路図




Dフリップフロップを4つ並べて単一のクロック信号(CLK)で同期させる回路です。パラレル入力・パラレル出力のシフトレジスタということでPIPO Shift Registerというそうです。

参考「The Shift Register https://www.electronics-tutorials.ws/sequential/seq_5.html

この回路でマイコンの出力の時間的なズレを吸収し、CV/GATE信号を同期できます。

メモ:


CLK信号(黄色)がL->Hするとき入力(水色)が評価され、出力(緑色)される。

CLKがLの間にCV/GATE信号をマイコンから出力し、CLKをHにすると同期して信号が出力される。

レイテンシー(同期させるまでの待ち時間)が発生するので要注意。

周波数として考えると、CLKは信号本体の周波数の2倍以上は必要。

CLKが遅い場合はまともに出力されない↓



2017年7月2日日曜日

矩形波だけのファンクションジェネレータ バス・バッファICの74HC541で波形を整えられるか?


バッファなし


アナログ部をバイバスしてAVRからの出力を測定

無負荷

負荷抵抗330Ω

74HC541(TOSHIBA)を出力に入れる


無負荷

ch1:入力側 ch2:出力側

330Ω負荷

74HC541の絶対定格で出力電流は20mAとなっている。

AVRは5V駆動しているので、5V/330Ωで約15.2mA。

74HC541(TOSHIBA)を並列にして使ってみる


CMOSロジックICは単純に並列してやれば出力を増強できるそうだ。

http://ednjapan.com/edn/articles/0711/01/news142_2.html

74HC541の絶対定格で出力電流は20mA、電源電流は75mAとなっているので、4個並列にしてみた。5V/100Ωで50mA。

無負荷

ch1:入力側 ch2:出力側

負荷抵抗330Ω

負荷抵抗100Ω

バス・バッファを出力に入れると、クロックノイズと思われるH/L状態のときの変動は低減できそう。

だが、作るほどはっきりいいとも言い難い(@@;

2017年1月3日火曜日

LTSpiceでデジタル回路のシミュレーション(メモ)

LTSpiceのmodelにDigitalというくくりがあるが使い方がよくわからないので少しだけ調べてみた。トランジスタ技術の2016年1月号に「バーチャル電子工房 LTspice使いこなし事典」という付録がついているが、Digital Modelについては記述がないようだ。



LTSpiceのHelp([LTSpice(R)]-[Circuit Elements]-[A. Special Funcrions])に、

These are Linear Technology Corporation's proprietary special function/mixed mode simulation devices. Most of these and their behavior are undocumented as they frequently change with each new set of models available for LTspice. However, here we document some of them because of their general interest.

という記述があって、本来はLinear Tecnologyのデバイスのために内部的に使う目的のコンポーネントlなのかもしれない。


Dフリップフロップ



シミュレーション回路図


過渡解析


クロックは1kHzの矩形波、D入力は500Hzの矩形波でクロックから0.2ms遅延させた。Qが出力でCLKの立ち上がり時に評価されてDの値が出力されている。Dフリップフロップに想定されている動作だ。

Dフリップフロップの上に表示されている

Vhigh=4.5V Vlow=0V Trise=5ns Tfall=5ns

という値は、74HCシリーズのDフリップフロップの74HC74(日立)のDATASHEETから拾ってきた値で、コンポーネント上で右クリックして現れる「Component Attribute Editor」の「Value」で指定した。



Visibleのところを2回クリックしてXマークを表示させると、回路図上に定義した値が表示される。

LTSpiceのHelpには以下の様なパラメータが記載されている。


シュミットトリガ


シュミットトリガのヒステリシスの値の与え方は、LTSpiceのHelpには載っていない。「ねがてぃぶろぐ」さんの記事を参考にして「Vh」で指定した。



シミュレーション回路図


過渡解析


Vtがスレッショルド値でVP(L→H)とVN(H→N)の中間値を指定するようだ。VhはVPとVNの差。

DATASHEETによると、VCC:4.5Vのとき標準値で

VP(L→H) | 2.7V
VN(H→L) | 1.6V
VH(ヒステリシス) | 1.1V

となっているのでシミュレーションできていると思う。

コンポーネント左下の端子


Digital Componentは左下に端子がついていて、説明がないので何かわからないが、電圧を印加すると出力に対するバイアスとして働くようだ。(ということはGND的な端子なのかなあ?)

シミュレーション回路図


過渡解析(V2=0V)


過渡解析(V2=1V)


Netlist

A1 IN V2 V2 V2 V2 OUT V2 V2 BUF Vhigh=4.5V
V1 IN 0 SINE(2.25V 2.25V 1k)
V2 V2 0 0V
.tran 1m
.backanno
.end

Netlistは上記の通りとなっている。左下の端子はデフォルト値を与えるってことなのか(@@?

2016年11月14日月曜日

ベースマシンでMCP23S17を使う&SPIバス・バッファ(TC74HC541)基板を使う。

I/OエキスパンダーのMCP23S17を使ってIOピンを増やしてみた。

配線図

ファームウェア
BaseMachineUIControler Classのテスト
https://developer.mbed.org/users/ryood/code/BaseMachine_UIController_Test/ Revision:7

BaseMachine本体
https://developer.mbed.org/users/ryood/code/BaseMachine/ Revision:4

UI系ボード


ブレッドボード上のMCP23S17につなげたのはタクトスイッチを8個並べたもので、再生中のシーケンスパターンを切り替える予定。まだパターン切替の機能は実装していないが、MCP23S17から値を読み取ってLCDに表示するところまでは動作確認した(^q^/

MCP23S17の仕様としては単体でもあと8bit増やせるし、MCP23S17を何個か並べてデバイスのアドレスを指定すれば16bit×8まで信号線を増やさずに拡張できるようだ。 

Synth系ボード


NucleoのSPI出力はSPIバスバッファに入れてDCO、DCF、DCAに分配する。SPIバスバッファから信号が出力されているのと、DCOが制御できているのを確認した。


2016年11月12日土曜日

SPIバス・バッファ(TC74HC541)基板の製作

ブレッドボードで実験しているとケーブルが抜けたりしてややこしいので、以前考えていた基板を作ってみた。(ほんとはプログラミングするのに疲れたので息抜き(^q^;)

回路図

基板図

使いやすいようにピンヘッダを変更。バス・バッファと状態表示用のLEDx8のGNDを分離。

Github:
https://github.com/ryood/BaseMachine/tree/master/SPI%20Bus%20Buffer

部品面

TC74HC541の出力に入れるダンピング抵抗は値を変更できるようにピンヘッダを使って実装した。写真はブレッドボード用のジャンパを使ってショートした状態。

出力は4系統のピンソケットと測定用のピンヘッダ。

ハンダ面

ジャンパ配線がないのではんだ付けは楽ちん。ピンソケットが格子状になっているところはハンダブリッジだけでつなぐのは至難の技なので抵抗とうの切った足を中に仕込んでいる。

ダンピング抵抗のテスト



NucleoからSPI信号を出力してArduinoで受信するようにテストプログラムを書いて実験してみた。赤色LEDはSPIバス・バッファとは全く関係なくて基板面積が余ったのでベースマシンのデバッグ用に載せてみた。

ダンピング抵抗の値を変えつつ、SPIのSCK信号を拾ってみた。(東芝製TC74HC541AP使用)

0Ω (ショート)

ch1:74HC541の入力 ch2:ダンピング抵抗からの出力

22Ω

33Ω

47Ω

68Ω

100Ω

TC74HC541を通すとダンピング抵抗を入れなくても波形の暴れは抑えられるが、20ns秒程度遅れるようだ。

100Ωは波形のなまりが顕著だが、その他は評価が難しい。とりあえずショートさせた状態で様子見しようかな?

東芝製TC74HC541APと日立製HD74HC541Pの比較


同じ74HC541でも型番によってDATASHEETのスペックが少し違う。aitendoでHD74HC541Pを仕入れてみたので比較。どちらもダンピング抵抗は0Ωにして測定した。

東芝製TC74HC541AP (50円@秋月)


日立製HD74HC541(100円@aitendo)

これも評価が難しい(@@;