String vhdl字符串到字体5x7
我对VHDL非常陌生,作为我的第一个项目,我创建了一个带有旋转文本的20x7 LED显示屏。现在,所有打印在显示器上的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)
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周年。如果你感兴趣,你可以看看这里。是捷克语的。如你所见,你救了我。谢谢,谢谢,谢谢!:)总是乐于拯救一对夫妇;-)