Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String vhdl字符串到字体5x7_String_Matrix_Fonts_Vhdl_Led - Fatal编程技术网

String vhdl字符串到字体5x7

String vhdl字符串到字体5x7,string,matrix,fonts,vhdl,led,String,Matrix,Fonts,Vhdl,Led,我对VHDL非常陌生,作为我的第一个项目,我创建了一个带有旋转文本的20x7 LED显示屏。现在,所有打印在显示器上的STD\u LOGIC\u VECTORs都是手动设置的 我想知道是否有可能从字符串(或字符?)获取行的STD\u LOGIC\u VECTOR表示。我找到了,但我不知道从哪里开始…要表示字体表,可以使用数组和常量。见下例: type font_array is array(0 to 127, 0 to 5) of std_logic_vector(7 downto 0)

我对VHDL非常陌生,作为我的第一个项目,我创建了一个带有旋转文本的20x7 LED显示屏。现在,所有打印在显示器上的
STD\u LOGIC\u VECTOR
s都是手动设置的


我想知道是否有可能从字符串(或字符?)获取行的
STD\u LOGIC\u VECTOR
表示。我找到了,但我不知道从哪里开始…

要表示字体表,可以使用数组和常量。见下例:

    type font_array is array(0 to 127, 0 to 5) of std_logic_vector(7 downto 0);
    constant font: font_array :=(
       (X"01",X"02",X"03",X"04",X"05",X"06"), -- row 0
       (X"11",X"12",X"13",X"14",X"15",X"16"), -- row 1
       ...
       (X"11",X"12",X"13",X"14",X"15",X"16") -- last row 
    );
要获取角色的行,可以使用函数。见示例:

    function get_font_row(char_pos, row: integer) return std_logic_vector is
        variable result: std_logic_vector(5 downto 0);
    begin
        for i in 0 to 5 loop
            result(i):=font(char_pos, i)(row);
        end loop;

        return result;
    end get_font_row;
此字符行可以组合为LED行:

    led_row<=get_font_row(ch_h,n) & get_font_row(ch_a,n) & get_font_row(ch_l,n) & ...;

led_row要实现类似您在后面的注释中要求的功能,首先需要一个转换函数char2int来寻址数组。例如:

    function char2int (chr: character) return integer is
        variable i: integer;
    begin
        case chr is
        when 'H' => i:=0;
        when 'A' => i:=1;
        when 'L' => i:=2;
        when 'O' => i:=3;
        when others => i:=4;
        end case;

        return i;
    end char2int;
然后,主要功能如您在C示例中所建议的:

    function string_to_bitfile(constant txt_str: string) return text_type is
        variable txt: text_type;
    begin
        for i in 0 to (txt_str'length-1) loop
            for j in 0 to 5 loop
                txt(6*i+j):=font(char2int(txt_str(i)),j);
            end loop;
        end loop;

        return txt;
    end string_to_bitfile;

谢谢你的建议!假设我完成了这个font_数组,并且有一个变量lenght的字符串(例如“hello”)。问题是,对于显示器上的7行中的每一行,我必须将行连接为'h'(row0)&'e'(row0)&'l'(row0)&'l'(row0)&'o'(row0),因此在您的示例中,结果如下所示。在我看来,您似乎希望连接一个字符的所有向量,但我需要连接每个字符的第一行,每个字符的第二行,等等。。还有什么方法可以在函数中实现吗?谢谢!这对我帮助很大!:)非常感谢你。它现在可以正常工作了。:)这个项目的想法是对我的女朋友说“生日快乐,亲爱的”,她今天正在庆祝20周年。如果你感兴趣,你可以看看这里。是捷克语的。如你所见,你救了我。谢谢,谢谢,谢谢!:)总是乐于拯救一对夫妇;-)