發表文章

Xilinx ZU5EV 上移植 MiSTer NES 核心

圖片
  長久以來復古遊戲除了實機外,最常看到的就是使用PC或是各種SoC搭配軟體模擬器,以現代的電子工程技術來說,模擬上個世紀的老主機、老電腦來說,可以說是游刃有餘。不過最近幾年以FPGA為核心的復古遊戲平台開始逐漸受到矚目。 與傳統軟體模擬器不同,FPGA 可以透過可程式化邏輯電路,重現早期遊戲主機的硬體架構,提供另一種實現復古遊戲系統的方式。 剛好,公司的工業檢測系統,同樣採用了 FPGA 作為核心,使用的是 Xilinx XCZU5EV(Zynq UltraScale+ MPSoC)。既然手邊就有這樣的硬體平台,外加現在有很多AI工具也可以協助 ,所以就來嘗試將經典的遊戲主機復刻在這些工業檢測系統中 。而眾多老遊戲主機中 , 不管 是情懷或網路上參考資料來說 ,俗稱紅白機的FC/NES是很好的選擇 。   Zynq UltraScale+ Zynq UltraScale+ 系列最有趣的地方,是一顆晶片裡包含了兩個完全不同的世界: PS(Processing System) :就是一般的 ARM  SoC,可以跑 Linux、開 USB、網路、DisplayPort 、檔案系統。 PL(Programmable Logic) :FPGA。並不是跑軟體程式,而是 描述什麼電路,就變成什麼電路 。 可以把它想成一塊「可以捏成任何晶片的黏土」。(當然還是有很多限制啦~ ) 兩部份靠晶片內部的 AXI 匯流排 溝通:PS 可以讀寫 PL 的暫存器,PL 也可以直接存取 DDR 記憶體, 還能發中斷給 PS。   由於這片工業檢測系統的電路板上並未有任何映像、USB相關的電路及端子接續到FPGA PL部份,所以分工很自然: PL 捏成一台紅白機,PS 負責餵 ROM、讀手把、把畫面和聲音送出去。 圖上三條彩色的線就是 PS 和 PL 之間的三種溝通方式: 藍線(M_AXI_HPM0) :PS 讀寫 PL 裡的控制暫存器(位址 0xA000_0000 )。 綠線(S_AXI_HP0) :PL 直接把畫好的畫面和聲音樣本寫進。 紅線(IRQ) :PL 畫完一幀就中斷通知 PS:「畫面好了,來拿!」 MiSTer MiSTer 是一個很有名的開源 FPGA 復古主機計畫。 跟一般的軟體模擬器不同,它是用硬體描述語言把當年的晶...

xm6模擬器 硬碟安裝及硬碟開機

圖片
以x68000存在的年代來說,硬碟也已經開始普及,即使當時在台灣和美國流行的x86/DOS也開始流行將作業系統安裝至硬碟,免去每次開機都要放作業系統磁片的步驟.當然x68000系統也可以這樣做.以下我們將在xm6模擬器上安裝上虛擬硬碟,並製作出可用這顆硬碟開機的Human68系統 製作xm6模擬器使用的虛擬硬碟 在xm6模擬器中於”Tools”選單中選取”Make a new SCSI Hard Disk”建立一個”.HDS”磁碟映像檔.名字在本範例中使用”human302.HDS”. 設定該硬碟的容量,建議可以調到最大的1000MB 於模擬器的“Options”頁籤中透過SCSI介面設定安裝硬碟(想當年SCSI硬碟可是天價啊~~).分別進行以下設定 SCSI Interface: “Internal” Drivers: 3 (3個SCSI裝置,其中”ID 0”為硬碟”HUMAN302”使用 ID 0: 選擇我們製作的虛擬硬碟映像檔"HUMAN302.HDS" 硬碟格式化 使用Human68K磁碟從磁碟機"0”開機.並於開機完成後使用”format”指令啟動磁碟格式化工具 選擇"SCSI裝置"後系統會自動進行SCSI裝置偵測,隨後可見到裝置列表,我們選擇裝置ID 0" ハードディスク 999MB"並按下Enter進行下一步 接下來先進行“装置初期化” 再進入"領域確保" 進入領域確保選單後"領域確保",設定以下參後,輸入Y"実行",當系統完成作業後會出現訊息 "ハードディスクの使⽤には再起動が必要です リセットしますか" 此時依然在磁碟機0裝有Human68k開機片的情況下重新啟動電腦 領域確保參數: 容量: 999 (999MB,趨近於HUMAN302.HDS的1000MB) ボリューム名:HUMAN302 システム転送:する (含開機系統)  複製Human68K相關檔案並設定硬碟開機 在做完硬碟格式化後,保持在使用Human68K磁片開機的情況下重新啟動電腦,進入Human68K系統後使用”copyall”指令將磁片內所有檔案拷貝至硬碟 copyall /s a:¥*.* c:¥ 在完成檔案拷貝後使用”switc...

X68000電腦模擬器,Human68k開機

圖片
概要 x68000為1987~2003日本SHARP公司所推出的電腦系統,本篇將介紹基本的模擬器搭配作業系統Human 68k進行開機.除了模擬器主程式,其他相關的檔案目前也已經有"無償公開",我們可以到X68000 Library中取以下相關檔案. 準備清單 1. xm6 TypeG 模擬器主程式  xm6_typeg_336_20230523.zip  載點 2. xm6 util 用來製作虛擬SCSI光碟機及CG-ROM檔案, 這些為模擬器開機需要的檔案 xm6_util_20220608.zip 載點 3.IPL-ROM 系統初始載入器,類似PC上BIOS,該版本為X68000 Expert機型所使用的版本 X68BIOSE.LZH 載點 4. Human68k x68000所使用的作業系統,下載的檔案為該OS的磁碟影像檔 HUMN302I.LZH 載點 安裝流程 1.建立新工作目錄 先建立一個工作目錄,例如”c:\myXM6\” 2.檔案配置 xm6_typeg_336_20230523.zip 解壓縮,並將並將最內層資料夾"xm6_typeg_336_20230523 \”內容所有的檔案拷貝至工作目錄”myXM6\”中  (下圖”1”) X68BIOSE.LZH 解壓縮,將"IPLROM.DAT"拷貝至工作目錄”myXM6\”中  (下圖”2”) HUMN302I.LZH 解壓縮,將"HUMAN302.XDF"拷貝至工作目錄”myXM6\”中  (下圖”3”) xm6_util_20220608.zip 解壓縮,將"XM6Util.exe"拷貝至工作目錄”myXM6\” 中 (下圖”4”) 3.CG-ROM/SCSI-設備生成 工作目錄“myXM6\”中準備好下列上述檔案1~4後按下”XM6Util.exe”,會出現對話框”XM6ユーティリティ”, 並在其中點選 "CG-ROM(CGROM.TMP)を合成する" 及 "内蔵SCSI-ROM(SCSIINROM.DAT)を合成す" 這樣我們在工作目錄會多出現“CGRO.TMP”及"SCSIINROM.DAT"兩個檔案. 配合Human68系統啟動使用模擬器 ...

[imageAI]What is the step number displayed in the log messages during custom object detection training.

圖片
For most people using imageAI to implement the object detection application, they probably reference the tutorial " imageAI : Custom Detection Model Training " on the official website. When people begin the training by the sample from the tutorial, the progress bar displayed with some numbers in the log message. Apart from the "Epoch", there are information about time and step but what is the "step" numbers mean? The step numbers  are counted from 0 in each Epoch. For people who have basic machine learning knowledge, they could think of the batch numbers (all training instances divided by batch size)  immediately .  However, it seems something different from the batch number. my case: -data set: 301 images with 3 types labels -batch size:4 -Epoch:12 I noticed the difference when I training a data set containing 301 images with batch size 4. I thought the number before the progress bar should be the total of the batch number "73" (301/4) and the c...

Let's start to understand the ImageAI!!

圖片
ImageAI is a fantastic python library that allows users to create it's own computer vision application in a short term. In fact, most features in ImageAI are made up of functions in KERAS and openCV. So from my point of view, understand the source is a great way to learn how those powerful libraries , and artificial intelligence as well. Although you can install the python package by PIP and trace the source that package included, download the source from the GitHub and test it without PIP install could be a better idea for study and test it. The reason is that we could modify the code or add debug messages in the source. It could break the original functions in the package. So I suggest test it in an isolation environment and use it without PIP install. Create a new "Evironments" without the imageAI  package in ANACONDA Install the essential for the imageAI -tensorflow 1.15.0 (PIP3) -keras 2.3.1 (PIP3) -opencv 4.0.1 (Anaconda) -pillow 7.1.2 (...