VHDL-testbench之txt按行读

VHDL-testbench之txt按行读

对txt进行按行读取,以";"结束

--//使用的Library库文件
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
--//TXT相关的Library库
use IEEE.STD_LOGIC_TEXTIO.all;
use STD.TEXTIO.ALL;

--//实体
entity test is
--  Port ( );
end test;

--//构造体
architecture Behavioral of test is

--//定义UDP_TEST元件及其端口
COMPONENT UDP_TEST
PORT(
    DATA_IN     :IN STD_LOGIC_VECTOR(7 DOWNTO 0);       
    CE          :IN STD_LOGIC;                          
    clk         :IN STD_LOGIC                           
);
END COMPONENT;

--//定义常量(时间)
CONSTANT    clk_period : time := 5ns;
--//定义信号(与UDP_TEST元件对应)
signal  clk         :STD_LOGIC:='0';
signal  DATA_IN     :STD_LOGIC_VECTOR(7 DOWNTO 0);
signal  CE          :STD_LOGIC;



begin
    --//时钟信号,频率为(1/clk_period)
    clk <= not clk after(clk_period/2);    
    --//打开第一个txt的进程file_stdlogic1
    file_stdlogic1:process
    variable vline:line;
    variable v:std_logic_vector(7 downto 0);
    file invect:text is "C:\Users\Administrator\Desktop\data_in.txt";
    begin
    wait until rising_edge(clk);
        if clk'event and clk='1' then
            if not(endfile(invect)) then
                readline(invect,vline);
                read(vline,v);
                data_in <= v;
            end if;
        end if;
    end process file_stdlogic1;
    --//打开第二个txt的进程file_stdlogic2
    file_stdlogic2:process
    variable vline:line;
    variable v:std_logic;
    file invect:text is "C:\Users\Administrator\Desktop\ce.txt";
    begin
        wait until rising_edge(clk);
        if clk'event and clk='1' then
            if not(endfile(invect)) then
                readline(invect,vline);
                read(vline,v);
                ce <= v;
            end if;
        end if;
    end process file_stdlogic2;
    
    --//端口映射
    u1:UDP_TEST port map(
        clk =>clk,
        data_in => data_in,
        ce => ce
    );
end Behavioral;
  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VHDLtestbench是用来对设计进行仿真测试的,通常包括以下几个部分: 1. Entity声明:与设计部分的entity声明相同,但是输入输出端口可以是信号而不是端口。 2. Architecture声明:与设计部分的architecture声明相同,但是包括一个process块来模拟输入信号,并将仿真结果输出到控制台。 3. 时钟和复位信号:模拟输入信号的过程应该包括一个时钟信号和一个复位信号。 4. 仿真输入:通过process块来模拟输入信号。 5. 仿真输出:在仿真结束后,在控制台上打印输出结果。 下面是一个简单的VHDL testbench示例: ```vhdl entity my_design_tb is end my_design_tb; architecture sim of my_design_tb is signal clk : std_logic := '0'; signal rst : std_logic := '0'; signal input_sig : std_logic_vector(7 downto 0) := (others => '0'); signal output_sig : std_logic_vector(7 downto 0); begin -- Generate clock signal clk <= not clk after 5 ns; -- Generate reset signal process begin rst <= '1'; wait for 10 ns; rst <= '0'; wait; end process; -- Instantiate the design under test my_design_inst : entity work.my_design port map ( clk => clk, rst => rst, input => input_sig, output => output_sig ); -- Stimulate the inputs and monitor the outputs process begin -- Stimulate the inputs input_sig <= "00000000"; wait for 20 ns; input_sig <= "00000001"; wait for 20 ns; input_sig <= "00000010"; wait for 20 ns; input_sig <= "00000011"; wait for 20 ns; input_sig <= "00000100"; wait for 20 ns; input_sig <= "00000101"; wait for 20 ns; input_sig <= "00000110"; wait for 20 ns; input_sig <= "00000111"; wait for 20 ns; -- Monitor the outputs report "Output value: " & to_string(output_sig); wait; end process; end sim; ``` 这个testbench包括了一个时钟信号、一个复位信号和一个8位的输入信号,用来对一个名为“my_design”的设计进行仿真测试。在仿真过程中,输入信号会在一定的时间间隔内改变,并且仿真结果会输出到控制台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值