Chip_Case_Generator/4ch-Z_Generator/FourChZCaseGenerator.ipynb

560 lines
24 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "code",
"id": "initial_id",
"metadata": {
"collapsed": true,
"ExecuteTime": {
"end_time": "2026-07-28T13:59:14.582505Z",
"start_time": "2026-07-28T13:59:14.575884Z"
}
},
"source": [
"import sys\n",
"import os\n",
"import numpy as np\n",
"from make_case import *\n",
"from make_inst import *\n",
"from FourChZChipConfig import *\n",
"from FourChZAssemblyTemplateManager import *\n",
"from FourChZEnvelopeGenerator import *\n",
"from FourChZreg_define import *\n",
"from ParamsManager import ParamsManager\n",
"from copy import deepcopy\n",
"from itertools import product\n",
"from pathlib import Path\n",
"mk = make_case()\n",
"mk_instr = make_inst()\n",
"from pathlib import Path\n",
"def run_case(params, save_json=True, write_hw=False):\n",
" \"\"\"\n",
" 通用执行函数:自动判断模式并按需调用 configure_chip_output, env_config, instruction_config\n",
" :param output_dir: 可选,自定义输出文件和 JSON 保存的目录路径\n",
" \"\"\"\n",
" # 确定最终输出目录\n",
" base_dir = Path('D:/MyDocument/工作/Z芯片的case生成器/Chip_Case_Generator/4ch-Z_Generator/gen_cases') # 在这边选择case目录所在位置\n",
" folder_name = params.get('FolderName', 'General') #文件夹名不用在这边改在case参数里面改\n",
" out_dir = base_dir / folder_name\n",
" \n",
" case_name = params['CaseName'] #Case名不用在这边改在case参数里面改\n",
" config_file_path = out_dir / f\"{case_name}_HEX.txt\"\n",
" # 更新 params 中的路径信息\n",
" params['config_file'] = str(config_file_path)\n",
" \n",
"\n",
" # 基础芯片输出配置\n",
" config_chip_reg(mk, **params)\n",
" print(\"执行 config_chip_reg\")\n",
" \n",
" # 自动识别并执行包络配置\n",
" if 'envelope_configs' in params or 'envelope_type' in params or 'amp' in params:\n",
" if 'env_config' in globals():\n",
" env_config(mk, **params)\n",
" print(\"执行了 env_config\")\n",
" \n",
" # 自动识别并执行指令配置\n",
" if 'instr_type' in params:\n",
" instruction_config(mk, mk_instr, **params)\n",
" print(\"执行了 instruction_config\")\n",
" \n",
" \n",
" # 基础硬件寄存器下发\n",
" if write_hw:\n",
" channel = params['channel']\n",
" envm_base =addr_base['ENVM0_BASE'] + channel* 0x600000\n",
" itcm_base = addr_base['ITCM0_BASE'] + channel* 0x600000\n",
" mk.rw_once('w',envm_base , 0, params['config_file'])\n",
" instr_type = params.get('instr_type', None)\n",
" if instr_type is None:\n",
" mk.rw_once('w', itcm_base, '0x2B', params['config_file'])\n",
"\n",
" print(f\"生成文件路径:{config_file_path.resolve()}\")\n",
" return None\n",
"\n"
],
"outputs": [],
"execution_count": 41
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-07-28T14:17:52.745749Z",
"start_time": "2026-07-28T14:17:52.706024Z"
}
},
"cell_type": "code",
"source": [
"#general_send_wait这个汇编模板的 SEND_WAIT效果示例。\n",
"#单通道 AWG通用模板\n",
"param_ch0 = {\n",
" 'channel' : 0,\n",
" 'chip_mode':'AWG', #分为AWG和RAMP模式\n",
" 'mode':'mod', #可选nco nco_fm env mod四种模式\n",
" 'tail_en': False, #拖尾矫正开关\n",
" 'tc_coef_set': 'coef3', #拖尾矫正打开生效\n",
" 'inner_sync': False, #内部触发,应该是软触发,写一个寄存器,就能触发\n",
" 'amp_mod_enable': True, #调幅的开关mod调制模式下起作用。\n",
" 'freq_mod_enable': True, #nco的开关\n",
" 'bias_enable': True, #必开的开关AWG模式下偏置必须打开否则AWG输出保持为0.\n",
" \n",
" 'fcw': [100, 200, 300, 400], # MHz\n",
" 'mcu_reg_clr': True,\n",
" 'pcw': [0, 30, 45, 90, 120, 135, 150, 180], # Deg \n",
" 'rz_ff_pha': 0,\n",
" 'rz_fm_pha': 45,\n",
" 'ff_amp': [32767, 32767, 32767, 32767],\n",
" 'fm_amp': [32767, 32767, 32767, 32767],\n",
" 'bias': [1, 2, 3, 4],\n",
" 'fm_en' :False, #nco_fm的开关在nco_fm模式时必须打开,不然nco_fm不工作就是一条直线. mod的模式下开启fm_en,同时打开nco就能看到两个正弦波叠加啊\n",
" 'instr_type': 'general_send_wait', #调用汇编搬移上面的数据到mcu_regfile,同时配合下面参数执行指令.AWG固定用这个模板不用改。\n",
" 'send_interval': [100, 150, 200, 250, 300, 350, 400,450,500],\n",
" 'cycle_num': 1, #0代表无限循环如果要想扫参那么这个波形序列就不能无限循环播放\n",
" 'codeword_configs': [\n",
" # {'wave_hold': 1, 'fcw_index': 0, 'pcw_index': 0, 'code_clr': 1, 'env_index': 0},\n",
" # {'wave_hold': 0, 'fcw_index': 0, 'pcw_index': 0, 'code_clr': 0, 'env_index': 1},\n",
" # {'wave_hold': 1, 'fcw_index': 0, 'pcw_index': 0, 'code_clr': 1, 'env_index': 2},\n",
" # {'wave_hold': 0, 'fcw_index': 0, 'pcw_index': 0, 'code_clr': 0, 'env_index': 3},\n",
" {'wave_hold': 0, 'fcw_index': 0, 'pcw_index': 0, 'code_clr': 1, 'env_index': 4},\n",
" {'wave_hold': 0, 'fcw_index': 0, 'pcw_index': 0, 'code_clr': 1, 'env_index': 5},\n",
" {'wave_hold': 0, 'fcw_index': 0, 'pcw_index': 0, 'code_clr': 1, 'env_index': 6},\n",
" {'wave_hold': 0, 'fcw_index': 0, 'pcw_index': 0, 'code_clr': 1, 'env_index': 7},\n",
" {'wave_hold': 0, 'fcw_index': 0, 'pcw_index': 0, 'code_clr': 1, 'env_index': 8},\n",
" ], \n",
" 'sweep_config': {\n",
" 'sweep_num': 0, # 外层循环如果是0则代表不扫参该部分无效只搬移一次的23个寄存器。如果是 1代表重载1次寄存器加上最初的那次共两次.\n",
" 'offsets': [0x78, 0x40], # 告诉硬件本次扫描要修改哪几个寄存器的偏移地址比如要重载2个寄存器0x78 = AMPR0 (幅度), 0x40 = CWFR0 (频率) \n",
" 'steps': [3000, int(100 / fs / 4 * 2 ** 32)] # 幅度每次 +3000频率每次 100MHz (支持负数Python会自动转32位补码给MCU) ,所以第一次载入是载入初始值,第二次就是原值+steps,第三次就是上一次的值+steps \n",
" },\n",
" 'envelope_configs': [ #包络配置\n",
" {'envelope_type': 'rect_hold', 'amp': 32767},\n",
" {'envelope_type': 'flattop_hold', 'amp': 32767, 'edge_time': 3.5, 'wave_time': 30},\n",
" {'envelope_type': 'acz', 'amp': 32767, 'wave_time': 12 * 4},\n",
" {'envelope_type': 'accz', 'wave_time': 12 * 4},\n",
" {'envelope_type': 'cosine', 'amp': 32767, 'wave_time': 12 * 25},\n",
" {'envelope_type': 'rect', 'amp': 32767, 'wave_time': 12},\n",
" {'envelope_type': 'flattop', 'amp': 32767, 'edge_time': 2, 'wave_time': 22},\n",
" ],\n",
" 'FolderName': 'General',\n",
" 'CaseName': 'env2',\n",
"}\n",
"# ==========================================\n",
"#在运行前,先删除旧的 HEX 文件防止重复运行追加到case文件中\n",
"base_dir = Path('D:/MyDocument/工作/Z芯片的case生成器/Chip_Case_Generator/4ch-Z_Generator/gen_cases')\n",
"out_dir = base_dir / param_ch0['FolderName']\n",
"hex_file = out_dir / f\"{param_ch0['CaseName']}_HEX.txt\"\n",
"# 如果上一次运行的旧文件还在,就把它删掉\n",
"if hex_file.exists():\n",
" hex_file.unlink()\n",
"# ==========================================\n",
"run_case(param_ch0)\n",
"\n",
"#通道1\n",
"param_ch1 = param_ch0.copy()\n",
"param_ch1['channel'] = 1\n",
"param_ch1['fcw'] = [200, 200, 300, 400]\n",
"run_case(param_ch1)\n",
"\n",
"#通道2\n",
"param_ch2 = param_ch0.copy()\n",
"param_ch2['channel'] = 2\n",
"param_ch2['fcw'] = [300, 200, 300, 400]\n",
"run_case(param_ch2)\n",
"\n",
"#通道3\n",
"param_ch3 = param_ch0.copy()\n",
"param_ch3['channel'] = 3\n",
"param_ch3['fcw'] = [400, 200, 300, 400]\n",
"run_case(param_ch3)\n",
"\n",
"# ==========================================\n",
"#参数打包到json里面\n",
"out_dir = Path(param_ch0['config_file']).parent \n",
"case_name = param_ch0['CaseName']\n",
"all_params = {\n",
" \"ch0\": param_ch0,\n",
" \"ch1\": param_ch1,\n",
" \"ch2\": param_ch2,\n",
" \"ch3\": param_ch3\n",
"}\n",
"pm = ParamsManager(out_dir)\n",
"pm.save(all_params, case_name)\n",
"# ==========================================\n",
"\n"
],
"id": "3e79e12a64f2769e",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"执行 config_chip_reg\n",
"执行了 env_config\n",
"执行了 instruction_config\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\4ch-Z_Generator\\gen_cases\\General\\env2_HEX.txt\n",
"执行 config_chip_reg\n",
"执行了 env_config\n",
"执行了 instruction_config\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\4ch-Z_Generator\\gen_cases\\General\\env2_HEX.txt\n",
"执行 config_chip_reg\n",
"执行了 env_config\n",
"执行了 instruction_config\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\4ch-Z_Generator\\gen_cases\\General\\env2_HEX.txt\n",
"执行 config_chip_reg\n",
"执行了 env_config\n",
"执行了 instruction_config\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\4ch-Z_Generator\\gen_cases\\General\\env2_HEX.txt\n"
]
}
],
"execution_count": 62
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-07-28T14:03:52.514124Z",
"start_time": "2026-07-28T14:03:52.492729Z"
}
},
"cell_type": "code",
"source": [
"# RAMP 通用模板1\n",
"#RAMP SPI控制\n",
"param_ch0 = {\n",
" 'channel' : 0,\n",
" 'chip_mode': 'RAMP',\n",
" 'ramp_ctrl':'SPI',\n",
" 'fixed_enable': True, #是固定值还是斜坡模式\n",
" 'fixed_value': 22767, #固定值模式生效\n",
" 'height': 512, 'step_time': 34 , #斜坡模式生效 step_time就是台阶宽度\n",
" \n",
" 'FolderName': 'RAMP',\n",
" 'CaseName': f\"RAMP_SPI\"\n",
"}\n",
"# ==========================================\n",
"#在运行前,先删除旧的 HEX 文件防止重复运行追加到case文件中\n",
"base_dir = Path('D:/MyDocument/工作/Z芯片的case生成器/Chip_Case_Generator/4ch-Z_Generator/gen_cases')\n",
"out_dir = base_dir / param_ch0['FolderName']\n",
"hex_file = out_dir / f\"{param_ch0['CaseName']}_HEX.txt\"\n",
"# 如果上一次运行的旧文件还在,就把它删掉\n",
"if hex_file.exists():\n",
" hex_file.unlink()\n",
"# ==========================================\n",
"run_case(param_ch0,write_hw = True)\n",
"\n",
"#通道1\n",
"param_ch1 = param_ch0.copy()\n",
"param_ch1['channel'] = 1\n",
"run_case(param_ch1,write_hw = True)\n",
"\n",
"#通道2\n",
"param_ch2 = param_ch0.copy()\n",
"param_ch2['channel'] = 2\n",
"run_case(param_ch2,write_hw = True)\n",
"\n",
"#通道3\n",
"param_ch3 = param_ch0.copy()\n",
"param_ch3['channel'] = 3\n",
"run_case(param_ch3,write_hw = True)\n",
"# ==========================================\n",
"#参数打包到json里面\n",
"out_dir = Path(param_ch0['config_file']).parent \n",
"case_name = param_ch0['CaseName']\n",
"all_params = {\n",
" \"ch0\": param_ch0,\n",
" \"ch1\": param_ch1,\n",
" \"ch2\": param_ch2,\n",
" \"ch3\": param_ch3\n",
"}\n",
"pm = ParamsManager(out_dir)\n",
"pm.save(all_params, case_name)\n",
"# ==========================================\n"
],
"id": "1f6f70a26d5da7f8",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"执行 config_chip_reg\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_SPI_HEX.txt\n",
"执行 config_chip_reg\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_SPI_HEX.txt\n",
"执行 config_chip_reg\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_SPI_HEX.txt\n",
"执行 config_chip_reg\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_SPI_HEX.txt\n"
]
}
],
"execution_count": 53
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-07-28T09:26:33.012700Z",
"start_time": "2026-07-28T09:26:32.989301Z"
}
},
"cell_type": "code",
"source": [
"#RAMP MCU控制时,斜坡模式\n",
"param_ch0 = {\n",
" 'channel' : 0 ,\n",
" 'chip_mode': 'RAMP',\n",
" 'ramp_ctrl':'MCU',\n",
" #是固定值还是斜坡模式如过是斜坡模式则要指令选ramp_step\n",
" 'instr_type': 'ramp_step', #可选ramp_step或ramp_fixed. mcu执行不同指令操作模板实现台阶或斜坡这两种模式\n",
" 'ensemble_num' : 2, #大循环次数\n",
" 'param_num' :2, # 循环中参数个数,和列表个数一致\n",
" 'height': [128,256], \n",
" 'step_time': [50,50], \n",
" \n",
" 'FolderName': 'RAMP',\n",
" 'CaseName': f\"RAMP_MCU_STEP\"\n",
"}\n",
"# ==========================================\n",
"#在运行前,先删除旧的 HEX 文件防止重复运行追加到case文件中\n",
"base_dir = Path('D:/MyDocument/工作/Z芯片的case生成器/Chip_Case_Generator/4ch-Z_Generator/gen_cases')\n",
"out_dir = base_dir / param_ch0['FolderName']\n",
"hex_file = out_dir / f\"{param_ch0['CaseName']}_HEX.txt\"\n",
"# 如果上一次运行的旧文件还在,就把它删掉\n",
"if hex_file.exists():\n",
" hex_file.unlink()\n",
"# ==========================================\n",
"run_case(param_ch0,write_hw = True)\n",
"\n",
"#通道1\n",
"param_ch1 = param_ch0.copy()\n",
"param_ch1['channel'] = 1\n",
"run_case(param_ch1,write_hw = True)\n",
"\n",
"#通道2\n",
"param_ch2 = param_ch0.copy()\n",
"param_ch2['channel'] = 2\n",
"run_case(param_ch2,write_hw = True)\n",
"\n",
"#通道3\n",
"param_ch3 = param_ch0.copy()\n",
"param_ch3['channel'] = 3\n",
"run_case(param_ch3,write_hw = True)\n",
"\n",
"# ==========================================\n",
"#参数打包到json里面\n",
"out_dir = Path(param_ch0['config_file']).parent \n",
"case_name = param_ch0['CaseName']\n",
"all_params = {\n",
" \"ch0\": param_ch0,\n",
" \"ch1\": param_ch1,\n",
" \"ch2\": param_ch2,\n",
" \"ch3\": param_ch3\n",
"}\n",
"pm = ParamsManager(out_dir)\n",
"pm.save(all_params, case_name)\n",
"# =========================================="
],
"id": "84e2c612b0a8f7ab",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"执行 config_chip_reg\n",
"执行了 instruction_config\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\4ch-Z_Generator\\gen_cases\\General\\RAMP_MCU_STEP_HEX.txt\n",
"执行 config_chip_reg\n",
"执行了 instruction_config\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\4ch-Z_Generator\\gen_cases\\General\\RAMP_MCU_STEP_HEX.txt\n",
"执行 config_chip_reg\n",
"执行了 instruction_config\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\4ch-Z_Generator\\gen_cases\\General\\RAMP_MCU_STEP_HEX.txt\n",
"执行 config_chip_reg\n",
"执行了 instruction_config\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\4ch-Z_Generator\\gen_cases\\General\\RAMP_MCU_STEP_HEX.txt\n"
]
}
],
"execution_count": 26
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-07-28T14:13:45.795371Z",
"start_time": "2026-07-28T14:13:45.764237Z"
}
},
"cell_type": "code",
"source": [
"#RAMP MCU控制时,固定值模式\n",
"param_ch0 ={\n",
" 'channel' : 0,\n",
" 'chip_mode': 'RAMP',\n",
" 'ramp_ctrl':'MCU',\n",
" #是固定值还是斜坡模式如果是固定值模式则指令选ramp_fixed\n",
" 'instr_type': 'ramp_fixed', #可选ramp_step或ramp_fixed. mcu执行不同指令操作模板实现台阶或斜坡这两种模式\n",
" 'fixed_value': [1<<15] + [1<<15 | 1<<i for i in range(0,15)] + [0], \n",
" 'wait_clk': [1000]*17,\n",
" 'config_param_num': 17, \n",
" 'ensemble_num': 0, \n",
" \n",
" 'FolderName': 'RAMP',\n",
" 'CaseName': f\"RAMP_MCU_FIXED\"\n",
"}\n",
"# ==========================================\n",
"#在运行前,先删除旧的 HEX 文件防止重复运行追加到case文件中\n",
"base_dir = Path('D:/MyDocument/工作/Z芯片的case生成器/Chip_Case_Generator/4ch-Z_Generator/gen_cases')\n",
"out_dir = base_dir / param_ch0['FolderName']\n",
"hex_file = out_dir / f\"{param_ch0['CaseName']}_HEX.txt\"\n",
"# 如果上一次运行的旧文件还在,就把它删掉\n",
"if hex_file.exists():\n",
" hex_file.unlink()\n",
"# ==========================================\n",
"\n",
"run_case(param_ch0,write_hw = True)\n",
"\n",
"#通道1\n",
"param_ch1 = param_ch0.copy()\n",
"param_ch1['channel'] = 1\n",
"run_case(param_ch1,write_hw = True)\n",
"\n",
"#通道2\n",
"param_ch2 = param_ch0.copy()\n",
"param_ch2['channel'] = 2\n",
"run_case(param_ch2,write_hw = True)\n",
"\n",
"#通道3\n",
"param_ch3 = param_ch0.copy()\n",
"param_ch3['channel'] = 3\n",
"run_case(param_ch3,write_hw = True)\n",
"# ==========================================\n",
"#参数打包到json里面\n",
"out_dir = Path(param_ch0['config_file']).parent \n",
"case_name = param_ch0['CaseName']\n",
"all_params = {\n",
" \"ch0\": param_ch0,\n",
" \"ch1\": param_ch1,\n",
" \"ch2\": param_ch2,\n",
" \"ch3\": param_ch3\n",
"}\n",
"pm = ParamsManager(out_dir)\n",
"pm.save(all_params, case_name)\n",
"# =========================================="
],
"id": "e2743613b0b64ea7",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"执行 config_chip_reg\n",
"执行了 instruction_config\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_MCU_FIXED_HEX.txt\n",
"执行 config_chip_reg\n",
"执行了 instruction_config\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_MCU_FIXED_HEX.txt\n",
"执行 config_chip_reg\n",
"执行了 instruction_config\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_MCU_FIXED_HEX.txt\n",
"执行 config_chip_reg\n",
"执行了 instruction_config\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_MCU_FIXED_HEX.txt\n"
]
}
],
"execution_count": 58
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-07-28T14:23:00.027209Z",
"start_time": "2026-07-28T14:23:00.001173Z"
}
},
"cell_type": "code",
"source": [
"#通过json还原case脚本\n",
"# ==========================================\n",
"# 1. 定义你要还原的 Case 信息\n",
"# ==========================================\n",
"base_dir = Path('D:/MyDocument/工作/Z芯片的case生成器/Chip_Case_Generator/4ch-Z_Generator/gen_cases')\n",
"folder_name = 'RAMP' # 填入你要还原的文件夹名\n",
"case_name = 'RAMP_MCU_FIXED' # 填入你要还原的 Case 名字\n",
"out_dir = base_dir / folder_name\n",
"\n",
"# ==========================================\n",
"# 2. 实例化 ParamsManager 并加载 JSON\n",
"# ==========================================\n",
"pm = ParamsManager(out_dir)\n",
"# load 方法会返回你之前保存的包含 ch0, ch1, ch2, ch3 的大字典\n",
"loaded_params = pm.load(case_name) \n",
"\n",
"# ==========================================\n",
"# 3. 还原前先清理旧的 HEX 文件(防止重复追加)\n",
"# ==========================================\n",
"hex_file = out_dir / f\"{case_name}_HEX.txt\"\n",
"if hex_file.exists():\n",
" hex_file.unlink()\n",
"\n",
"# ==========================================\n",
"# 4. 遍历 JSON 数据,依次执行 run_case 还原\n",
"# ==========================================\n",
"# 为了保证顺序,我们按 ch0 到 ch3 的顺序遍历\n",
"for ch_key in ['ch0', 'ch1', 'ch2', 'ch3']:\n",
" if ch_key in loaded_params:\n",
" ch_param = loaded_params[ch_key]\n",
" \n",
" \n",
" # 将读取到的参数直接塞进 run_case。\n",
" # 此时不需要再保存 json (save_json=False),但需要写入硬件文本 (write_hw=True)\n",
" run_case(ch_param, save_json=False, write_hw=True)\n",
"\n",
"print(\"Case 还原完成!\")"
],
"id": "4d17f59a15077bb1",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"执行 config_chip_reg\n",
"执行了 instruction_config\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_MCU_FIXED_HEX.txt\n",
"执行 config_chip_reg\n",
"执行了 instruction_config\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_MCU_FIXED_HEX.txt\n",
"执行 config_chip_reg\n",
"执行了 instruction_config\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_MCU_FIXED_HEX.txt\n",
"执行 config_chip_reg\n",
"执行了 instruction_config\n",
"生成文件路径D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_MCU_FIXED_HEX.txt\n",
"🎉 Case 还原完成!\n"
]
}
],
"execution_count": 63
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}