2019年7月31日水曜日

MachXO2 breakout boardでmc6800(2)

シミュレーションで"testbench1.vhd"が用意されてましたので動かしてみます。

 Simulation Wizardを呼びます。
又は


Project nameを入れます。



 cpu68.vhd以外をremoveします。
 testbench1.vhdをaddします。
 エラーで出ていますが、そののままnextします。
 Finishします。
 Active-HDLが立ち上がりましたが、
 # Error: COMP96_0078: Sys68-X300-17jan04/testbench1.vhd : (111, 16): Unknown identifier "cpu_hold".
# Error: COMP96_0078: Sys68-X300-17jan04/testbench1.vhd : (112, 16): Unknown identifier "cpu_halt".

のエラーで動作していません。
testbench1.vhdを修正します

Design Browser fileタブを選択して、testbench1.vhdをダブルクリックします。

 44,45行目に追加しました。
  signal cpu_hold : std_logic := '0';
  signal cpu_halt : std_logic := '0';
saveします。


 Compleします。

Simulation>End Simulation

Simulation>Initialize Simulation



 top moduleを設定しすま。
 Consoleに"wave *"と入力します。
 top moduleの信号がadd されます。
Consoleに"run 1us"と入力しrunさせます。
シミュレーション結果が表示されます。
以下は終了手順です。







2019年7月26日金曜日

MachXO2 breakout boardでmc6800(1)

System68 - VHDL 6800から
Sys68-X300-17jan04.zipをdownloadします。
Sys68 xxのターゲットはxilinxです。MachXO2でどこまでいけるか、
Lattice Diamond 3.10で論理合成してみます。
"C:\project\mc6800\sys68"とディレクトリーを作成して、その下にSys68-X300-17jan04.zipを展開して置きます。
Lattice Diamondを起動して、新しいプロジェクトを登録します。
File>New>Project


Project Nameを"sys68"としました。
Add Sourceでコードを登録します。
 
*.vhdを登録します。testbendh*.vhdは除きました。
Copy source to implementation dirctoryのチェックは外しました。
チェックを入れると\impl1\source下に、ソースコードがコピーされます。
デバイスをMachXO2 LCMXO2-7000HEで選択
 Synthesis Tool Synplify Proを選択
Projectの内容が表示されます。
WARNIGで
swtbug_rom.vhd(79,3-106,4) (VHDL-1250) ramb4_s8 remains a black-box since it has no binding entity
が出てますが、取り込めるました。
 論理合成してみます。
Proess タブにてSynthesize Designをダブルクリック
Done: completed successfully
JEDEC Fileまでやってみます。JEDEC Fileダブルクリック

エラーメッセージが出ました。
ERROR - logical block 'my_swtbug_rom/ROM0' with type 'RAMB4_S8' is unexpanded.
ERROR - logical block 'my_swtbug_rom/ROM1' with type 'RAMB4_S8' is unexpanded.
ERROR - DRC failed with 2 errors and 0 warnings.
Design Results:
   2844 blocks expanded
        Unexpanded blocks:
           Name = 'ROM0', Type = 'RAMB4_S8'
           Name = 'ROM1', Type = 'RAMB4_S8'
Complete the first expansion.
Writing 'sys68_impl1.ngd' ...
Total CPU Time: 0 secs  

Total REAL Time: 0 secs  

Done: error code 2
XilinxのマクロRAMB4_S8がないので、仮で外します。
File Listタブ "System68.vhd"をダブルクリックして、エディタを起動します。

451~459行までコメントアウトして、"RAMB4_S8"を使っているswtbug_romを呼ばないここにします。
 
 再び、JEDEC Fileダブルクリック
Done: completed successfully
今、内部ロジックをどの程度使っているかを見ます。
impl1>Design Summary>Proces Reports>Mapをクリック
Design Summary
   Number of registers:    491 out of  7209 (7%)
      PFU registers:          489 out of  6864 (7%)
      PIO registers:            2 out of   345 (1%)
   Number of SLICEs:      1245 out of  3432 (36%)
      SLICEs as Logic/ROM:   1245 out of  3432 (36%)
      SLICEs as RAM:            0 out of  2574 (0%)
      SLICEs as Carry:         78 out of  3432 (2%)
   Number of LUT4s:        2477 out of  6864 (36%)
      Number used as logic LUTs:        2321
      Number used as distributed RAM:     0
      Number used as ripple logic:      156
      Number used as shift registers:     0
   Number of PIO sites used: 101 + 4(JTAG) out of 115 (91%)
   Number of block RAMs:  0 out of 26 (0%)
   Number of GSRs:  1 out of 1 (100%)
約3割程度です。

impl1>Design Summary>Process Reports>Synplify Pro

                   Requested     Estimated     
Starting Clock     Frequency     Frequency     
-----------------------------------------------
Sys68|SysClk       1.0 MHz       37.2 MHz      
System             1.0 MHz       217.3 MHz     
=============================================
とあるので、SysClockを25MHzにできそうです。

2019年7月25日木曜日

System68 - VHDL 6800

John Kent's Home Web Page
に、

System68 6800/01 System On a Chip in VHDL

モートローラのmc6800をfpga(xilinx)で実装されているので、動かしてみます。

xilinxのfpga評価ボードは、もっていないので
移植をしてみたいと思います。
この素晴らしい、プロジェクトを公開していただいた
John Kent氏に感謝します。