只是一个简短的逻辑难题:我试图实现4个主计数器。在每个主计数器中都存在子计数器。我通过创建2D列表来完成此任务。
因此,当收集触发器时,它会将子计数器附加到每个主计数器中并允许它开始计数。例如,在第4个主计数器中,可以有不超过4个子计数器,每个子计数器只能存在240个周期(因此窗口条件)。在第二个主计数器中,只能有2个子计数器,每个计数器只能计数25个时钟周期
到目前为止,我有这个:
def l1a(self):
for x in xrange(len(self.counter)) :
self.counter[x].append([0])
"Triggered"
print self.counter
def counterReset(self):
for j in xrange(len(self.counter)):
print self.counter
for k in xrange(len(self.counter[j])):
print self.counter[j][k]
if ((self.counter[j][k]) / self.window[j]) == 1:
self.counter[j].pop(k) #delete counter
print self.counter
#print self.counter
def triggerRules(self):
breakMe = False
while breakMe == False:
for i in xrange(len(self.counter)):
if len(self.counter[i]) > i:
breakMe = True
break
if breakMe == False:
self.l1a()
def triggerClk(self):
for i in xrange(len(self.counter)):
for j in xrange(len(self.counter[i])):
self.counter[i][j] += 1
def myClk(self):
self.counterReset()
self.clk += 1
self.triggerClk()
nRand = random.randrange(0, self.max_word)
if nRand < self.frequency :
#print "Trying trigger"
self.triggerRules()
但它只给了我一个输出:
[[[0]], [[0]], [[0]], [[0]]]
[[[0]], [[0]], [[0]], [[0]]]
[0]
Traceback (most recent call last):
File "mp7trigsim.py", line 49, in <module>
if __name__ == '__main__':main()
File "mp7trigsim.py", line 27, in main
trig = TriggerGen(i, max_word, clkCycles)
File "TriggerGen.py", line 23, in __init__
self.myClk()
File "TriggerGen.py", line 60, in myClk
self.counterReset()
File "TriggerGen.py", line 37, in counterReset
if ((self.counter[j][k]) / self.window[j]) == 1:
TypeError: unsupported operand type(s) for /: 'list' and 'int'
如何获取它以便它只是初始化4个主计数器然后让我追加并弹出它们?
我原以为我需要从:
开始[[0], [0], [0], [0]]
并最终想象如果所有的计数器都在滴答作响:
[[0,1], [1,12,1,13], [11,24,5,2], [22,43,24,56]]
我确定它缺少了一些微妙的东西?
答案 0 :(得分:1)
你可以看到TypeError之前的语句打印一个列表 - 这就是你得到错误list / int的原因。并且您的诊断打印显示您的嵌套到三个级别而不是两个。在l1a
尝试追加0而不是[0]
。