首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Testbench与无约束std_logic_vector

Testbench与无约束std_logic_vector
EN

Stack Overflow用户
提问于 2015-07-15 16:08:51
回答 1查看 294关注 0票数 0

我正在为SPI接口编写一个测试平台。该接口基本上由四个信号组成:

  1. spi_clk :由主程序检测的信号时钟
  2. spi_cs :由主控驱动的芯片选择信号
  3. spi_miso :主程序的输入信号(从机输出信号)
  4. spi_mosi :主程序的输出信号(从机输入信号) 我用分析器跟踪SPI总线,得到显示在总线上执行的每一个操作的文件。每次操作都从芯片选择的下降边缘开始,以上升边缘结束,芯片选择结束。档案是:

..诸若此类

每一行表示总线上的spi操作。我编写测试平台的问题是关于SPI操作的长度。很容易看出,在一个操作中传输的字节是可变的。我的目的是使用函数readlinehread逐行获取值并输入我的模块,例如:

代码语言:javascript
复制
process
        file miso_file : TEXT is in "TestBench/MISO_DATA.txt";
        variable miso_line : LINE;
        variable VAR_miso : std_logic_vector(63 downto 0)  := (others => '0');
        file mosi_file : TEXT is in "TestBench/MOSI_DATA.txt";
        variable mosi_line : LINE;
        variable VAR_mosi : std_logic_vector(63 downto 0) := (others => '0');
        variable mosi_good : boolean;
        variable miso_good : boolean;
    begin
        
        ... some code ...

        while not(endfile(miso_file)) loop
            
            readline(miso_file,miso_line);
            hread(miso_line,VAR_miso,miso_good);

            ...some code...

            end loop;
    
        wait;
    end process;

当行由16个字符( 64位)组成时,此代码工作,但当大小不同时,则不能工作。有人有什么建议吗?

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-15 18:00:44

一旦hread()消耗了行,您就不知道它最初包含了多少字节。您需要在调用miso_line'length之前保存hread(),然后让testbench使用它来确定要发送的向量的哪些部分。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31435635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档