0
0 комментариев

Первостепенной задачей является формирование файла, в котором на языке Verilog описывается соответствие значения выборок для ЦАП входным значениям шины адреса.
Для формирования файла используется 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 разрядных чисел?

То есть необходимо получить не 0x1, а 01, что бы сформировать число для Verilog формата 8’h01.


Добавить комментарий