使用python 产生FPGA用的mif 波形文件

正弦波

复制代码
import matplotlib.pyplot as plt
import numpy as np
ADDR_Bit = 10
Data_Bit = 10



P  = 0
Fs = 2**ADDR_Bit ## sample cnt
t= np.linspace(0,(Fs-1)/Fs,Fs)
#DC = 2**(Data_Bit-1)
##DC = 51.2
DC = 42.7

Gain = 42.7  
#Gain = 2**(Data_Bit-1)
sin_singal = Gain*np.sin(2*np.pi*t+np.pi*P/180)+DC
plt.figure(1)
plt.plot(sin_singal)
out_signal = []
outfile = open("sin_wav_1024.mem",'wt')
for i in range(Fs):
    outdata = int(np.ceil(sin_singal[i]))
    out_signal.append(outdata)
    outfile.write("%X\n"%outdata)
outfile.close()
plt.figure(2)
plt.plot(out_signal)

三角波

复制代码
import matplotlib.pyplot as plt
import numpy as np
ADDR_Bit = 10
Data_Bit = 10


P  = 0
Fs = 2**ADDR_Bit ## sample cnt
t= np.linspace(0,(Fs-1)/Fs,Fs)
DC = 2**(Data_Bit-1)
Gain = 42.7  #Gain = 2**(Data_Bit-1)


half_size= 2**(ADDR_Bit-1)
tri = np.linspace(0,(half_size-1)/half_size,half_size)
tri_signal =[]
for i in range(half_size):
    tri_signal.append(tri[i]*Gain+DC)
for i in range(half_size):
    tri_signal.append(np.flip(tri)[i]*Gain+DC)
plt.figure(1)
plt.plot(tri_signal)

out_signal = []
outfile = open("tri_wav_1024.mem","wt")
for i in range(Fs):
    outdata = int(np.ceil(tri_signal[i]))
    out_signal.append(outdata)
    outfile.write("%X\n"%outdata)
outfile.close()
plt.figure(2)
plt.plot(out_signal)

心形

复制代码
import matplotlib.pyplot as plt
import numpy as np
ADDR_Bit = 12
Data_Bit = 7

##数据深度2^12
N= 2**ADDR_Bit
##数据宽度2^7
P=12**Data_Bit
a=10
#a5(1:1:N)=0;
a5 = np.zeros(N,dtype=np.double)
#b5=1:1:N;
b5 = np.linspace(1,N,N)
a5 = np.real(np.round((P/4-4)*(abs((b5-N/2)/1000)**(2/3)+(0.9*np.sqrt((3.3-((b5-N/2)/1000)**2)))*np.sin(a*np.pi*((b5-N/2))/1000)+1.8)))
plt.plot(b5,a5,'r')