From d0352183e8e4230624c7ada4ef7abc401cbcbab9 Mon Sep 17 00:00:00 2001 From: yangshenbo Date: Mon, 27 Jul 2026 15:04:32 +0800 Subject: [PATCH] load json generate hex finshed --- .../AssemblyTemplateManager.cpython-311.pyc | Bin 16844 -> 16814 bytes .../__pycache__/ZChipConfig.cpython-311.pyc | Bin 18757 -> 18743 bytes .../gen_cases/General/env.json | 149 ++++++ .../gen_cases/General/env_HEX.txt | 448 ++++++++++++++++++ Z_case_Generator_V2.0/z_case_gen.ipynb | 91 ++-- 5 files changed, 644 insertions(+), 44 deletions(-) create mode 100644 Z_case_Generator_V2.0/gen_cases/General/env.json create mode 100644 Z_case_Generator_V2.0/gen_cases/General/env_HEX.txt diff --git a/Z_case_Generator_V2.0/__pycache__/AssemblyTemplateManager.cpython-311.pyc b/Z_case_Generator_V2.0/__pycache__/AssemblyTemplateManager.cpython-311.pyc index 567a4452aa7296bb0220713ff4479ae09108dce6..00c73cc5efaacf6b06a0d43d131cd95b5f6cf77b 100644 GIT binary patch delta 371 zcmX@p%($+Zk#{*SFBbz4c-%tCwu3_M7`)*|GcyP`K*@Y z#NyQFQ|3SGnDBJwip|fMOstvxH2Egi*e6VWXfMmSYw~~lO+pMDtdWc#z+{mm(99zC z$>Mg`(u+EPYzIaLhT-vcAlktO zp@HHodJVo;SoBuZUSM$tq62IY8cu@k(&UU* zLVUNxCp$8WZ&qTQ%c%Y<%f%|DC^b1XuOz-azbHEWTwdzc|;~R+3#hl(gK)iE;ZRM&9MTyj%=Gpmif9YyCuCNk)f>>Q>yWEeug?DU87knrsu(6ea3_3Z^rp zGDI<^Fhnt>Fh((_Fh#MXh)tZI!2(nxzFClQ0i)s9RG=~!s~F!(m;B_?+|<01n5Wy9 zKG{1bChA4k`sbbP&u6tHCl;qZpECbh$AqUdS8Tq)bl8c@Pm{5T38+(3Z1MuPmdTp# zvW$A0-QCp~g&6!9StUMz$s!S;iXzs@xAi0^Z**<(F8TxH=P)ub6q^AV4GedAC1yxp z;ME7B6>Jc?!R-c%T!Y&c7P$*78bGu_3_`<6u$h|dlP7toF#egm$wQ5?X!1=DZU1Ce cMxd?O$q8y7!7^Wv<$buB7&SjIU=m;(07=hkYybcN delta 359 zcmdl!iSg(pM&9MTyj%=Gkd>2?wR-s-`e8vFd(cz$Cyri&#P0*d`Zxs7#*ap~RRnd9R1IV+JcDPz!c)g4##0 K%oiN;U}FKbFlZV8 diff --git a/Z_case_Generator_V2.0/gen_cases/General/env.json b/Z_case_Generator_V2.0/gen_cases/General/env.json new file mode 100644 index 0000000..41932d8 --- /dev/null +++ b/Z_case_Generator_V2.0/gen_cases/General/env.json @@ -0,0 +1,149 @@ +{ + "chip_mode": "AWG", + "mode": "env", + "tail_en": true, + "tc_coef_set": "coef3", + "inner_sync": true, + "amp_mod_enable": true, + "freq_mod_enable": true, + "bias_enable": true, + "fcw": [ + 100, + 200, + 300, + 400 + ], + "mcu_reg_clr": true, + "pcw": [ + 0, + 30, + 45, + 90, + 120, + 135, + 150, + 180 + ], + "rz_ff_pha": 0, + "rz_fm_pha": 45, + "ff_amp": [ + 32767, + 32767, + 32767, + 32767 + ], + "fm_amp": [ + 32767, + 32767, + 32767, + 32767 + ], + "bias": [ + 1, + 2, + 3, + 4 + ], + "fm_en": false, + "instr_type": "general_send_wait", + "send_interval": [ + 100, + 150, + 200, + 250, + 300, + 350, + 400, + 450, + 500 + ], + "cycle_num": 1, + "codeword_configs": [ + { + "wave_hold": 0, + "fcw_index": 0, + "pcw_index": 0, + "code_clr": 1, + "env_index": 4 + }, + { + "wave_hold": 0, + "fcw_index": 0, + "pcw_index": 0, + "code_clr": 1, + "env_index": 5 + }, + { + "wave_hold": 0, + "fcw_index": 0, + "pcw_index": 0, + "code_clr": 1, + "env_index": 6 + }, + { + "wave_hold": 0, + "fcw_index": 0, + "pcw_index": 0, + "code_clr": 1, + "env_index": 7 + }, + { + "wave_hold": 0, + "fcw_index": 0, + "pcw_index": 0, + "code_clr": 1, + "env_index": 8 + } + ], + "sweep_config": { + "sweep_num": 0, + "offsets": [ + 120, + 64 + ], + "steps": [ + 3000, + 143165576 + ] + }, + "envelope_configs": [ + { + "envelope_type": "rect_hold", + "amp": 32767 + }, + { + "envelope_type": "flattop_hold", + "amp": 32767, + "edge_time": 3.5, + "wave_time": 30 + }, + { + "envelope_type": "acz", + "amp": 32767, + "wave_time": 48 + }, + { + "envelope_type": "accz", + "wave_time": 48 + }, + { + "envelope_type": "cosine", + "amp": 32767, + "wave_time": 300 + }, + { + "envelope_type": "rect", + "amp": 32767, + "wave_time": 12 + }, + { + "envelope_type": "flattop", + "amp": 32767, + "edge_time": 2, + "wave_time": 22 + } + ], + "FolderName": "gen_cases\\General", + "CaseName": "env", + "config_file": "gen_cases\\General\\env_HEX.txt" +} \ No newline at end of file diff --git a/Z_case_Generator_V2.0/gen_cases/General/env_HEX.txt b/Z_case_Generator_V2.0/gen_cases/General/env_HEX.txt new file mode 100644 index 0000000..0970576 --- /dev/null +++ b/Z_case_Generator_V2.0/gen_cases/General/env_HEX.txt @@ -0,0 +1,448 @@ +00301000 +00100080 +0347a17d +0124e4fe +00068de1 +1fab1c0c +00000000 +00000000 +00000000 +00000000 +00000000 +019010e7 +ffffff71 +00000000 +00000000 +00000000 +00000000 +00000000 +7fd3383d +7fef7953 +7ff92a57 +7d5c6533 +80000000 +80000000 +80000000 +80000000 +00000000 +ffdb1444 +ffea27a5 +00000000 +00000000 +00000000 +00000000 +00000000 + +0030108c +00100004 +00000001 + +0030108c +00100004 +00000002 + +0030108c +00100004 +00000004 + +0030108c +00100004 +00000008 + +0030108c +00100004 +00000010 + +0030108c +00100004 +00000020 + +0030108c +00100004 +00000040 + +0030108c +00100004 +00000080 + +00300108 +00100004 +00000000 + +00300104 +00100004 +00000004 + +00200040 +00100058 +08888888 +11111111 +19999999 +22222222 +80000000 +00000000 +15550000 +1fff0000 +3fff0000 +55550000 +5fff0000 +6aaa0000 +7fff0000 +00000000 +7fff7fff +7fff7fff +7fff7fff +7fff7fff +00010000 +00020000 +00030000 +00040000 + +002000b4 +00100004 +00000000 + +00400000 +00100024 +00000004 +00080004 +00100008 +00200008 +00300030 +00900030 +00f0012c +0348000c +03600018 + +00500000 +00100390 +7fff7fff +7fff7fff +00000000 +00000000 +0a16000f +7ecf5730 +7ffe7ffe +7fff7ffe +7ffe7fff +7ffe7ffe +57307ecf +000f0a16 +496b0000 +6aa260df +73d97031 +785e7671 +7b0b79db +7cc77c02 +7dfa7d70 +7ed17e6e +7f647f20 +7fc37f98 +7ff57fe0 +7fff7fff +7fe17ff6 +7f9b7fc6 +7f2a7f6c +7e867ee3 +7da37e21 +7c6b7d15 +7ab87ba3 +78347995 +7446767c +6d347154 +5c2466f9 +00004322 +09f90000 +1d4b13cb +2ecd2657 +3d8e3692 +48f643b2 +50d94d57 +55755389 +576256b5 +57715797 +568c570f +55845601 +54f55527 +552754f5 +56015584 +570f568c +57975771 +56b55762 +53895575 +4d5750d9 +43b248f6 +36923d8e +26572ecd +13cb1d4b +000009f9 +00030000 +0020000e +00590039 +00af0081 +012200e5 +01b00166 +025b0202 +032102bb +0403038f +0500047e +06170588 +074806ac +089207ea +09f60941 +0b720ab1 +0d050c38 +0eaf0dd7 +10700f8d +12451158 +14301338 +162e152c +183e1734 +1a61194e +1c951b79 +1ed81db4 +212a1fff +238a2259 +25f724bf +28702732 +2af329b0 +2d802c38 +30152ec9 +32b13162 +35533401 +37fa36a6 +3aa4394e +3d513bfa +3fff3ea8 +42ad4156 +455a4404 +480446b0 +4aab4958 +4d4d4bfd +4fe94e9c +527e5135 +550b53c6 +578e564e +5a0758cc +5c745b3f +5ed45da5 +61265fff +6369624a +659d6485 +67c066b0 +69d068ca +6bce6ad2 +6db96cc6 +6f8e6ea6 +714f7071 +72f97227 +748c73c6 +7608754d +776c76bd +78b67814 +79e77952 +7afe7a76 +7bfb7b80 +7cdd7c6f +7da37d43 +7e4e7dfc +7edc7e98 +7f4f7f19 +7fa57f7d +7fde7fc5 +7ffb7ff0 +7ffb7fff +7fde7ff0 +7fa57fc5 +7f4f7f7d +7edc7f19 +7e4e7e98 +7da37dfc +7cdd7d43 +7bfb7c6f +7afe7b80 +79e77a76 +78b67952 +776c7814 +760876bd +748c754d +72f973c6 +714f7227 +6f8e7071 +6db96ea6 +6bce6cc6 +69d06ad2 +67c068ca +659d66b0 +63696485 +6126624a +5ed45fff +5c745da5 +5a075b3f +578e58cc +550b564e +527e53c6 +4fe95135 +4d4d4e9c +4aab4bfd +48044958 +455a46b0 +42ad4404 +3fff4156 +3d513ea8 +3aa43bfa +37fa394e +355336a6 +32b13401 +30153162 +2d802ec9 +2af32c38 +287029b0 +25f72732 +238a24bf +212a2259 +1ed81fff +1c951db4 +1a611b79 +183e194e +162e1734 +1430152c +12451338 +10701158 +0eaf0f8d +0d050dd7 +0b720c38 +09f60ab1 +08920941 +074807ea +061706ac +05000588 +0403047e +0321038f +025b02bb +01b00202 +01220166 +00af00e5 +00590081 +00200039 +0003000e +7fff7fff +7fff7fff +7fff7fff +7fff7fff +7fff7fff +7fff7fff +3fff0000 +7fff7ffe +7fff7fff +7fff7fff +7fff7fff +7fff7fff +7fff7fff +7fff7fff +7fff7fff +7ffe7fff +00003fff +00000000 + +002000dc +00100048 +00000000 +00000001 +00000005 +00000002 +00044000 +00000064 +00045000 +00000096 +00046000 +000000c8 +00047000 +000000fa +00048000 +0000012c +00000078 +00000040 +00000bb8 +08888888 + +00100000 +001000ec +001000b7 +00200137 +00400193 +01600213 +04008293 +04010313 +fff20213 +0002af83 +01f32023 +003282b3 +00330333 +fe0216e3 +0b40af83 +0bf12a23 +0dc0a503 +0e00a583 +0e40a603 +0e80a883 +0ec08693 +00361713 +00e68933 +00289713 +00e90a33 +00058e13 +fffe0e13 +00060d13 +00068c93 +fffd0d13 +000caf83 +004caf03 +008c8c93 +000fa00b +000d1463 +00000663 +fe8f000b +fe0d10e3 +fdcf000b +fc0e16e3 +04050863 +fff50513 +0640000b +fa088ce3 +00088213 +00090a93 +000a0b93 +fff20213 +000aae83 +000bac03 +01d082b3 +0002af83 +018f8fb3 +01f2a023 +01d10333 +01f32023 +004a8a93 +004b8b93 +fc021ae3 +f6000ce3 +0000002b + +00000044 +00100004 +00030001 + +80000044 +00100050 + +81900000 +00102000 + +00500000 +00100004 +00000000 + +00100000 +00100004 +0000002b + diff --git a/Z_case_Generator_V2.0/z_case_gen.ipynb b/Z_case_Generator_V2.0/z_case_gen.ipynb index 77e3bd4..bc0a0d3 100644 --- a/Z_case_Generator_V2.0/z_case_gen.ipynb +++ b/Z_case_Generator_V2.0/z_case_gen.ipynb @@ -6,8 +6,8 @@ "metadata": { "collapsed": true, "ExecuteTime": { - "end_time": "2026-07-26T04:08:12.474449Z", - "start_time": "2026-07-26T04:08:12.362592Z" + "end_time": "2026-07-27T07:02:43.526779Z", + "start_time": "2026-07-27T07:02:40.289259Z" } }, "source": [ @@ -78,64 +78,58 @@ "\n", "from pathlib import Path\n", "\n", - "def run_case(params, base_dir=\"..\", save_json=True, write_hw=True):\n", + "def run_case(params, base_dir=\"gen_cases\", save_json=True, write_hw=True, output_dir=None):\n", " \"\"\"\n", " 通用执行函数:自动判断模式并按需调用 configure_chip_output, env_config, instruction_config\n", + " :param output_dir: 可选,自定义输出文件和 JSON 保存的目录路径\n", " \"\"\"\n", - " folder_name = params.get('FolderName', 'RAMP')\n", + " # 1. 确定最终输出目录\n", + " if output_dir is not None:\n", + " out_dir = Path(output_dir)\n", + " else:\n", + " folder_name = params.get('FolderName', 'RAMP')\n", + " out_dir = Path(base_dir) / folder_name\n", + " \n", " case_name = params['CaseName']\n", - " \n", - " # 1. 统一构建输出路径 (指向上一层目录)\n", - " out_dir = Path(base_dir) / folder_name\n", " config_file_path = out_dir / f\"{case_name}_HEX.txt\"\n", " \n", + " # 更新 params 中的路径信息\n", " params['FolderName'] = str(out_dir)\n", " params['config_file'] = str(config_file_path)\n", " \n", " # 2. 自动创建目录并初始化保存器\n", " pm = ParamsManager(out_dir)\n", - " \n", - " # 7. 保存最终的 JSON 配置文件 (此时包含了 env_config 补充完整的数据)\n", " if save_json:\n", " pm.save(params, case_name)\n", " \n", - " # 3. 基础芯片输出配置 (所有用例默认都会执行)\n", + " # 3. 基础芯片输出配置\n", " config_chip_reg(mk, **params)\n", - " print(\"执行config_chip_reg\")\n", + " print(\"执行 config_chip_reg\")\n", " \n", - " # 4. 自动识别并执行包络配置 (当 params 包含 envelope_configs 或 env_amp 时自动触发)\n", + " # 4. 自动识别并执行包络配置\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", + " print(\"执行了 env_config\")\n", " \n", - " # 5. 自动识别并执行指令配置 (当 params 包含 instr_type 时自动触发)\n", + " # 5. 自动识别并执行指令配置\n", " if 'instr_type' in params:\n", " instruction_config(mk, mk_instr, **params)\n", - " print(\"执行了instruction_config\")\n", + " print(\"执行了 instruction_config\")\n", " \n", - " # 6. 基础硬件寄存器下发\n", + " \n", + " # 7. 基础硬件寄存器下发\n", " if write_hw:\n", " mk.rw_once('w', addr_base['ENVM0_BASE'], 0, params['config_file'])\n", " ramp_ctrl_val = params.pop('ramp_ctrl', None)\n", " if ramp_ctrl_val != 'MCU':\n", " mk.rw_once('w', addr_base['ITCM0_BASE'], '0x2B', params['config_file'])\n", "\n", - " \n", - " print(f\" 生成:{config_file_path.resolve()}\")\n", + " print(f\"生成文件路径:{config_file_path.resolve()}\")\n", " return None" ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The autoreload extension is already loaded. To reload it, use:\n", - " %reload_ext autoreload\n" - ] - } - ], - "execution_count": 13 + "outputs": [], + "execution_count": 1 }, { "metadata": { @@ -147,13 +141,22 @@ "cell_type": "code", "source": [ "# load params\n", - "FolderName = 'D:/yangshenbo/workspace/temporary/case'\n", - "CaseName = 'AWG_ENV'\n", - "pm = ParamsManager(FolderName)\n", - "params = pm.load(CaseName)\n", - "configure_chip_output(mk, **params)\n", - "env_config(mk, **params)\n", - "instruction_config(mk, mk_instr, **params)" + "# 1. 指定要加载的 JSON 文件完整路径\n", + "json_file_path = r'D:\\MyDocument\\工作\\Z芯片的case生成器\\四通道\\4ChannelZ_case_Generator\\gen_cases\\General\\env.json'\n", + "\n", + "json_path = Path(json_file_path)\n", + "load_dir = json_path.parent # 获取目录\n", + "case_name = json_path.stem # 文件名跟随.json前面的\n", + "\n", + "# 2. 加载配置\n", + "pm_load = ParamsManager(load_dir)\n", + "params = pm_load.load(case_name)\n", + "\n", + "# 3. 自定义你的新输出路径 \n", + "custom_output_dir = r'D:\\MyDocument\\工作\\Z芯片的case生成器\\四通道\\4ChannelZ_case_Generator\\gen_cases\\General\\Custom_Output'\n", + "\n", + "# 4. 运行 run_case,传入自定义输出路径\n", + "run_case(params, output_dir=custom_output_dir, save_json=True)" ], "id": "dd0c2d05a0afc9b6", "outputs": [], @@ -162,8 +165,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2026-07-26T04:12:10.822661Z", - "start_time": "2026-07-26T04:12:10.696089Z" + "end_time": "2026-07-27T07:03:03.234232Z", + "start_time": "2026-07-27T07:03:03.117436Z" } }, "cell_type": "code", @@ -204,7 +207,7 @@ " {'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", + " '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", @@ -227,14 +230,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "执行config_chip_reg\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\General\\env_HEX.txt\n" + "执行 config_chip_reg\n", + "执行了 env_config\n", + "执行了 instruction_config\n", + "生成文件路径:D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\General\\env_HEX.txt\n" ] } ], - "execution_count": 16 + "execution_count": 2 }, { "metadata": {