vhdlでtextioパッケージを使用してイメージファイルを読み込もうとしています。 メモ帳で.jpgを開くと、私はいくつかの迷惑データを取得しますが、実際にはASCIIデータです。ここでは、これらのASCIIデータを読み込み、バイトに変換しようとしています。以下イメージファイルを読み込んでvhdlのビットに変換する方法
は私のコードです:
library ieee;
use ieee.std_logic_1164.all;
use std.textio.all;
use ieee.std_logic_textio.all;
entity file_io is
port (
clk: in std_logic;
Data: out std_logic_vector(7 downto 0)
);
end entity;
architecture behav of file_io is
signal test_data : std_logic_vector(7 downto 0);
use ieee.numeric_std.all;
use std.textio.all;
use ieee.std_logic_textio.all;
begin
File_reader:process(clk)
file f : text open read_mode is "C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg";
variable L: line;
variable var_int: integer:= 0;
variable var_char: character;
begin
if rising_edge(clk) then
while not endfile(f) loop
readline(f, L);
read(L, var_char);
var_int := character'pos(var_char);
test_data <= std_logic_vector(to_unsigned(var_int, test_data'length));
end loop;
end if;
Data <= test_data;
end process;
end architecture behav;
テストベンチ:
LIBRARY ieee;
use ieee.std_logic_1164.ALL;
use std.textio.all;
ENTITY file_io_test IS
END file_io_test;
ARCHITECTURE behavior OF file_io_test IS
use work.io.all;
signal clk: std_logic := '0';
signal Data: std_logic_vector(7 downto 0);
-- Clock period definitions
constant clk_period : time := 10 ns;
BEGIN
-- Instantiate the Unit Under Test (UUT)
UUT:
entity work.file_io(behav)
port map (
clk => clk,
Data => Data
);
-- Clock process definitions(clock with 50% duty cycle is generated here.
clk_process :process
begin
clk <= '1';
wait for clk_period/2; --for 5 ns signal is '1'.
clk <= '0';
wait for clk_period/2; --for next 5 ns signal is '0'.
end process;
end behavior;
私は波形の1バイトのみを取得しています。予想される結果は次のとおりです。クロックサイクルごとに新しいキャラクタがrreadされ、新しいバイトが取得される必要があります。
IEEE Std 1076-2008 16.4パッケージTEXTIO para 4 "この言語は、行末の表現を定義していません。実装では、CHARACTERおよびSTRING型のすべての値をファイルに書き込むことができます。実装では、行区切り文字としてCHARACTERおよびSTRING型の特定の値を使用することが許可されています。これらの値をTEXTファイルから読み取ることはできません。 [スクリーンショット](https://i.stack.imgur.com/5z9oA.jpg) – user1155120
誰があなたを落胆させたのか分かりませんが、質問を正しく聞いていると思います。 – JHBonarius