Compare commits

...

2 Commits

Author SHA1 Message Date
yangshenbo 575f649c28 删掉读调试存储指令 2026-08-26 18:01:40 +08:00
yangshenbo acbad62e62 新增调试使能+DAC寄存器配置 2026-08-26 17:55:13 +08:00
9 changed files with 282 additions and 97 deletions

View File

@ -315,7 +315,7 @@ class AssemblyTemplateManager:
if inner_sync: if inner_sync:
self.write_register(addr_base['SYST_BASE']+reg_define['sys_reg']['SYNCR'], 3<<16 | 1) self.write_register(addr_base['SYST_BASE']+reg_define['sys_reg']['SYNCR'], 3<<16 | 1)
self.mk.rw_once('r', addr_base['SYST_BASE']+reg_define['pll_reg']['INTPLL_CLKRXPD'], [0]*20, self.config_file) self.mk.rw_once('r', addr_base['SYST_BASE']+reg_define['pll_reg']['INTPLL_CLKRXPD'], [0]*20, self.config_file)
self.mk.rw_once('r', addr_base['DBGM_BASE'], [0]*2048, self.config_file) # self.mk.rw_once('r', addr_base['DBGM_BASE'], [0]*2048, self.config_file)
def instruction_config(mk_instance, mk_instr, **kwargs): def instruction_config(mk_instance, mk_instr, **kwargs):
asm_templates = AssemblyTemplateManager(mk_instance, mk_instr, **kwargs) asm_templates = AssemblyTemplateManager(mk_instance, mk_instr, **kwargs)

View File

@ -251,6 +251,8 @@ class ZChipConfig(object):
self._ramp_config(**kwargs) self._ramp_config(**kwargs)
elif chip_mode == 'AWG': elif chip_mode == 'AWG':
self._awg_config(**kwargs) self._awg_config(**kwargs)
def _ramp_config(self, **kwargs): def _ramp_config(self, **kwargs):
self.write_register(addr_base['CTRL0_BASE'] + reg_define['ctrl_reg']['MODDOTR'], 8) # 切换到RAMP输出 self.write_register(addr_base['CTRL0_BASE'] + reg_define['ctrl_reg']['MODDOTR'], 8) # 切换到RAMP输出
ramp_ctrl = kwargs.pop('ramp_ctrl') ramp_ctrl = kwargs.pop('ramp_ctrl')

View File

@ -27,7 +27,7 @@
"rz_ff_pha": 0, "rz_ff_pha": 0,
"rz_fm_pha": 45, "rz_fm_pha": 45,
"ff_amp": [ "ff_amp": [
32767, 10000,
32767, 32767,
32767, 32767,
32767 32767
@ -122,6 +122,21 @@
"wave_time": 22 "wave_time": 22
} }
], ],
"custom_registers": [
{
"addr": 52,
"values": 5
},
{
"addr": 6291504,
"values": [
0,
0,
0,
0
]
}
],
"FolderName": "gen_cases\\General", "FolderName": "gen_cases\\General",
"CaseName": "TC_AWG_MOD_TAILCOR", "CaseName": "TC_AWG_MOD_TAILCOR",
"config_file": "gen_cases\\General\\TC_AWG_MOD_TAILCOR_HEX.txt" "config_file": "gen_cases\\General\\TC_AWG_MOD_TAILCOR_HEX.txt"

View File

@ -1,3 +1,14 @@
00000034
00100004
00000005
00600030
00100010
00000000
00000000
00000000
00000000
00301000 00301000
00100080 00100080
0347a17d 0347a17d
@ -89,7 +100,7 @@
6aaa0000 6aaa0000
7fff0000 7fff0000
00000000 00000000
7fff7fff 27107fff
7fff7fff 7fff7fff
7fff7fff 7fff7fff
7fff7fff 7fff7fff

View File

@ -2,7 +2,7 @@
"cells": [ "cells": [
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 7, "execution_count": 3,
"id": "initial_id", "id": "initial_id",
"metadata": { "metadata": {
"ExecuteTime": { "ExecuteTime": {
@ -11,16 +11,7 @@
}, },
"collapsed": true "collapsed": true
}, },
"outputs": [ "outputs": [],
{
"name": "stdout",
"output_type": "stream",
"text": [
"The autoreload extension is already loaded. To reload it, use:\n",
" %reload_ext autoreload\n"
]
}
],
"source": [ "source": [
"# _配置\n", "# _配置\n",
"# TODO: 完整的定向case测试集\n", "# TODO: 完整的定向case测试集\n",
@ -145,7 +136,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 3, "execution_count": 2,
"id": "dd0c2d05a0afc9b6", "id": "dd0c2d05a0afc9b6",
"metadata": { "metadata": {
"ExecuteTime": { "ExecuteTime": {
@ -155,15 +146,14 @@
}, },
"outputs": [ "outputs": [
{ {
"ename": "FileNotFoundError", "ename": "NameError",
"evalue": "[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'", "evalue": "name 'Path' is not defined",
"output_type": "error", "output_type": "error",
"traceback": [ "traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)",
"Input \u001b[1;32mIn [3]\u001b[0m, in \u001b[0;36m<cell line: 0>\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", "Input \u001b[1;32mIn [2]\u001b[0m, in \u001b[0;36m<cell line: 0>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# load params\u001b[39;00m\n\u001b[0;32m 2\u001b[0m \u001b[38;5;66;03m# 1. 指定要加载的 JSON 文件完整路径\u001b[39;00m\n\u001b[0;32m 3\u001b[0m json_file_path \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\u001b[38;5;124mtc_ffnco_freq_scan100Mhz.json\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m----> 5\u001b[0m json_path \u001b[38;5;241m=\u001b[39m \u001b[43mPath\u001b[49m(json_file_path)\n\u001b[0;32m 6\u001b[0m load_dir \u001b[38;5;241m=\u001b[39m json_path\u001b[38;5;241m.\u001b[39mparent \u001b[38;5;66;03m# 获取目录\u001b[39;00m\n\u001b[0;32m 7\u001b[0m case_name \u001b[38;5;241m=\u001b[39m json_path\u001b[38;5;241m.\u001b[39mstem \u001b[38;5;66;03m# 文件名跟随.json前面的\u001b[39;00m\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;31mNameError\u001b[0m: name 'Path' is not defined"
"\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'"
] ]
} }
], ],
@ -189,7 +179,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": 14,
"id": "47c22172d77fc331", "id": "47c22172d77fc331",
"metadata": { "metadata": {
"ExecuteTime": { "ExecuteTime": {
@ -205,13 +195,13 @@
"执行 config_chip_reg\n", "执行 config_chip_reg\n",
"执行了 env_config\n", "执行了 env_config\n",
"执行了 instruction_config\n", "执行了 instruction_config\n",
"生成文件路径:D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\General\\tc_general_awg_HEX.txt\n" "生成文件路径:D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\General\\TC_AWG_MOD_TAILCOR_HEX.txt\n"
] ]
}, },
{ {
"data": { "data": {
"text/html": [ "text/html": [
"<a href=\"D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\General\\tc_general_awg_HEX.txt\" target=\"_blank\">D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\General\\tc_general_awg_HEX.txt</a>" "<a href=\"D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\General\\TC_AWG_MOD_TAILCOR_HEX.txt\" target=\"_blank\">D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\General\\TC_AWG_MOD_TAILCOR_HEX.txt</a>"
], ],
"text/plain": [ "text/plain": [
"<IPython.core.display.HTML object>" "<IPython.core.display.HTML object>"
@ -227,19 +217,19 @@
"run_case({\n", "run_case({\n",
" 'chip_mode':'AWG', #分为AWG和RAMP模式\n", " 'chip_mode':'AWG', #分为AWG和RAMP模式\n",
" 'mode':'mod', #可选nco nco_fm env mod四种模式\n", " 'mode':'mod', #可选nco nco_fm env mod四种模式\n",
" 'tail_en': False, #拖尾矫正开关\n", " 'tail_en': True, #拖尾矫正开关\n",
" 'tc_coef_set': 'coef1', #拖尾矫正打开生效\n", " 'tc_coef_set': 'coef1', #拖尾矫正打开生效\n",
" 'inner_sync': True, #内部触发,应该是软触发,写一个寄存器,就能触发\n", " 'inner_sync': True, #内部触发,应该是软触发,写一个寄存器,就能触发\n",
" 'amp_mod_enable': True, #调幅的开关,mod调制模式下起作用。\n", " 'amp_mod_enable': True, #调幅的开关,mod调制模式下起作用。\n",
" 'freq_mod_enable': True, #nco的开关\n", " 'freq_mod_enable': True, #nco的开关\n",
" 'bias_enable': True, #必开的开关,AWG模式下,偏置必须打开,否则AWG输出保持为0.\n", " 'bias_enable': True, #必开的开关,AWG模式下,偏置必须打开,否则AWG输出保持为0.\n",
" \n", " \n",
" 'fcw': [100, 200, 300, 400], # MHz\n", " 'fcw': [200, 200, 300, 400], # MHz\n",
" 'mcu_reg_clr': True,\n", " 'mcu_reg_clr': False,\n",
" 'pcw': [0, 30, 45, 90, 120, 135, 150, 180], # Deg \n", " 'pcw': [0, 30, 45, 90, 120, 135, 150, 180], # Deg \n",
" 'rz_ff_pha': 0,\n", " 'rz_ff_pha': 0,\n",
" 'rz_fm_pha': 45,\n", " 'rz_fm_pha': 45,\n",
" 'ff_amp': [32767, 32767, 32767, 32767],\n", " 'ff_amp': [10000, 32767, 32767, 32767],\n",
" 'fm_amp': [32767, 32767, 32767, 32767],\n", " 'fm_amp': [32767, 32767, 32767, 32767],\n",
" 'bias': [1, 2, 3, 4],\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",
@ -247,13 +237,13 @@
" 'send_interval': [100, 150, 200, 250, 300, 350, 400,450,500],\n", " 'send_interval': [100, 150, 200, 250, 300, 350, 400,450,500],\n",
" 'cycle_num': 0, #0代表无限循环,如果要想扫参,那么这个波形序列就不能无限循环播放\n", " 'cycle_num': 0, #0代表无限循环,如果要想扫参,那么这个波形序列就不能无限循环播放\n",
" 'codeword_configs': [\n", " 'codeword_configs': [\n",
" {'wave_hold': 1, 'fcw_index': 0, 'pcw_index': 0, 'code_clr': 1, 'env_index': 0},\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': 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': 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': 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': 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': 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': 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': 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': 8},\n",
" ],\n", " ],\n",
@ -271,8 +261,13 @@
" {'envelope_type': 'rect', 'amp': 32767, 'wave_time': 12},\n", " {'envelope_type': 'rect', 'amp': 32767, 'wave_time': 12},\n",
" {'envelope_type': 'flattop', 'amp': 32767, 'edge_time': 2, 'wave_time': 22},\n", " {'envelope_type': 'flattop', 'amp': 32767, 'edge_time': 2, 'wave_time': 22},\n",
" ],\n", " ],\n",
"\n",
" 'custom_registers': [\n",
" {\"addr\": 0x34, \"values\": 0x5}, # Debug存储器使能\n",
" {\"addr\": 0x600030, \"values\": [0x0, 0x0, 0x0, 0x0]}, # DAC 配置\n",
" ],\n",
" 'FolderName': 'General',\n", " 'FolderName': 'General',\n",
" 'CaseName': 'tc_general_awg',\n", " 'CaseName': 'TC_AWG_MOD_TAILCOR',\n",
"})" "})"
] ]
}, },
@ -348,7 +343,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 17, "execution_count": 7,
"id": "3895007623de81e8", "id": "3895007623de81e8",
"metadata": { "metadata": {
"ExecuteTime": { "ExecuteTime": {
@ -364,63 +359,225 @@
"执行 config_chip_reg\n", "执行 config_chip_reg\n",
"执行了 env_config\n", "执行了 env_config\n",
"执行了 instruction_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", "生成文件路径:D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_1MHz_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"
] ]
},
{
"data": {
"text/html": [
"<a href=\"D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_1MHz_HEX.txt\" target=\"_blank\">D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_1MHz_HEX.txt</a>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"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\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_101MHz_HEX.txt\n"
]
},
{
"data": {
"text/html": [
"<a href=\"D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_101MHz_HEX.txt\" target=\"_blank\">D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_101MHz_HEX.txt</a>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"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\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_201MHz_HEX.txt\n"
]
},
{
"data": {
"text/html": [
"<a href=\"D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_201MHz_HEX.txt\" target=\"_blank\">D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_201MHz_HEX.txt</a>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"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\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_301MHz_HEX.txt\n"
]
},
{
"data": {
"text/html": [
"<a href=\"D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_301MHz_HEX.txt\" target=\"_blank\">D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_301MHz_HEX.txt</a>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"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\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_401MHz_HEX.txt\n"
]
},
{
"data": {
"text/html": [
"<a href=\"D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_401MHz_HEX.txt\" target=\"_blank\">D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_401MHz_HEX.txt</a>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"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\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_501MHz_HEX.txt\n"
]
},
{
"data": {
"text/html": [
"<a href=\"D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_501MHz_HEX.txt\" target=\"_blank\">D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_501MHz_HEX.txt</a>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"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\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_601MHz_HEX.txt\n"
]
},
{
"data": {
"text/html": [
"<a href=\"D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_601MHz_HEX.txt\" target=\"_blank\">D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_601MHz_HEX.txt</a>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"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\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_701MHz_HEX.txt\n"
]
},
{
"data": {
"text/html": [
"<a href=\"D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_701MHz_HEX.txt\" target=\"_blank\">D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_701MHz_HEX.txt</a>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"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\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_801MHz_HEX.txt\n"
]
},
{
"data": {
"text/html": [
"<a href=\"D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_801MHz_HEX.txt\" target=\"_blank\">D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_801MHz_HEX.txt</a>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"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\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_901MHz_HEX.txt\n"
]
},
{
"data": {
"text/html": [
"<a href=\"D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_901MHz_HEX.txt\" target=\"_blank\">D:\\MyDocument\\工作\\Z芯片的case生成器\\Chip_Case_Generator\\Z_case_Generator_V2.0\\gen_cases\\TC_AWG_NCO_FM_FREQ\\tc_awg_nco_fm_freq_901MHz_HEX.txt</a>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
} }
], ],
"source": [ "source": [
"# ========== 扫频参数配置(你只需要改这里) ==========\n", "# ========== 扫频参数配置(你只需要改这里) ==========\n",
"var_start = 0 # 起始频率 (MHz)\n", "var_start = 1 # 起始频率 (MHz)\n",
"var_stop = 180 # 终止频率 (MHz)\n", "var_stop = 901 # 终止频率 (MHz)\n",
"var_step = 15 # 步进 (MHz)\n", "var_step = 100 # 步进 (MHz)\n",
"# ===================================================\n", "# ===================================================\n",
"\n", "\n",
"# 生成频率列表\n", "# 生成频率列表\n",
@ -431,7 +588,7 @@
"for var in var_list:\n", "for var in var_list:\n",
" run_case({\n", " run_case({\n",
" 'chip_mode': 'AWG',\n", " 'chip_mode': 'AWG',\n",
" 'mode': 'nco',\n", " 'mode': 'nco_fm',\n",
" 'tail_en': False,\n", " 'tail_en': False,\n",
" 'tc_coef_set': 'coef1',\n", " 'tc_coef_set': 'coef1',\n",
" 'inner_sync': True,\n", " 'inner_sync': True,\n",
@ -439,24 +596,24 @@
" 'freq_mod_enable': True,\n", " 'freq_mod_enable': True,\n",
" 'bias_enable': True,\n", " 'bias_enable': True,\n",
" \n", " \n",
" 'fcw': [100, 200, 300, 400], # 只有第一个元素在变\n", " 'fcw': [var, 200, 300, 400], # 只有第一个元素在变\n",
" 'mcu_reg_clr': True,\n", " 'mcu_reg_clr': True,\n",
" 'pcw': [var, 30, 45, 90, 120, 135, 150, 180],\n", " 'pcw': [15, 30, 45, 90, 120, 135, 150, 180],\n",
" 'rz_ff_pha': 0,\n", " 'rz_ff_pha': 0,\n",
" 'rz_fm_pha': 45,\n", " 'rz_fm_pha': 45,\n",
" 'ff_amp': [32767, 32767, 32767, 32767],\n", " 'ff_amp': [32767, 32767, 32767, 32767],\n",
" 'fm_amp': [32767, 32767, 32767, 32767],\n", " 'fm_amp': [32767, 32767, 32767, 32767],\n",
" 'bias': [1, 2, 3, 4],\n", " 'bias': [1, 2, 3, 4],\n",
" 'fm_en': False,\n", " 'fm_en': True,\n",
" 'instr_type': 'general_send_wait',\n", " 'instr_type': 'general_send_wait',\n",
" 'send_interval': [100, 150, 200, 250, 300, 350, 400, 450, 500],\n", " 'send_interval': [100, 150, 200, 250, 300, 350, 400, 450, 500],\n",
" 'cycle_num': 1,\n", " 'cycle_num': 1,\n",
" 'codeword_configs': [\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': 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': 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': 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': 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': 8},\n",
" ],\n", " ],\n",
" 'sweep_config': {\n", " 'sweep_config': {\n",
" 'sweep_num': 0,\n", " 'sweep_num': 0,\n",
@ -472,8 +629,8 @@
" {'envelope_type': 'rect', 'amp': 32767, 'wave_time': 12},\n", " {'envelope_type': 'rect', 'amp': 32767, 'wave_time': 12},\n",
" {'envelope_type': 'flattop', 'amp': 32767, 'edge_time': 2, 'wave_time': 22},\n", " {'envelope_type': 'flattop', 'amp': 32767, 'edge_time': 2, 'wave_time': 22},\n",
" ],\n", " ],\n",
" 'FolderName': 'TC_FFNCO_PHA_SCAN',\n", " 'FolderName': 'TC_AWG_NCO_FM_FREQ',\n",
" 'CaseName': f'tc_ffnco_pha_scan_{var}deg', # 自动生成文件名\n", " 'CaseName': f'tc_awg_nco_fm_freq_{var}MHz', # 自动生成文件名\n",
" })" " })"
] ]
} }