我想创建一个TCL或perl脚本,它将比较数量和位数总数,如果不匹配,则在开头放置0: 文件的部分内容:
// DEBUG: TDO : 16'b1
// DEBUG: STEP # : 3
// DEBUG: TDI : 35'b1011101001011110100000100100100
// DEBUG: TDO : 35'b0xx001011101001011110100000100100100
// DEBUG: LOAD_DR ( 35 , 35'b1011101001011110100000100100100 ) ;
// DEBUG: STEP # : 4
// DEBUG: LOAD_NOP ( 2 ) ;
// DEBUG: STEP # : 5
// DEBUG: TDI : 8'b1011101001011110100000100100101
// DEBUG: TDO : 8'b100
// DEBUG: LOAD_DR ( 35 , 35'b1011101001011110100000100100101 ) ;
这里,对于某些TDO,位不完整。 例如: 8'b100,这里只有3位,但是数字是8,所以无论在哪种情况下,我都需要在开头为剩余位添加额外的0。对于8'b100输出应该是8'b 00000 < / strong> 100,此脚本应替换原始文件中的此位,而不会影响文件的任何其他内容:
通过脚本进行所需更改后,预期输出的部分内容为8'b100
// DEBUG: STEP # : 5
// DEBUG: TDI : 8'b1011101001011110100000100100101
// DEBUG: TDO : 8'b00000100
TCL脚本是首选,但Perl也没问题。
答案 0 :(得分:2)
我不打算给你代码,因为那不是Stack Overflow的用途。但是我会告诉你程序员如何考虑这个任务。
编程就是将任务分解为更小的任务。那么我们需要做什么呢?
考虑这些问题的答案。如果任何问题太大而无法回答,那么请考虑将其分解为较小的问题。通过查看任务规范,您可以回答一些问题。其中一些你需要通过阅读编程语言参考书来获得答案。
尝试一下。如果您有代码可以执行某些操作(即使它没有解决问题的每个部分),请回到此处并更新您的问题以包含您的代码。解释什么有效,以及你遇到什么问题。问我们明确的问题。我们会尽力帮助您。
答案 1 :(得分:0)
既然你有机会前进,我就是这样解决的:
set fh [open filename r]
while {[gets $fh line] != -1} {
if {[regexp {(.* TDO\s+: (\d+)'b)([01]+)\M} $line -> prefix len bits]} {
set line [format "%s%0*s" $prefix $len $bits]
}
puts $line
}
close $fh
见: