mif python

import numpy as np
import matplotlib.pyplot as plt
import os
import shutil


DEPTH = 512
WIDTH = 8
base = 2**(WIDTH - 1) - 1

headfile = '''-- Quartus II generated Memory Initialization File (.mif)

DEPTH = 256;
WIDTH = 8;

ADDRESS_RADIX = HEX;
DATA_RADIX = HEX;

CONTENT BEGIN
'''

x = np.linspace(0, 2*np.pi, DEPTH)
y = (DEPTH/2*np.sin(x)+DEPTH/2)
y1 = y.astype(int)
i= range(DEPTH)
#y1 = int(base + (-1 if i >= DEPTH // 2 else 1) * base) # 方波
#y1 = int(base + sin(i / DEPTH * 2 * pi) * base) # 正弦波
#y1 = int(i / DEPTH * (2 ** WIDTH - 1)) # 锯齿波
#y1 = int((1 - abs((i * 2 / (DEPTH - 1)) - 1)) * (2**WIDTH - 1))  # 三角波


plt.plot(x,y)
plt.show()

mif = open('sin.mif', 'w')
mif.writelines(headfile)
i = 0
for item in y1:
    mif.writelines(str(hex(i)[2:]))#wirtelines()只能输入字符串类型
    mif.writelines(' : ')
    mif.writelines(str(hex(item)[2:]))
    mif.writelines(';')
    mif.writelines('\n')
    i += 1
mif.write('END;')

Shell

#!/bin/bash
#
echo "Start==============Replace==========>"
Num_temp=0 
let num_ascii=0
let num_ascii2=0

function check(){
    local a="$1"
    printf "%d" "$a" &>/dev/null && echo "integer" && return
    printf "%d" "$(echo $a|sed 's/^[+-]\?0\+//')" &>/dev/null && echo "integer" && return
    printf "%f" "$a" &>/dev/null && echo "number" && return
    [ ${#a} -eq 1 ] && echo "char" && return
    echo "string"
}

function sin_hex(){
res=$1
let j=0
     for((m=1;m<=$res;m++))
       do
         sin_y=`echo $m | awk -v xx="$m" -v yy="$res" '{printf("%x",(sin(3.14159265358979*2*xx/yy)+1)*(yy-1)/2)}'`
         echo "res" $res $m $sin_y 
          if [ $j -le 6 ] ;then
             echo -n $sin_y" " >> hex.rom
             let j=j+1
          else
              let j=0
              echo -n $sin_y" " >> hex.rom 
              echo "" >> hex.rom
          fi
       done 
}

function gen_rom() {
echo "read file: "$1
cat "./"$1 | while read line || [[ -n ${line} ]]
  do 
                        echo $line
                        Num_temp=`echo $line | awk -F'[(,) ]+' '{print NF}'`
                        #echo "             "$Num_temp
                        for((m=1;m<=Num_temp;m++))
                           do
                                 str_find=` echo $line | awk -v var="$m" -F'[(,) ]+' '{print $var}' `
                                 #echo $str_find
                                 printf "\x$str_find" >> binary.rom
                                 #echo $t
                                 #printf \\x`printf %x $num_ascii2`
                                 #echo $str_find ${str_find:0:1} ${str_find:1:1} $num_ascii $(check num_ascii) $t $(check $t) $ascii_new  
                                 #echo "obase=2; ibase=10;$t"|bc 
                                 #echo -n $t >> binary.rom
                           done 
                        #echo "END"                        
  done
}

rm -rf ./hex.rom
res=8
let num=2**$res
echo $num
sin_hex $num;
rm -rf binary.rom
gen_rom "hex.rom"


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 有多种方法可以使用Python读取mif文件。一种方法是使用fiona库,可以直接适应fiona去读取mid/mif文件。这种方法的优点是读取速度快且占用内存较少。可以使用parse_mif函数来读取mif文件,该函数可以指定需要读取的列,并可以配置编码等参数。函数内部使用了fiona库和shapely库来处理文件和几何数据。最后返回一个GeoDataFrame对象,其中包含了读取的数据和几何信息。\[2\] 另一种方法是使用geopandas库来读取mif文件。可以使用geopandas的read_file函数来读取mif文件,可以指定编码等参数。读取后可以将结果转换为GeoDataFrame对象,其中包含了读取的数据和几何信息。\[3\] 以上是两种常用的方法,根据具体需求选择适合的方法来读取mif文件。 #### 引用[.reference_title] - *1* [GDAL读取midmif文件python版)](https://blog.csdn.net/u011210523/article/details/95808300)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [使用python读取mid/mif文件](https://blog.csdn.net/MoseSky/article/details/88861823)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值