数字IC设计随笔之四(从shell重定向命令说起)

从shell重定向命令说起

Linux shell中的重定向常与文件描述符相关,常见的文件描述符为0(标准输入:键盘)、1(标准输出:显示器)和2(标准错误输出:显示器),因此,一些简单的文件相关操作可以在命令行实现,接下来将其应用到实践之中。

在进行可编程存储器仿真时,往往需要将已编程的数据初始化为出厂值0xFF,在实际中,编程数据更新的简单代码如下,即把待编程值从mem数组更新至文件中。

reg [7:0] mem[0:31];

task update_mem();
        integer fid; 
        integer n;
        begin
        fid = $fopen(mem_file);
        for (n = 0; n <=31; n=n+1) begin
            $fdisplay(fid,"@%h %h",n, mem[n]);
        end
        $fclose(fid);
        end
    endtask

上述简单的代码首先声明存储空间大小,如该例中mem数组。写入数据后将其保存在文件中,下次仿真时从文件中读取。

然而,在需要对空白存储器进行仿真时,即将update_mem任务保存的文件中各地址对应的值设为出厂值0xFF,linux下重定向可以实现文件的读写操作。

#! /usr/bin/bash
filename=$1
awk '$1 ~/@[0-9a-f]{8}/{$2="FF";print}' $filename 1<> $filename

将该文件保存为mem_init.sh,在命令行执行./mem_init.sh memory_hex.txt。

或者直接在命令行输入:
awk ‘$1 ~/@[0-9a-f]{8}/{$2=“FF”;print}’ memory_hex.txt 1<> memory_hex.txt。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值