40 lines
2.5 KiB
VHDL
40 lines
2.5 KiB
VHDL
LIBRARY ieee; USE std.TEXTIO.all;
|
|
entity quine is end entity quine;
|
|
architecture beh of quine is
|
|
type str_array is array(1 to 20) of string(1 to 80);
|
|
constant src : str_array := (
|
|
"LIBRARY ieee; USE std.TEXTIO.all; ",
|
|
"entity quine is end entity quine; ",
|
|
"architecture beh of quine is ",
|
|
" type str_array is array(1 to 20) of string(1 to 80); ",
|
|
" constant src : str_array := ( ",
|
|
"begin ",
|
|
" process variable l : line; begin ",
|
|
" for i in 1 to 5 loop write(l, src(i)); writeline(OUTPUT, l); end loop; ",
|
|
" for i in 1 to 20 loop ",
|
|
" write(l, character'val(32)&character'val(32)); ",
|
|
" write(l, character'val(32)&character'val(32)); ",
|
|
" write(l, character'val(34)); write(l, src(i)); write(l,character'val(34));",
|
|
" if i /= 20 then write(l, character'val(44)); ",
|
|
" else write(l, character'val(41)&character'val(59)); end if; ",
|
|
" writeline(OUTPUT, l); ",
|
|
" end loop; ",
|
|
" for i in 6 to 20 loop write(l, src(i)); writeline(OUTPUT, l); end loop; ",
|
|
" wait; ",
|
|
" end process; ",
|
|
"end architecture beh; ");
|
|
begin
|
|
process variable l : line; begin
|
|
for i in 1 to 5 loop write(l, src(i)); writeline(OUTPUT, l); end loop;
|
|
for i in 1 to 20 loop
|
|
write(l, character'val(32)&character'val(32));
|
|
write(l, character'val(32)&character'val(32));
|
|
write(l, character'val(34)); write(l, src(i)); write(l,character'val(34));
|
|
if i /= 20 then write(l, character'val(44));
|
|
else write(l, character'val(41)&character'val(59)); end if;
|
|
writeline(OUTPUT, l);
|
|
end loop;
|
|
for i in 6 to 20 loop write(l, src(i)); writeline(OUTPUT, l); end loop;
|
|
wait;
|
|
end process;
|
|
end architecture beh;
|