VivadoAndTcl: namespace

命名空间,其实际是一系列变量和过程的合集,从而让TCL 解释器能够对这些变量和过程进行分类管理。

复制代码
# 声明如下
namespace eval ns0 {
    proc print {} {
        puts "Tcl Proc 0"    
    }
    proc add {a b} {
        return [expr {$a + $b}]    
    }
}

namespace eval ns1 {
    proc print {} {
        puts "Tcl Proc1"    
    }
    proc sub {a b} {
        return [expr {$a - $b}]    
    }
}
# 调用如下
# 该语句调用了ns0里的print过程
ns0::print
# 该语句进行了4+5的计算
ns0:add 4 5

如果一个命名空间里的不同过程之间是有关联的,需要用到同一个变量时,就可以创建命名空间变量。

复制代码
namespace eval counter {
    variable cnt 0
    proc AddOne {} {
        variable cnt
        return [incr cnt]    
    }
    
    proc SubOne {} {
        variable cnt
        return [incr cnt -1]    
    }
    
    proc reset {} {
        variable cnt
        set cnt 0    
    }
}
# 调用如下
# 该语句调用了counter里的加一过程
[counter::AddOne]
# 该语句进行了counter里的减一过程
[counter::SubOne]
# 该语句进行了counter里的复位过程
[counter::reset]
相关推荐
云雾J视界44 分钟前
6G通信基站原型开发:Stratix 10 SoC片上128位AXI总线优化与400G加密引擎实现
fpga开发·soc·加密引擎·axi4总线·hyperflex架构·32核并行架构
恒锐丰小吕2 小时前
矽塔 SA8206A 输入耐压36V 过流保护阈值1.4A 过压/过流保护芯片 SOT-23
嵌入式硬件·硬件工程
江蘇的蘇3 小时前
UltraScale/+ FPGA实现万兆网的两种方式:GT核、10G Ethernet Subsystem核
fpga开发
骁的小小站9 小时前
Verilator 和 GTKwave联合仿真
开发语言·c++·经验分享·笔记·学习·fpga开发
知识充实人生9 小时前
时序收敛方法一:控制集优化
stm32·单片机·fpga开发
FPGA_ADDA15 小时前
小尺寸13*13cmRFSOC47DR数模混合信号处理卡
fpga开发·信号处理·射频采集·rfsoc·高速adda·8发8收
讽刺人生Yan15 小时前
RFSOC学习记录(五)带通采样定理
学习·fpga·rfsoc
讽刺人生Yan1 天前
RFSOC学习记录(四)MTS时序分析
学习·fpga·rfsoc
南檐巷上学1 天前
Vivado调用FFT IP核进行数据频谱分析
fpga开发·fpga·vivado·fft·快速傅里叶变化
Yuroo zhou1 天前
破空驭风,智领未来 --5KG物流配送无人机展示飞行!
人工智能·算法·机器人·硬件工程·无人机