首要任务是形成一个文件,用 Verilog 语言描述 DAC 的样本值与地址总线的输入值之间的对应关系。Python 用于生成文件。下面是代码:
import math
A = 2**24 - 1
T = 1/(2**8)
n = 0
file = open("D:\TDM\sin.txt","w")
while n < 2**8:
S = A * 0.7 / 2 * math.sin(2 * math.pi * T * n) + A / 2
file.write("if(addr = 8'd" + str(n) + ")" + "out_sample <= 24'd" + str(S) + "; \n")
n += 1
file.close()
结果是一个文件,其内容的片段以 Verilog 格式显示如下:
введите if(addr = 8'd0)out_sample <= 24'd8388607.5;
if(addr = 8'd1)out_sample <= 24'd8532714.21355256;
if(addr = 8'd2)out_sample <= 24'd8676734.122609375;
if(addr = 8'd3)out_sample <= 24'd8820580.474962479;
if(addr = 8'd4)out_sample <= 24'd8964166.622947972;
if(addr = 8'd5)out_sample <= 24'd9107406.075639347;
if(addr = 8'd6)out_sample <= 24'd9250212.550946364;
if(addr = 8'd7)out_sample <= 24'd9392500.02758818;
if(addr = 8'd8)out_sample <= 24'd9534182.796909336;
if(addr = 8'd9)out_sample <= 24'd9675175.514507454;
if(addr = 8'd10)out_sample <= 24'd9815393.251641508;
该脚本可以正常工作,但数字是十进制格式。为了提高此代码片段的可读性,有必要将这些数字转换为十六进制。但是在使用命令的情况下
hex()
假设数字 1 看起来像 0x1。如何获取不带前缀“0x”的值并将它们转换为 8 位数字的单个显示?
也就是,为了形成一个8'h01格式的Verilog数字,需要得到的不是0x1,而是01。
结果:
更多
format()例子。