目次
前
次
HEXファイル生成(Python)
マイコンのファームウエアやROMデータをライターに
転送する場合、Intel HEXファイルフォーマットでの
情報を集約することが多いです。
手持ちのICがなく、ROMを利用して4ビットフルアダーの
作成が必要になったとき、HEXファイルを生成するために
スクリプト言語を利用しました。
次のような回路をROMをデコーダに利用して作成します。
(キャリー入力はなしとします。)
2つの4ビット入力をもち、加算結果の4ビットと
キャリーの1ビットを出力として持ちます。
加算結果を求めるのは、2進数4ビットを用意して
次のように計算すればよいでしょう。
for i in range(0,16) :
tmp = ""
for j in range(0,16):
# address
adr = i * 16 + j
# add
add = i + j
# header
if j == 0 :
tmp += ": " +"{0:04X}".format(adr)
# values
tmp += " " + "{0:02X}".format(add)
# show
print tmp
このスクリプトを実行すると、次のようになります。
Intel HEXフォーマットを改めて見直すと以下です。
- 6ブロックで構成
- 行の先頭は、スタートコードで':'をおく
- スタートコードに続けて、バイトカウントを16進数2桁で指定
- バイトカウントに続けて、開始アドレスを16進数4桁で指定
- アドレスに続けて、レコードタイプを2桁で指定
- レコードに続けて、バイトカウントで指定したデータ数の情報を16進数2桁で指定
- 最後は、チェックサムをおく
チェックサムは、バイトカウンタからレコード情報の16進数を
加算し、2の補数を求めます。2の補数は、16進数2桁として
求めます。
フォーマットに従って、フルアダーの回路情報を生成する
スクリプトは、以下となります。
for i in range(0,16) :
tmp = ""
# recode size
sum = 16
for j in range(0,16):
# address
adr = i * 16 + j
sum += adr
# recode type
sum += 0
# add
add = i + j
#
sum += add
# header
if j == 0 :
tmp += ":10"+"{0:04X}".format(adr)+"00"
# values
tmp += "{0:02X}".format(add)
# calculate check sum
sum %= 256
sum ^= 255
sum += 1
sum %= 256
# concatenate
tmp += "{0:02X}".format(sum)
# show
print tmp
# End Of File
print ":000001FF"
実行すると、次のようになります。
I/Oリダイレクトを利用し、テキストファイルにすると
各種ライターを使いROMに焼きこめます。
ROMライターは、次のような簡易タイプでも充分役立ちます。
目次
前
次