123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import re
- import time
- import cv2
- import numpy as np
- import random
- import struct
- preamble = 0xE1E4C312
- moduleId = 0x4cd2e19c
- jobId = 0x12345678
- size = 224
- kernelSize = 5
- border = int(kernelSize/2)
- sizeWithBorder = size+2*border
- pixels = sizeWithBorder**2
- image = cv2.imread("Test_card.png")
- image = cv2.resize(image, (size, size))
- image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
- image = cv2.copyMakeBorder(image, border, border, border, border, cv2.BORDER_REPLICATE)
- image = np.ndarray((228,228), dtype=float)
- image.fill(0)
- for a in range(228):
- for b in range(228):
- image[a][b] = (a)*228+(b)
- kernel = np.array([
- [1, 4, 6, 4, 1],
- [4, 16, 24, 16, 4],
- [6, 24, 36, 24, 6],
- [4, 16, 24, 16, 4],
- [1, 4, 6, 4, 1]
- ], dtype=float) / 256
- kernel.fill(0)
- kernel[4][4] = 1
- print(kernel)
- cs = moduleId + jobId
- delay = 315
- with open("vivado_project/vhdl-modules.sim/sim_1/behav/xsim/input.txt", "w") as inFile:
- inFile.write("{:d} ns {:032b}\n".format(delay, preamble))
- inFile.write("{:d} ns {:032b}\n".format(delay, jobId))
- inFile.write("{:d} ns {:032b}\n".format(delay, moduleId))
- for i in range(kernelSize**2):
- y, x = int(i / kernelSize), i % kernelSize
- val = struct.unpack('!i',struct.pack('!f', kernel[y][x]))[0]
- inFile.write("{:d} ns {:032b}\n".format(delay, val))
- cs += val
- for i in range(pixels):
- y, x = int(i / sizeWithBorder), i % sizeWithBorder
- val = struct.unpack('!i',struct.pack('!f', image[y][x]))[0]
- inFile.write("{:d} ns {:032b}\n".format(delay, val))
- cs += val
- csc = 2**32 - cs % (2**32)
- if csc == 2**32:
- csc = 0
- inFile.write("{:d} ns {:032b}\n".format(delay, int(csc)))
- with open("vivado_project/vhdl-modules.sim/sim_1/behav/xsim/outputTimings.txt", "w") as inFile:
- for i in range(4 + pixels):
- if i%256 == 0:
- inFile.write("{:d} ns\n".format(6005))
- else:
- inFile.write("{:d} ns\n".format(315))
|