diff --git a/4ch-Z_Generator/.idea/.name b/4ch-Z_Generator/.idea/.name index c38c217..759fd84 100644 --- a/4ch-Z_Generator/.idea/.name +++ b/4ch-Z_Generator/.idea/.name @@ -1 +1 @@ -FourChZEnvelopeGenerator.py \ No newline at end of file +FourChZCaseGenerator.ipynb \ No newline at end of file diff --git a/4ch-Z_Generator/FourChZCaseGenerator.ipynb b/4ch-Z_Generator/FourChZCaseGenerator.ipynb index bb144c2..7403641 100644 --- a/4ch-Z_Generator/FourChZCaseGenerator.ipynb +++ b/4ch-Z_Generator/FourChZCaseGenerator.ipynb @@ -2,14 +2,25 @@ "cells": [ { "cell_type": "code", + "execution_count": 44, "id": "initial_id", "metadata": { - "collapsed": true, "ExecuteTime": { "end_time": "2026-07-29T03:01:52.429375Z", "start_time": "2026-07-29T03:01:52.309686Z" - } + }, + "collapsed": true }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The autoreload extension is already loaded. To reload it, use:\n", + " %reload_ext autoreload\n" + ] + } + ], "source": [ "%load_ext autoreload\n", "%autoreload 2\n", @@ -29,12 +40,13 @@ "mk = make_case()\n", "mk_instr = make_inst()\n", "from pathlib import Path\n", + "# 确定最终输出目录,每次使用前必须明确目录!\n", + "base_dir = Path('D:\\\\recent_work\\\\四通道造case\\\\4ch-Z_Generator\\\\gen_cases') # 在这边选择case目录所在位置\n", + "\n", "def run_case(params):\n", " \"\"\"\n", " 通用执行函数:自动判断模式并按需调用 configure_chip_output, env_config, instruction_config\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", @@ -61,47 +73,62 @@ " \n", " \n", " # 保证存储器不用的时候不为空, 防止报错\n", - " channel = params['channel']\n", - " envm_base =addr_base['ENVM0_BASE'] + channel* 0x600000\n", - " itcm_base = addr_base['ITCM0_BASE'] + channel* 0x600000\n", - " envelope_configs = params.get('envelope_configs', None)\n", - " if envelope_configs is None:\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", + " channel = params['channel']\n", + " envm_base =addr_base['ENVM0_BASE'] + channel* 0x600000\n", + " itcm_base = addr_base['ITCM0_BASE'] + channel* 0x600000\n", + " envelope_configs = params.get('envelope_configs', None)\n", + " if envelope_configs is None:\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": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The autoreload extension is already loaded. To reload it, use:\n", - " %reload_ext autoreload\n" - ] - } - ], - "execution_count": 7 + ] }, { + "cell_type": "code", + "execution_count": 45, + "id": "3e79e12a64f2769e", "metadata": { "ExecuteTime": { "end_time": "2026-07-29T03:02:19.226590Z", "start_time": "2026-07-29T03:02:19.100355Z" } }, - "cell_type": "code", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "执行 config_chip_reg\n", + "执行了 env_config\n", + "执行了 instruction_config\n", + "生成文件路径:D:\\recent_work\\四通道造case\\4ch-Z_Generator\\gen_cases\\General\\TC_AWG_ENV_TYPE_9_HEX.txt\n", + "执行 config_chip_reg\n", + "执行了 env_config\n", + "执行了 instruction_config\n", + "生成文件路径:D:\\recent_work\\四通道造case\\4ch-Z_Generator\\gen_cases\\General\\TC_AWG_ENV_TYPE_9_HEX.txt\n", + "执行 config_chip_reg\n", + "执行了 env_config\n", + "执行了 instruction_config\n", + "生成文件路径:D:\\recent_work\\四通道造case\\4ch-Z_Generator\\gen_cases\\General\\TC_AWG_ENV_TYPE_9_HEX.txt\n", + "执行 config_chip_reg\n", + "执行了 env_config\n", + "执行了 instruction_config\n", + "生成文件路径:D:\\recent_work\\四通道造case\\4ch-Z_Generator\\gen_cases\\General\\TC_AWG_ENV_TYPE_9_HEX.txt\n" + ] + } + ], "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", + " 'mode':'env', #可选nco nco_fm env mod四种模式\n", " 'tail_en': False, #拖尾矫正开关\n", " 'tc_coef_set': 'coef3', #拖尾矫正打开生效\n", " 'inner_sync': False, #内部触发,应该是软触发,写一个寄存器,就能触发\n", @@ -109,7 +136,7 @@ " 'freq_mod_enable': True, #nco的开关\n", " 'bias_enable': True, #必开的开关,AWG模式下,偏置必须打开,否则AWG输出保持为0.\n", " \n", - " 'fcw': [100, 200, 300, 400], # MHz\n", + " 'fcw': [500, 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", @@ -122,10 +149,10 @@ " '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': 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", @@ -147,11 +174,11 @@ " {'envelope_type': 'flattop', 'amp': 32767, 'edge_time': 2, 'wave_time': 22},\n", " ],\n", " 'FolderName': 'General',\n", - " 'CaseName': 'env2',\n", + " 'CaseName': 'TC_AWG_ENV_TYPE_9',\n", "}\n", "# ==========================================\n", "#在运行前,先删除旧的 HEX 文件,防止重复运行追加到case文件中\n", - "base_dir = Path('D:/MyDocument/工作/Z芯片的case生成器/Chip_Case_Generator/4ch-Z_Generator/gen_cases')\n", + "#base_dir = Path('D:\\\\recent_work\\\\四通道造case\\\\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", @@ -163,19 +190,19 @@ "#通道1\n", "param_ch1 = param_ch0.copy()\n", "param_ch1['channel'] = 1\n", - "param_ch1['fcw'] = [200, 200, 300, 400]\n", + "param_ch1['fcw'] = [600, 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", + "param_ch2['fcw'] = [700, 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", + "param_ch3['fcw'] = [800, 200, 300, 400]\n", "run_case(param_ch3)\n", "\n", "# ==========================================\n", @@ -192,42 +219,34 @@ "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": 10 + ] }, { + "cell_type": "code", + "execution_count": 46, + "id": "1f6f70a26d5da7f8", "metadata": { "ExecuteTime": { "end_time": "2026-07-29T03:17:00.368454Z", "start_time": "2026-07-29T03:17:00.270114Z" } }, - "cell_type": "code", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "执行 config_chip_reg\n", + "生成文件路径:D:\\recent_work\\四通道造case\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_SPI_H512_STEP64_HEX.txt\n", + "执行 config_chip_reg\n", + "生成文件路径:D:\\recent_work\\四通道造case\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_SPI_H512_STEP64_HEX.txt\n", + "执行 config_chip_reg\n", + "生成文件路径:D:\\recent_work\\四通道造case\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_SPI_H512_STEP64_HEX.txt\n", + "执行 config_chip_reg\n", + "生成文件路径:D:\\recent_work\\四通道造case\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_SPI_H512_STEP64_HEX.txt\n" + ] + } + ], "source": [ "# RAMP 通用模板1\n", "#RAMP SPI控制\n", @@ -235,16 +254,16 @@ " 'channel' : 0,\n", " 'chip_mode': 'RAMP',\n", " 'ramp_ctrl':'SPI',\n", - " 'fixed_enable': True, #是固定值还是斜坡模式\n", + " 'fixed_enable': False, #是固定值还是斜坡模式\n", " 'fixed_value': 22767, #固定值模式生效\n", - " 'height': 512, 'step_time': 34 , #斜坡模式生效 ,step_time就是台阶宽度\n", + " 'height': 512, 'step_time': 64 , #斜坡模式生效 ,step_time就是台阶宽度\n", " \n", " 'FolderName': 'RAMP',\n", - " 'CaseName': f\"RAMP_SPI\"\n", + " 'CaseName': f\"RAMP_SPI_H512_STEP64\"\n", "}\n", "# ==========================================\n", "#在运行前,先删除旧的 HEX 文件,防止重复运行追加到case文件中\n", - "base_dir = Path('D:/MyDocument/工作/Z芯片的case生成器/Chip_Case_Generator/4ch-Z_Generator/gen_cases')\n", + "#base_dir = Path('D:\\\\recent_work\\\\四通道造case\\\\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", @@ -280,34 +299,38 @@ "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": 11 + ] }, { + "cell_type": "code", + "execution_count": 47, + "id": "84e2c612b0a8f7ab", "metadata": { "ExecuteTime": { "end_time": "2026-07-29T03:17:02.737072Z", "start_time": "2026-07-29T03:17:02.628758Z" } }, - "cell_type": "code", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "执行 config_chip_reg\n", + "执行了 instruction_config\n", + "生成文件路径:D:\\recent_work\\四通道造case\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_MCU_STEP_H128_256_512_1024_STEP64_HEX.txt\n", + "执行 config_chip_reg\n", + "执行了 instruction_config\n", + "生成文件路径:D:\\recent_work\\四通道造case\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_MCU_STEP_H128_256_512_1024_STEP64_HEX.txt\n", + "执行 config_chip_reg\n", + "执行了 instruction_config\n", + "生成文件路径:D:\\recent_work\\四通道造case\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_MCU_STEP_H128_256_512_1024_STEP64_HEX.txt\n", + "执行 config_chip_reg\n", + "执行了 instruction_config\n", + "生成文件路径:D:\\recent_work\\四通道造case\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_MCU_STEP_H128_256_512_1024_STEP64_HEX.txt\n" + ] + } + ], "source": [ "#RAMP MCU控制时,斜坡模式\n", "param_ch0 = {\n", @@ -315,18 +338,23 @@ " 'chip_mode': 'RAMP',\n", " 'ramp_ctrl':'MCU',\n", " #是固定值还是斜坡模式,如过是斜坡模式,则要指令选ramp_step\n", - " 'instr_type': 'ramp_step', #可选ramp_step或ramp_fixed. mcu执行不同指令操作模板,实现台阶或斜坡这两种模式\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", + " 'param_num' :4, # ramp_step模式生效,参数个数\n", + " 'height': [128,256,512,1024], #ramp_step模式生效,台阶高度 \n", + " 'step_time': [64,64,64,64], #ramp_step模式生效,台阶宽度 \n", + "\n", + " 'config_param_num' : 4, #ramp_fixed固定值模式生效,固定值参数个数,和列表个数一致\n", + " 'fixed_value':[10000,20000,30000,40000], #ramp_fixed固定值模式生效,固定值\n", + " 'wait_clk' :[300, 300, 300, 300], #ramp_fixed固定值模式生效,等待时钟数\n", " \n", " 'FolderName': 'RAMP',\n", - " 'CaseName': f\"RAMP_MCU_STEP\"\n", + " 'CaseName': f\"RAMP_MCU_STEP_H128_256_512_1024_STEP64\"\n", "}\n", "# ==========================================\n", "#在运行前,先删除旧的 HEX 文件,防止重复运行追加到case文件中\n", - "base_dir = Path('D:/MyDocument/工作/Z芯片的case生成器/Chip_Case_Generator/4ch-Z_Generator/gen_cases')\n", + "#base_dir = Path('D:\\\\recent_work\\\\四通道造case\\\\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", @@ -363,133 +391,51 @@ "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生成器\\Chip_Case_Generator\\4ch-Z_Generator\\gen_cases\\RAMP\\RAMP_MCU_STEP_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_STEP_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_STEP_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_STEP_HEX.txt\n" - ] - } - ], - "execution_count": 12 + ] }, { - "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<\u001b[1;34m()\u001b[0m\n\u001b[0;32m 9\u001b[0m \u001b[38;5;66;03m# 2. 加载配置\u001b[39;00m\n\u001b[0;32m 10\u001b[0m pm_load \u001b[38;5;241m=\u001b[39m ParamsManager(load_dir)\n\u001b[1;32m---> 11\u001b[0m params \u001b[38;5;241m=\u001b[39m \u001b[43mpm_load\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mload\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcase_name\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 13\u001b[0m \u001b[38;5;66;03m# 3. 自定义你的新输出路径 \u001b[39;00m\n\u001b[0;32m 14\u001b[0m custom_output_dir \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mr\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mD:\u001b[39m\u001b[38;5;124m\\\u001b[39m\u001b[38;5;124mMyDocument\u001b[39m\u001b[38;5;124m\\\u001b[39m\u001b[38;5;124m工作\u001b[39m\u001b[38;5;124m\\\u001b[39m\u001b[38;5;124mZ芯片的case生成器\u001b[39m\u001b[38;5;124m\\\u001b[39m\u001b[38;5;124mChip_Case_Generator\u001b[39m\u001b[38;5;124m\\\u001b[39m\u001b[38;5;124mZ_case_Generator_V2.0\u001b[39m\u001b[38;5;124m\\\u001b[39m\u001b[38;5;124mgen_cases\u001b[39m\u001b[38;5;124m\\\u001b[39m\u001b[38;5;124mTC_FFNCO_FREQ_SCAN\u001b[39m\u001b[38;5;124m'\u001b[39m\n", + "File \u001b[1;32md:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\ParamsManager.py:30\u001b[0m, in \u001b[0;36mParamsManager.load\u001b[1;34m(self, filename)\u001b[0m\n\u001b[0;32m 26\u001b[0m filename \u001b[38;5;241m=\u001b[39m filename \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m.json\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m 28\u001b[0m filepath \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparams_dir, filename)\n\u001b[1;32m---> 30\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mfilepath\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mr\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mutf-8\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m f:\n\u001b[0;32m 31\u001b[0m params \u001b[38;5;241m=\u001b[39m json\u001b[38;5;241m.\u001b[39mload(f)\n\u001b[0;32m 32\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m params\n", + "\u001b[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'D:\\\\MyDocument\\\\工作\\\\Z芯片的case生成器\\\\Chip_Case_Generator\\\\Z_case_Generator_V2.0\\\\gen_cases\\\\TC_FFNCO_FREQ_SCAN\\\\tc_ffnco_freq_scan100Mhz.json'" + ] + } + ], "source": [ "# load params\n", "# 1. 指定要加载的 JSON 文件完整路径\n", - "json_file_path = r'D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\General\\env.json'\n", + "json_file_path = r'D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_FFNCO_FREQ_SCAN\\tc_ffnco_freq_scan100Mhz.json'\n", "\n", "json_path = Path(json_file_path)\n", "load_dir = json_path.parent # 获取目录\n", @@ -153,12 +169,22 @@ "params = pm_load.load(case_name)\n", "\n", "# 3. 自定义你的新输出路径 \n", - "custom_output_dir = r'D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\General\\Custom_Output'\n", + "custom_output_dir = r'D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_FFNCO_FREQ_SCAN'\n", "\n", "# 4. 运行 run_case,传入自定义输出路径\n", "run_case(params, output_dir=custom_output_dir, save_json=True)" - ], - "id": "dd0c2d05a0afc9b6", + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "47c22172d77fc331", + "metadata": { + "ExecuteTime": { + "end_time": "2026-07-28T02:13:35.712324Z", + "start_time": "2026-07-28T02:13:35.563143Z" + } + }, "outputs": [ { "name": "stdout", @@ -167,28 +193,18 @@ "执行 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\\Custom_Output\\env_HEX.txt\n" + "生成文件路径:D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\General\\tc_general_awg_HEX.txt\n" ] } ], - "execution_count": 3 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2026-07-28T02:13:35.712324Z", - "start_time": "2026-07-28T02:13:35.563143Z" - } - }, - "cell_type": "code", "source": [ "#general_send_wait这个汇编模板的 SEND_WAIT效果示例。\n", "# AWG通用模板\n", "run_case({\n", " 'chip_mode':'AWG', #分为AWG和RAMP模式\n", - " 'mode':'nco', #可选nco nco_fm env mod四种模式\n", + " 'mode':'mod', #可选nco nco_fm env mod四种模式\n", " 'tail_en': False, #拖尾矫正开关\n", - " 'tc_coef_set': 'coef3', #拖尾矫正打开生效\n", + " 'tc_coef_set': 'coef1', #拖尾矫正打开生效\n", " 'inner_sync': True, #内部触发,应该是软触发,写一个寄存器,就能触发\n", " 'amp_mod_enable': True, #调幅的开关,mod调制模式下起作用。\n", " 'freq_mod_enable': True, #nco的开关\n", @@ -202,20 +218,20 @@ " '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", + " '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': 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", + " # {'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", @@ -232,32 +248,36 @@ " {'envelope_type': 'flattop', 'amp': 32767, 'edge_time': 2, 'wave_time': 22},\n", " ],\n", " 'FolderName': 'General',\n", - " 'CaseName': 'env',\n", + " 'CaseName': 'tc_general_awg',\n", "})" - ], - "id": "47c22172d77fc331", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "执行 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": 3 + ] }, { + "cell_type": "code", + "execution_count": 5, + "id": "4f0fa3c90ad0d570", "metadata": { "ExecuteTime": { "end_time": "2026-07-25T15:37:57.894061Z", "start_time": "2026-07-25T15:37:57.737300Z" } }, - "cell_type": "code", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "执行config_chip_reg\n", + " 生成:D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\RAMP\\RAMP_SPI_HEX.txt\n", + "执行config_chip_reg\n", + "执行了instruction_config\n", + " 生成:D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\RAMP\\RAMP_MCU_STEP_HEX.txt\n", + "执行config_chip_reg\n", + "执行了instruction_config\n", + " 生成:D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\RAMP\\RAMP_MCU_FIXED_HEX.txt\n" + ] + } + ], "source": [ "# RAMP 通用模板\n", "#RAMP SPI控制\n", @@ -300,857 +320,138 @@ " 'FolderName': 'RAMP',\n", " 'CaseName': f\"RAMP_MCU_FIXED\"\n", "})" - ], - "id": "4f0fa3c90ad0d570", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "执行config_chip_reg\n", - " 生成:D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\RAMP\\RAMP_SPI_HEX.txt\n", - "执行config_chip_reg\n", - "执行了instruction_config\n", - " 生成:D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\RAMP\\RAMP_MCU_STEP_HEX.txt\n", - "执行config_chip_reg\n", - "执行了instruction_config\n", - " 生成:D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\RAMP\\RAMP_MCU_FIXED_HEX.txt\n" - ] - } - ], - "execution_count": 5 + ] }, { + "cell_type": "code", + "execution_count": 17, + "id": "3895007623de81e8", "metadata": { "ExecuteTime": { "end_time": "2026-07-20T04:45:21.092665Z", "start_time": "2026-07-20T04:45:21.019712Z" } }, - "cell_type": "code", - "source": [ - "# ramp_spi_fixed_scan\n", - "pm_load = ParamsManager('../RAMP')\n", - "\n", - "for ramp_step in [128]:\n", - " base_params = pm_load.load('RAMP_SPI')\n", - " \n", - " # 在基础字典上更新并直接传入 run_case\n", - " base_params.update({\n", - " 'height': ramp_step,\n", - " 'step_time': 250000000,\n", - " 'FolderName': 'RAMP',\n", - " 'CaseName': f\"RAMP_SPI_H{ramp_step}_W250000000\"\n", - " })\n", - " \n", - " run_case(base_params)" - ], - "id": "3895007623de81e8", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "执行了configure_chip_output\n", - " 执行完成: RAMP_SPI_H128_W250000000,生成:..\\RAMP\\RAMP_SPI_H128_W250000000_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\\TC_FFNCO_PHA_SCAN\\tc_ffnco_pha_scan_0deg_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\\TC_FFNCO_PHA_SCAN\\tc_ffnco_pha_scan_15deg_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\\TC_FFNCO_PHA_SCAN\\tc_ffnco_pha_scan_30deg_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\\TC_FFNCO_PHA_SCAN\\tc_ffnco_pha_scan_45deg_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\\TC_FFNCO_PHA_SCAN\\tc_ffnco_pha_scan_60deg_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\\TC_FFNCO_PHA_SCAN\\tc_ffnco_pha_scan_75deg_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\\TC_FFNCO_PHA_SCAN\\tc_ffnco_pha_scan_90deg_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\\TC_FFNCO_PHA_SCAN\\tc_ffnco_pha_scan_105deg_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\\TC_FFNCO_PHA_SCAN\\tc_ffnco_pha_scan_120deg_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\\TC_FFNCO_PHA_SCAN\\tc_ffnco_pha_scan_135deg_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\\TC_FFNCO_PHA_SCAN\\tc_ffnco_pha_scan_150deg_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\\TC_FFNCO_PHA_SCAN\\tc_ffnco_pha_scan_165deg_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\\TC_FFNCO_PHA_SCAN\\tc_ffnco_pha_scan_180deg_HEX.txt\n" ] } ], - "execution_count": 86 - }, - { - "metadata": {}, - "cell_type": "code", - "outputs": [], - "execution_count": null, - "source": "", - "id": "63c3a26c03f0553a" - }, - { - "metadata": {}, - "cell_type": "markdown", "source": [ - "### AWG的NCO直通模式 (`AWG_NCO` / `AWG_FM_NCO`)\n", + "# ========== 扫频参数配置(你只需要改这里) ==========\n", + "var_start = 0 # 起始频率 (MHz)\n", + "var_stop = 180 # 终止频率 (MHz)\n", + "var_step = 15 # 步进 (MHz)\n", + "# ===================================================\n", "\n", - "这两个模式用于输出基础的单音/双音射频波形,不包含复杂的包络调制,且不经过拖尾矫正电路。 \n", + "# 生成频率列表\n", + "var_list = list(range(var_start, var_stop + 1, var_step))\n", + "# 例如: [100, 150, 200, 250, 300, 350, 400, 450, 500]\n", "\n", - "| **核心配置参数** | **参数类型/示例** | **参数详细含义及作用** |\n", - "| ---------------------- | ------------------------------------- | ------------------------------------------------------------ |\n", - "| **`instr_type`** | 字符串 (`\"awg_nco\"` / `\"awg_fm_nco\"`) | **指令类型**:指示 Python 脚本中instruction_config函数调用对应的汇编模板,生成汇编指令,从而进行单音/双音模式中MCU把DCTM数据搬移到mcu_regfile中的操作。 |\n", - "| **`inner_sync`** | 布尔值 (`true`/`false`) | **内部同步开关**:控制芯片内部的同步触发信号是否开启。 |\n", - "| **`fcw`** | 数组 (如 `[100, 200, 300]`) | **频率控制字列表**:填写查找表需要的所有频率控制字,**单位直接为 MHz**,工程会自动转为硬件码值。 |\n", - "| **`pcw`** | 数组 (如 `[0, 30, 45, 90]`) | **相位控制字列表**:填写查找表的相位控制字,**单位直接为度 (°)**。 |\n", - "| **`rz_pha`** | 整数 (如 `0`) | **附加相位**:指示芯片基准参考相位,实际相位=查找表中的相位叠加这个附加相位。 |\n", - "| **`mcu_reg_clr`** | 布尔值 (`true`/`false`) | **mcu_regfile里面0x50NCO复位寄存器**:MCU参数。高位写1,写入DTCM,再由mcu搬到对应mcu_regfile中0x50位置,可以实现NCO复位。效果和 code_clr一样。 |\n", - "| **`code_clr`** | 数组 (如 `[true, true]`) | **调制NCO清零位:**映射到了芯片控制字(Code Word)的**第 18 位(Bit 18)**,可以让NCO复位。效果和 mcu_reg_clr一样。 |\n", - "| **`envelope_configs`** | 结构体数组 | **基础包络定义**:通常在此类模式下仅填入默认的静态直通包络(如 `\"envelope_type\": \"rect_hold\"`)来保持信号恒定输出。 |\n", - "| **`codeword_configs`** | 结构体数组 | **码字列表**:MCU参数。MCU使用码字灵活控制和切换波形。一个码字对应一个波形,可以灵活切换。 |\n", - "\n", - "### " - ], - "id": "aab357d9324a094" - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2026-07-20T09:57:54.076147Z", - "start_time": "2026-07-20T09:57:53.996316Z" - } - }, - "cell_type": "code", - "source": [ - "# AWG_NCO\n", - "run_case({\n", - " 'chip_mode': 'AWG_NCO',\n", - " 'instr_type': 'awg_nco',\n", - " 'fcw': [100, 200, 300, 400], # MHz\n", - " 'pcw': [0, 30, 45, 90, 120, 135, 150, 180], # Deg \n", - " 'rz_pha': 0,\n", - " 'mcu_reg_clr': True,\n", - " 'codeword_configs': [\n", - " {'fcw_index': 0, 'pcw_index': 0, 'code_clr': 1, 'env_index': 0},\n", - " ],\n", - " 'envelope_configs': [\n", - " {'envelope_type': 'rect_hold', 'amp': 32767}, \n", - " ],\n", - " 'instr_show': False,\n", - " 'FolderName': 'AWG_NCO',\n", - " 'CaseName': 'AWG_NCO',\n", - "})\n" - ], - "id": "50f2dbf56478f38", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_NCO\\AWG_NCO_HEX.txt\n" - ] - } - ], - "execution_count": 121 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2026-07-20T07:11:53.315585Z", - "start_time": "2026-07-20T07:11:53.095631Z" - } - }, - "cell_type": "code", - "source": [ - "# AWG_NCO_freq_scan\n", - "freq_list = [1, 10, 30] + list(range(50, 1550, 50))\n", - "pm_load = ParamsManager('../AWG')\n", - "\n", - "for fcw in freq_list:\n", - " params = pm_load.load('AWG_NCO')\n", - " params['fcw'][0] = fcw\n", - " params.update({\n", - " 'FolderName': 'AWG_ffNCO_freq_scan',\n", - " 'CaseName': f\"tc_ffnco_freq_scan_{fcw}MHz\",\n", - " })\n", - " run_case(params)" - ], - "id": "8e296e767758c009", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_1MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_10MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_30MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_50MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_100MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_150MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_200MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_250MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_300MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_350MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_400MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_450MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_500MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_550MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_600MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_650MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_700MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_750MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_800MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_850MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_900MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_950MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_1000MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_1050MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_1100MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_1150MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_1200MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_1250MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_1300MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_1350MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_1400MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_1450MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ffNCO_freq_scan\\tc_ffnco_freq_scan_1500MHz_HEX.txt\n" - ] - } - ], - "execution_count": 102 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2026-07-20T03:13:22.466247Z", - "start_time": "2026-07-20T03:13:22.381740Z" - } - }, - "cell_type": "code", - "source": [ - "# AWG_NCO_phase_scan\n", - "phase_list = [0, 1, 10, 45, 90, 135, 180, 225, 270, 315, 360]\n", - "pm_load = ParamsManager('../AWG')\n", - "\n", - "for pcw in phase_list:\n", - " params = pm_load.load('AWG_NCO')\n", - " params['pcw'][0] = pcw\n", - " params.update({\n", - " 'FolderName': 'AWG_ffNCO_pha_scan',\n", - " 'CaseName': f\"tc_ffnco_pha_scan_{pcw}deg\",\n", - " })\n", - " \n", - " run_case(params)\n" - ], - "id": "ab2839469d4faa7a", - "outputs": [ - { - "ename": "FileNotFoundError", - "evalue": "[Errno 2] No such file or directory: '../AWG\\\\AWG_NCO.json'", - "output_type": "error", - "traceback": [ - "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[1;31mFileNotFoundError\u001B[0m Traceback (most recent call last)", - "Input \u001B[1;32mIn [27]\u001B[0m, in \u001B[0;36m\u001B[1;34m()\u001B[0m\n\u001B[0;32m 3\u001B[0m pm_load \u001B[38;5;241m=\u001B[39m ParamsManager(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m../AWG\u001B[39m\u001B[38;5;124m'\u001B[39m)\n\u001B[0;32m 5\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m pcw \u001B[38;5;129;01min\u001B[39;00m phase_list:\n\u001B[1;32m----> 6\u001B[0m params \u001B[38;5;241m=\u001B[39m \u001B[43mpm_load\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mload\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43mAWG_NCO\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m)\u001B[49m\n\u001B[0;32m 7\u001B[0m params[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mpcw\u001B[39m\u001B[38;5;124m'\u001B[39m][\u001B[38;5;241m0\u001B[39m] \u001B[38;5;241m=\u001B[39m pcw\n\u001B[0;32m 8\u001B[0m params\u001B[38;5;241m.\u001B[39mupdate({\n\u001B[0;32m 9\u001B[0m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mFolderName\u001B[39m\u001B[38;5;124m'\u001B[39m: \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mAWG_ffNCO_pha_scan\u001B[39m\u001B[38;5;124m'\u001B[39m,\n\u001B[0;32m 10\u001B[0m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mCaseName\u001B[39m\u001B[38;5;124m'\u001B[39m: \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mtc_ffnco_pha_scan_\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mpcw\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124mdeg\u001B[39m\u001B[38;5;124m\"\u001B[39m,\n\u001B[0;32m 11\u001B[0m })\n", - "File \u001B[1;32mD:\\recent_work\\Z-Chip _case_generator\\A_Case_Generator\\ParamsManager.py:30\u001B[0m, in \u001B[0;36mParamsManager.load\u001B[1;34m(self, filename)\u001B[0m\n\u001B[0;32m 26\u001B[0m filename \u001B[38;5;241m=\u001B[39m filename \u001B[38;5;241m+\u001B[39m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m.json\u001B[39m\u001B[38;5;124m'\u001B[39m\n\u001B[0;32m 28\u001B[0m filepath \u001B[38;5;241m=\u001B[39m os\u001B[38;5;241m.\u001B[39mpath\u001B[38;5;241m.\u001B[39mjoin(\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mparams_dir, filename)\n\u001B[1;32m---> 30\u001B[0m \u001B[38;5;28;01mwith\u001B[39;00m \u001B[38;5;28;43mopen\u001B[39;49m\u001B[43m(\u001B[49m\u001B[43mfilepath\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43mr\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mencoding\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43mutf-8\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m)\u001B[49m \u001B[38;5;28;01mas\u001B[39;00m f:\n\u001B[0;32m 31\u001B[0m params \u001B[38;5;241m=\u001B[39m json\u001B[38;5;241m.\u001B[39mload(f)\n\u001B[0;32m 32\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m params\n", - "\u001B[1;31mFileNotFoundError\u001B[0m: [Errno 2] No such file or directory: '../AWG\\\\AWG_NCO.json'" - ] - } - ], - "execution_count": 27 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2026-07-20T09:58:53.153981Z", - "start_time": "2026-07-20T09:58:53.070674Z" - } - }, - "cell_type": "code", - "source": [ - "# AWG_FM_NCO\n", - "run_case({\n", - " 'chip_mode': 'AWG_FM_NCO',\n", - " 'instr_type': 'awg_fm_nco',\n", - " 'fcw': [100, 200, 300, 400], # MHz\n", - " 'pcw': [0, 30, 45, 90, 120, 135, 150, 180], # Deg \n", - " 'rz_pha': 0,\n", - " 'code_clr': [True] * 4,\n", - " 'mcu_reg_clr': True,\n", - " 'envelope_configs': [\n", - " {'envelope_type': 'rect_hold', 'amp': 32767}, \n", - " ],\n", - " 'codeword_configs': [\n", - " {'fcw_index': 0, 'pcw_index': 0, 'code_clr': 1, 'env_index': 0},\n", - " ],\n", - " 'instr_show': False,\n", - " 'FolderName': 'AWG',\n", - " 'CaseName': 'AWG_FM_NCO',\n", - "})" - ], - "id": "1edc534637d8aed5", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG\\AWG_FM_NCO_HEX.txt\n" - ] - } - ], - "execution_count": 122 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2026-07-20T04:51:31.802180Z", - "start_time": "2026-07-20T04:51:31.703519Z" - } - }, - "cell_type": "code", - "source": [ - "# AWG_FMNCO_freq_scan\n", - "freq_list = [0.05, 50, 250, 500, 750]\n", - "pm_load = ParamsManager('../AWG')\n", - "\n", - "for fcw in freq_list:\n", - " params = pm_load.load('AWG_FM_NCO')\n", - " params['fcw'][0] = fcw\n", - " params.update({\n", - " 'FolderName': 'AWG_fmNCO_freq_scan',\n", - " 'CaseName': f\"tc_fmnco_freq_scan_{fcw}MHz\",\n", - " })\n", - " run_case(params)" - ], - "id": "fc315ff504df041b", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_fmNCO_freq_scan\\tc_fmnco_freq_scan_0.05MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_fmNCO_freq_scan\\tc_fmnco_freq_scan_50MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_fmNCO_freq_scan\\tc_fmnco_freq_scan_250MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_fmNCO_freq_scan\\tc_fmnco_freq_scan_500MHz_HEX.txt\n", - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_fmNCO_freq_scan\\tc_fmnco_freq_scan_750MHz_HEX.txt\n" - ] - } - ], - "execution_count": 93 - }, - { - "metadata": {}, - "cell_type": "code", - "outputs": [], - "execution_count": null, - "source": [ - "# AWG_FMNCO_phase_scan\n", - "phase_list = [0, 0.05, 5, 22.5, 45, 67.5, 90, 112.5, 135, 157.5, 180]\n", - "pm_load = ParamsManager('../AWG')\n", - "\n", - "for pcw in phase_list:\n", - " params = pm_load.load('AWG_FM_NCO')\n", - " params['pcw'][0] = pcw\n", - " params.update({\n", - " 'FolderName': 'AWG_fmNCO_pha_scan',\n", - " 'CaseName': f\"tc_fmnco_pha_scan_{pcw}deg\",\n", - " })\n", - " \n", - " run_case(params)" - ], - "id": "9c6fa8c1da53a8ae" - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": [ - "### AWG 直通包络与调制模式 (`AWG_ENV` / `AWG_MOD`)\n", - "\n", - "用于输出复杂的包络信号或调制信号。通过灵活的开关控制幅度、频率与偏置,可实现跳频扫描、相位扫描等动态测试 Case。 \n", - "\n", - "| **核心配置参数** | **参数类型/示例** | **参数详细含义及作用** |\n", - "| ---------------------------- | -------------------------- |--------------------------------------------------------------------------------------------------------------|\n", - "| **`amp_mod_enable`** | 布尔值 (`true`/`false`) | **幅度调制使能**:为 `true` 时,开启幅度控制,Python 会将幅度相关数组搬移至 DTCM 并控制 `300104` 寄存器。 |\n", - "| **`freq_mod_enable`** | 布尔值 (`true`/`false`) | **频率调制使能**:为 `true` 时,开启频率调制,也就是打开NCO,Python会自动获取频率相关参数写到DTCM中,控制 `300104` 寄存器。 |\n", - "| **`bias_enable`** | 布尔值 (`true`/`false`) | **偏置调制使能**:为true时,开启频率调制,获取直流偏置(Bias)参数写到DTCM中。 |\n", - "| **`fm_enable`** | 布尔值 (`true`/`false`) | **双音频调制使能**:若为 `true`,底层将在 DTCM 中对应mcu_regfile的双音频点使能寄存器上写入 1。 |\n", - "| **`envelope_configs`** | 结构体数组 | **包络形态形态库**:可以配置多种包络类型(如 `rect`、`flattop`、`cosine` 等),包含每种包络的幅值 `amp`、脉宽 `wave_time` 以及上升/下降沿时间 `edge_time`。 |\n", - "| **`ff_amp` / `fm_amp`** | 数组 (如 `[32767, 32767]`) | **单音NCO幅度 /双音NCO幅度列表**:提供给幅度调制器使用,幅度数组控制字,低16位是基频NCO的幅度,高16位给倍频的NCO的幅度。 |\n", - "| **`bias`** | 数组 (如 `[0, 0, 0, 0]`) | **偏置参数列表**:对应偏置通道的一组偏置控制字。 |\n", - "| **`rz_ff_pha` / `rz_fm_pha`** | 整数 (如 `0`, `45`) | **附加相位寄存器**:低16位是基频NCO的附加相位 ,高16位给倍频的NCO的附加相位。 |\n", - "| **`env_start`** | 整数 (如 `0`, `4`) | **包络起始索引**:MCU参数。指示 MCU 在开始发送脉冲串时,从 `codeword_configs`(或包络库)的第几个索引位置开始读取配置并进行发射。 |\n", - "| **`env_num`** | 整数 | **单轮发射的包络个数**:MCU参数。指示在内层循环中,**一轮需要连续发射多少个脉冲波形**。例如填 `4` 就会顺序把 `env_start` 往后的 4 个包络打出去。 |\n", - "| **`cycle_num`** | 整数 (如 `0`) | **大循环次数(轮数)**:MCU参数。指示这一整套脉冲波形串(包含 `env_num` 个包络的波形)整体需要**重复循环打多少大轮**。通常填 `0` 可能代表无限持续循环发射。 |\n", - "| **`codeword_configs`** | 结构体数组 | **码字**:MCU参数。可以放多个码字数组,一个码字对应一个波形,可以实现扫频,扫相,扫幅序列。 |\n", - "| **`send_interval`** | 数组 (如 `[175, 175]`) | **发送时间间隔**:MCU参数。定义了序列中**每一个脉冲发射完毕后,硬件需要等待多少个时钟周期**才允许发射下一个脉冲。内层循环里,每一个包络(脉冲)发送完毕后的等待间隔。 |" - ], - "id": "43eac70b7b0501a0" - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2026-07-20T07:36:39.733821Z", - "start_time": "2026-07-20T07:36:39.642577Z" - } - }, - "cell_type": "code", - "source": [ - "# AWG_ENV_HOLD\n", - "amp = 32767\n", - "wait_num = 100\n", - "send_time = 0\n", - "\n", - "run_case({\n", - " 'chip_mode': 'AWG_ENV',\n", - " 'instr_type': 'awg_env',\n", - " 'amp': amp,\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", - " ],\n", - " 'wait_num': wait_num,\n", - " 'send_time': send_time,\n", - " 'instr_show': False,\n", - " 'FolderName': '2509_Test/ENV',\n", - " 'CaseName': f\"AWG_ENV_rect_amp_{amp}_wait_{wait_num}_send_{send_time}\",\n", - "})" - ], - "id": "77fbf58eacb031f7", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\2509_Test\\ENV\\AWG_ENV_rect_amp_32767_wait_100_send_0_HEX.txt\n" - ] - } - ], - "execution_count": 106 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2026-07-20T07:25:06.777016Z", - "start_time": "2026-07-20T07:25:06.690830Z" - } - }, - "cell_type": "code", - "source": [ - "# AWG_MOD_NCO\n", - "#没什么用的CASE,汇编模板awg_mod_nco发了两个码字一个是波形保持,一个是波形不保持,NCO清零也有区别,不知道是测什么的。\n", - "fcw_0 = 100\n", - "\n", - "params = {\n", - " 'chip_mode': 'AWG_MOD',\n", - " 'instr_type': 'awg_mod_nco',\n", - " 'env_amp': 32767,\n", - " 'amp_mod_enable': True,\n", - " 'freq_mod_enable': True,\n", - " 'bias_enable': True,\n", - " 'fm_enable': False,\n", - " 'fcw': [fcw_0, 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': [16384, 32767, 32767, 32767],\n", - " 'fm_amp': [32767, 32767, 32767, 32767],\n", - " 'bias': [0, 0, 0, 0],\n", - " 'instr_show': False,\n", - " 'FolderName': '2509_Test/MOD',\n", - " 'CaseName': f\"AWG_MOD_NCO_freq_{fcw_0}MHz\",\n", - "}\n", - "\n", - "# 1. 先用 run_case 执行通用逻辑(配置芯片、触发 instruction_config、保存 JSON)\n", - "# 设 write_hw=False 避免触发默认的 rw_once\n", - "run_case(params, write_hw=False)\n", - "\n", - "# 2. 补上该模式特有的寄存器写入操作\n", - "env_amp = params['env_amp']\n", - "mk.rw_once('w', addr_base['ENVM0_BASE'], [env_amp << 16 | env_amp] * 2, params['config_file'])\n", - "mk.rw_once('w', addr_base['ENVI0_BASE'], [4], params['config_file'])" - ], - "id": "83a2c98dd434fe71", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "执行了configure_chip_output\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\2509_Test\\MOD\\AWG_MOD_NCO_freq_100MHz_HEX.txt\n" - ] - } - ], - "execution_count": 105 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2026-07-20T09:08:37.387229Z", - "start_time": "2026-07-20T09:08:37.293651Z" - } - }, - "cell_type": "code", - "source": [ - "# AWG_ENV\n", - "run_case({\n", - " 'chip_mode': 'AWG_ENV',\n", - " 'instr_type': 'general_send_wait',\n", - " 'inner_sync': True,\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", - " 'amp_mod_enable': True,\n", - " 'freq_mod_enable': True,\n", - " 'bias_enable': True,\n", - " 'fm_enable': False,\n", - " 'fcw': [100, 200, 300, 400], # MHz\n", - " 'mcu_reg_clr': False,\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': [0, 0, 0, 0],\n", - " 'env_start': 0,\n", - " 'env_num': 2,\n", - " 'cycle_num': 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", - " 'send_interval': [100, 150, 200, 250, 300, 350, 400,450,500],\n", - " 'instr_show': False,\n", - " 'FolderName': 'AWG_ENV',\n", - " 'CaseName': 'AWG_ENV',\n", - "})" - ], - "id": "da23fc85299e14aa", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG_ENV\\AWG_ENV_HEX.txt\n" - ] - } - ], - "execution_count": 109 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2026-07-20T04:55:43.059023Z", - "start_time": "2026-07-20T04:55:42.972377Z" - } - }, - "cell_type": "code", - "source": [ - "# AWG_MOD\n", - "run_case({\n", - " 'chip_mode': 'AWG_MOD',\n", - " 'instr_type': 'awg_mod',\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", - " 'amp_mod_enable': True,\n", - " 'freq_mod_enable': True,\n", - " 'bias_enable': True,\n", - " 'fm_enable': False,\n", - " 'fcw': [100, 200, 300, 400], # MHz\n", - " 'mcu_reg_clr': False,\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': [0, 0, 0, 0],\n", - " 'env_start': 0,\n", - " 'env_num': 2,\n", - " 'cycle_num': 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", - " 'send_interval': [100, 150, 200, 250, 300, 350, 400],\n", - " 'instr_show': False,\n", - " 'FolderName': 'AWG',\n", - " 'CaseName': 'AWG_MOD',\n", - "})" - ], - "id": "786778e573a8c8f4", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "执行了configure_chip_output\n", - "执行了env_config\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\AWG\\AWG_MOD_HEX.txt\n" - ] - } - ], - "execution_count": 98 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2026-07-20T07:08:14.751425Z", - "start_time": "2026-07-20T07:08:14.622236Z" - } - }, - "cell_type": "code", - "source": [ - "params = {\n", - " 'instr_type': 'mul_16x16',\n", - " 'instr_show': False,\n", - " 'inner_sync': True,\n", - " 'mult_a': [0, 1, 2, 3, 4, 5, 6],\n", - " 'mult_b': [0, 1, 2, 3, 4, 5, 6],\n", - " 'mult_nums': 7,\n", - " 'FolderName': 'MUL',\n", - " 'CaseName': 'MUL_16x16',\n", - "}\n", - "\n", - "run_case(params)" - ], - "id": "7639673cece22d93", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "执行了configure_chip_output\n", - "执行了instruction_config\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\MUL\\MUL_16x16_HEX.txt\n" - ] - } - ], - "execution_count": 99 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2026-07-20T07:08:47.821972Z", - "start_time": "2026-07-20T07:08:47.737074Z" - } - }, - "cell_type": "code", - "source": [ - "# CLK_CONFIG\n", - "params = {\n", - " 'FolderName': 'CONFIG',\n", - " 'CaseName': 'CLK_CONFIG_POS_EDGE_6G',\n", - " 'custom_registers': [\n", - " (f\"0x{addr_base['INTP_BASE'] + 0x5c:x}\", str(0x800)),\n", - " (f\"0x{addr_base['INTP_BASE'] + 0x58:x}\", str(0x22996)),\n", - " (f\"0x{addr_base['INTP_BASE'] + 0x50:x}\", str(0x10000)),\n", - " (f\"0x{addr_base['INTP_BASE'] + 0x74:x}\", str(0xfffe)),\n", - " (f\"0x{addr_base['INTP_BASE'] + 0x54:x}\", str(0x35020000)),\n", - " (f\"0x{addr_base['INTP_BASE'] + 0x5d:x}\", str(0x801)),\n", - " (f\"0x{addr_base['INTP_BASE'] + 0x50:x}\", str(0x10000)),\n", - " (f\"0x{addr_base['INTP_BASE'] + 0x5c:x}\", str(0x9ff)),\n", - " (f\"0x{addr_base['INTP_BASE'] + 0x74:x}\", str(0xffff)),\n", - " ],\n", - "}\n", - "\n", - "run_case(params)" - ], - "id": "b1eba0e3afa1312f", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "执行了configure_chip_output\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\CONFIG\\CLK_CONFIG_POS_EDGE_6G_HEX.txt\n" - ] - } - ], - "execution_count": 100 - }, - { - "metadata": {}, - "cell_type": "code", - "outputs": [], - "execution_count": null, - "source": [ - "# DEM_CONFIG\n", - "params = {\n", - " 'FolderName': 'CONFIG',\n", - " 'CaseName': 'DEM_OFF',\n", - " 'custom_registers': [\n", - " (f\"0x{addr_base['DACR0_BASE'] + 0x30:x}\", [0] * 4),\n", - " ],\n", - "}\n", - "\n", - "run_case(params)" - ], - "id": "5d668223bf2eaf25" - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2026-07-20T07:09:57.530948Z", - "start_time": "2026-07-20T07:09:57.438172Z" - } - }, - "cell_type": "code", - "source": [ - "# DEBUG_MEM_CLEAR\n", - "params = {\n", - " 'FolderName': 'CONFIG',\n", - " 'CaseName': 'DEBUG_MEM_CLEAR',\n", - " 'custom_registers': [\n", - " (f\"{addr_base['DBGM_BASE']}\", [0] * 2048),\n", - " ],\n", - "}\n", - "\n", - "run_case(params)" - ], - "id": "23f3cb029dfe92ec", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "执行了configure_chip_output\n", - " 生成:D:\\recent_work\\Z-Chip _case_generator\\CONFIG\\DEBUG_MEM_CLEAR_HEX.txt\n" - ] - } - ], - "execution_count": 101 + "# 循环执行每个频率点\n", + "for var in var_list:\n", + " run_case({\n", + " 'chip_mode': 'AWG',\n", + " 'mode': 'nco',\n", + " 'tail_en': False,\n", + " 'tc_coef_set': 'coef1',\n", + " 'inner_sync': True,\n", + " 'amp_mod_enable': True,\n", + " 'freq_mod_enable': True,\n", + " 'bias_enable': True,\n", + " \n", + " 'fcw': [100, 200, 300, 400], # 只有第一个元素在变\n", + " 'mcu_reg_clr': True,\n", + " 'pcw': [var, 30, 45, 90, 120, 135, 150, 180],\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,\n", + " 'instr_type': 'general_send_wait',\n", + " 'send_interval': [100, 150, 200, 250, 300, 350, 400, 450, 500],\n", + " 'cycle_num': 1,\n", + " 'codeword_configs': [\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,\n", + " 'offsets': [0x78, 0x40],\n", + " 'steps': [3000, int(100 / 4e9 / 4 * 2 ** 32)] # 假设 fs=4e9\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': 'TC_FFNCO_PHA_SCAN',\n", + " 'CaseName': f'tc_ffnco_pha_scan_{var}deg', # 自动生成文件名\n", + " })" + ] } ], "metadata": { @@ -1162,14 +463,14 @@ "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.6" + "pygments_lexer": "ipython3", + "version": "3.11.3" } }, "nbformat": 4,