vertigo_vhdl 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (183) hide show
  1. checksums.yaml +7 -0
  2. data/bin/vertigo +7 -0
  3. data/lib/vertigo.rb +4 -0
  4. data/lib/vertigo/ast.rb +87 -0
  5. data/lib/vertigo/ast_vertigo_rkgen.rb +607 -0
  6. data/lib/vertigo/code.rb +57 -0
  7. data/lib/vertigo/compiler.rb +61 -0
  8. data/lib/vertigo/generic_lexer.rb +61 -0
  9. data/lib/vertigo/generic_parser.rb +44 -0
  10. data/lib/vertigo/indent.rb +20 -0
  11. data/lib/vertigo/lexer.rb +172 -0
  12. data/lib/vertigo/parser.rb +1458 -0
  13. data/lib/vertigo/pretty_printer.rb +749 -0
  14. data/lib/vertigo/runner.rb +115 -0
  15. data/lib/vertigo/tb_generator.rb +81 -0
  16. data/lib/vertigo/template.tb.vhd +72 -0
  17. data/lib/vertigo/token.rb +67 -0
  18. data/lib/vertigo/version.rb +3 -0
  19. data/lib/vertigo/vertigo.rkg +354 -0
  20. data/lib/vertigo/visitor_vertigo_rkgen.rb +447 -0
  21. data/tests/ghdl_tests/fsm.vhd +98 -0
  22. data/tests/ghdl_tests/fsm_synth.vhd +248 -0
  23. data/tests/ghdl_tests/test_fsm.vhd +162 -0
  24. data/tests/parser_tests/else.vhd +64 -0
  25. data/tests/parser_tests/test_MUST_fail.vhd +1 -0
  26. data/tests/parser_tests/test_accelerator.vhd +160 -0
  27. data/tests/parser_tests/test_accelerator_pp.vhd +144 -0
  28. data/tests/parser_tests/test_aggregate.vhd +17 -0
  29. data/tests/parser_tests/test_aggregate_pp.vhd +15 -0
  30. data/tests/parser_tests/test_archi_1.vhd +45 -0
  31. data/tests/parser_tests/test_archi_1_pp.vhd +41 -0
  32. data/tests/parser_tests/test_array_array_00.vhd +25 -0
  33. data/tests/parser_tests/test_array_array_00_pp.vhd +25 -0
  34. data/tests/parser_tests/test_array_urange.vhd +25 -0
  35. data/tests/parser_tests/test_array_urange_pp.vhd +25 -0
  36. data/tests/parser_tests/test_chu-1.vhd +80 -0
  37. data/tests/parser_tests/test_chu-1_pp.vhd +104 -0
  38. data/tests/parser_tests/test_concat.vhd +11 -0
  39. data/tests/parser_tests/test_concat_pp.vhd +14 -0
  40. data/tests/parser_tests/test_counter.vhd +35 -0
  41. data/tests/parser_tests/test_counter_pp.vhd +35 -0
  42. data/tests/parser_tests/test_de2.vhd +358 -0
  43. data/tests/parser_tests/test_de2_pp.vhd +274 -0
  44. data/tests/parser_tests/test_encode.vhd +2679 -0
  45. data/tests/parser_tests/test_encode_pp.vhd +2549 -0
  46. data/tests/parser_tests/test_fsm.vhd +162 -0
  47. data/tests/parser_tests/test_fsm_pp.vhd +125 -0
  48. data/tests/parser_tests/test_fsm_synth.vhd +248 -0
  49. data/tests/parser_tests/test_fsm_synth_pp.vhd +197 -0
  50. data/tests/parser_tests/test_function-01.vhd +33 -0
  51. data/tests/parser_tests/test_function-01_pp.vhd +18 -0
  52. data/tests/parser_tests/test_lfsr.vhd +75 -0
  53. data/tests/parser_tests/test_lfsr_pp.vhd +44 -0
  54. data/tests/parser_tests/test_microwatt_cache_ram.vhd +1 -0
  55. data/tests/parser_tests/test_microwatt_cache_ram_pp.vhd +68 -0
  56. data/tests/parser_tests/test_microwatt_common.vhd +1 -0
  57. data/tests/parser_tests/test_microwatt_common_pp.vhd +336 -0
  58. data/tests/parser_tests/test_microwatt_control.vhd +1 -0
  59. data/tests/parser_tests/test_microwatt_control_pp.vhd +187 -0
  60. data/tests/parser_tests/test_microwatt_core.vhd +1 -0
  61. data/tests/parser_tests/test_microwatt_core_debug.vhd +1 -0
  62. data/tests/parser_tests/test_microwatt_core_debug_pp.vhd +104 -0
  63. data/tests/parser_tests/test_microwatt_core_pp.vhd +231 -0
  64. data/tests/parser_tests/test_microwatt_core_tb.vhd +1 -0
  65. data/tests/parser_tests/test_microwatt_core_tb_pp.vhd +43 -0
  66. data/tests/parser_tests/test_microwatt_countzero.vhd +1 -0
  67. data/tests/parser_tests/test_microwatt_countzero_pp.vhd +120 -0
  68. data/tests/parser_tests/test_microwatt_countzero_tb.vhd +1 -0
  69. data/tests/parser_tests/test_microwatt_countzero_tb_pp.vhd +70 -0
  70. data/tests/parser_tests/test_microwatt_cr_file.vhd +1 -0
  71. data/tests/parser_tests/test_microwatt_cr_file_pp.vhd +74 -0
  72. data/tests/parser_tests/test_microwatt_cr_hazard.vhd +1 -0
  73. data/tests/parser_tests/test_microwatt_cr_hazard_pp.vhd +51 -0
  74. data/tests/parser_tests/test_microwatt_crhelpers.vhd +1 -0
  75. data/tests/parser_tests/test_microwatt_crhelpers_pp.vhd +48 -0
  76. data/tests/parser_tests/test_microwatt_dcache.vhd +1 -0
  77. data/tests/parser_tests/test_microwatt_dcache_pp.vhd +481 -0
  78. data/tests/parser_tests/test_microwatt_dcache_tb.vhd +1 -0
  79. data/tests/parser_tests/test_microwatt_dcache_tb_pp.vhd +98 -0
  80. data/tests/parser_tests/test_microwatt_decode1.vhd +1 -0
  81. data/tests/parser_tests/test_microwatt_decode1_pp.vhd +138 -0
  82. data/tests/parser_tests/test_microwatt_decode2.vhd +1 -0
  83. data/tests/parser_tests/test_microwatt_decode2_pp.vhd +300 -0
  84. data/tests/parser_tests/test_microwatt_decode_types.vhd +1 -0
  85. data/tests/parser_tests/test_microwatt_decode_types_pp.vhd +67 -0
  86. data/tests/parser_tests/test_microwatt_divider.vhd +1 -0
  87. data/tests/parser_tests/test_microwatt_divider_pp.vhd +132 -0
  88. data/tests/parser_tests/test_microwatt_divider_tb.vhd +1 -0
  89. data/tests/parser_tests/test_microwatt_divider_tb_pp.vhd +95 -0
  90. data/tests/parser_tests/test_microwatt_dmi_dtm_dummy.vhd +1 -0
  91. data/tests/parser_tests/test_microwatt_dmi_dtm_dummy_pp.vhd +29 -0
  92. data/tests/parser_tests/test_microwatt_dmi_dtm_tb.vhd +1 -0
  93. data/tests/parser_tests/test_microwatt_dmi_dtm_tb_pp.vhd +197 -0
  94. data/tests/parser_tests/test_microwatt_dmi_dtm_xilinx.vhd +1 -0
  95. data/tests/parser_tests/test_microwatt_dmi_dtm_xilinx_pp.vhd +139 -0
  96. data/tests/parser_tests/test_microwatt_execute1.vhd +1 -0
  97. data/tests/parser_tests/test_microwatt_execute1_pp.vhd +689 -0
  98. data/tests/parser_tests/test_microwatt_fetch1.vhd +1 -0
  99. data/tests/parser_tests/test_microwatt_fetch1_pp.vhd +88 -0
  100. data/tests/parser_tests/test_microwatt_fetch2.vhd +1 -0
  101. data/tests/parser_tests/test_microwatt_fetch2_pp.vhd +79 -0
  102. data/tests/parser_tests/test_microwatt_glibc_random.vhd +1 -0
  103. data/tests/parser_tests/test_microwatt_glibc_random_helpers.vhd +1 -0
  104. data/tests/parser_tests/test_microwatt_glibc_random_helpers_pp.vhd +25 -0
  105. data/tests/parser_tests/test_microwatt_glibc_random_pp.vhd +41 -0
  106. data/tests/parser_tests/test_microwatt_gpr_hazard.vhd +1 -0
  107. data/tests/parser_tests/test_microwatt_gpr_hazard_pp.vhd +68 -0
  108. data/tests/parser_tests/test_microwatt_helpers.vhd +1 -0
  109. data/tests/parser_tests/test_microwatt_helpers_pp.vhd +153 -0
  110. data/tests/parser_tests/test_microwatt_icache.vhd +1 -0
  111. data/tests/parser_tests/test_microwatt_icache_pp.vhd +337 -0
  112. data/tests/parser_tests/test_microwatt_icache_tb.vhd +1 -0
  113. data/tests/parser_tests/test_microwatt_icache_tb_pp.vhd +104 -0
  114. data/tests/parser_tests/test_microwatt_insn_helpers.vhd +1 -0
  115. data/tests/parser_tests/test_microwatt_insn_helpers_pp.vhd +208 -0
  116. data/tests/parser_tests/test_microwatt_loadstore1.vhd +1 -0
  117. data/tests/parser_tests/test_microwatt_loadstore1_pp.vhd +222 -0
  118. data/tests/parser_tests/test_microwatt_logical.vhd +1 -0
  119. data/tests/parser_tests/test_microwatt_logical_pp.vhd +87 -0
  120. data/tests/parser_tests/test_microwatt_multiply.vhd +1 -0
  121. data/tests/parser_tests/test_microwatt_multiply_pp.vhd +84 -0
  122. data/tests/parser_tests/test_microwatt_multiply_tb.vhd +1 -0
  123. data/tests/parser_tests/test_microwatt_multiply_tb_pp.vhd +75 -0
  124. data/tests/parser_tests/test_microwatt_plru.vhd +1 -0
  125. data/tests/parser_tests/test_microwatt_plru_pp.vhd +46 -0
  126. data/tests/parser_tests/test_microwatt_plru_tb.vhd +1 -0
  127. data/tests/parser_tests/test_microwatt_plru_tb_pp.vhd +93 -0
  128. data/tests/parser_tests/test_microwatt_ppc_fx_insns.vhd +1 -0
  129. data/tests/parser_tests/test_microwatt_ppc_fx_insns_pp.vhd +665 -0
  130. data/tests/parser_tests/test_microwatt_register_file.vhd +1 -0
  131. data/tests/parser_tests/test_microwatt_register_file_pp.vhd +86 -0
  132. data/tests/parser_tests/test_microwatt_rotator.vhd +1 -0
  133. data/tests/parser_tests/test_microwatt_rotator_pp.vhd +149 -0
  134. data/tests/parser_tests/test_microwatt_rotator_tb.vhd +1 -0
  135. data/tests/parser_tests/test_microwatt_rotator_tb_pp.vhd +134 -0
  136. data/tests/parser_tests/test_microwatt_sim_bram.vhd +1 -0
  137. data/tests/parser_tests/test_microwatt_sim_bram_helpers.vhd +1 -0
  138. data/tests/parser_tests/test_microwatt_sim_bram_helpers_pp.vhd +52 -0
  139. data/tests/parser_tests/test_microwatt_sim_bram_pp.vhd +53 -0
  140. data/tests/parser_tests/test_microwatt_sim_console.vhd +1 -0
  141. data/tests/parser_tests/test_microwatt_sim_console_pp.vhd +43 -0
  142. data/tests/parser_tests/test_microwatt_sim_jtag.vhd +1 -0
  143. data/tests/parser_tests/test_microwatt_sim_jtag_pp.vhd +64 -0
  144. data/tests/parser_tests/test_microwatt_sim_jtag_socket.vhd +1 -0
  145. data/tests/parser_tests/test_microwatt_sim_jtag_socket_pp.vhd +36 -0
  146. data/tests/parser_tests/test_microwatt_sim_uart.vhd +1 -0
  147. data/tests/parser_tests/test_microwatt_sim_uart_pp.vhd +90 -0
  148. data/tests/parser_tests/test_microwatt_soc.vhd +1 -0
  149. data/tests/parser_tests/test_microwatt_soc_pp.vhd +195 -0
  150. data/tests/parser_tests/test_microwatt_utils.vhd +1 -0
  151. data/tests/parser_tests/test_microwatt_utils_pp.vhd +39 -0
  152. data/tests/parser_tests/test_microwatt_wishbone_arbiter.vhd +1 -0
  153. data/tests/parser_tests/test_microwatt_wishbone_arbiter_pp.vhd +54 -0
  154. data/tests/parser_tests/test_microwatt_wishbone_bram_tb.vhd +1 -0
  155. data/tests/parser_tests/test_microwatt_wishbone_bram_tb_pp.vhd +157 -0
  156. data/tests/parser_tests/test_microwatt_wishbone_bram_wrapper.vhd +1 -0
  157. data/tests/parser_tests/test_microwatt_wishbone_bram_wrapper_pp.vhd +62 -0
  158. data/tests/parser_tests/test_microwatt_wishbone_debug_master.vhd +1 -0
  159. data/tests/parser_tests/test_microwatt_wishbone_debug_master_pp.vhd +124 -0
  160. data/tests/parser_tests/test_microwatt_wishbone_types.vhd +1 -0
  161. data/tests/parser_tests/test_microwatt_wishbone_types_pp.vhd +38 -0
  162. data/tests/parser_tests/test_microwatt_writeback.vhd +1 -0
  163. data/tests/parser_tests/test_microwatt_writeback_pp.vhd +87 -0
  164. data/tests/parser_tests/test_package-1.vhd +68 -0
  165. data/tests/parser_tests/test_package-1_pp.vhd +53 -0
  166. data/tests/parser_tests/test_precedence.vhd +13 -0
  167. data/tests/parser_tests/test_precedence_pp.vhd +16 -0
  168. data/tests/parser_tests/test_selected_sig.vhd +14 -0
  169. data/tests/parser_tests/test_selected_sig_pp.vhd +10 -0
  170. data/tests/parser_tests/test_slice.vhd +15 -0
  171. data/tests/parser_tests/test_slice_pp.vhd +16 -0
  172. data/tests/parser_tests/test_tb-00.vhd +94 -0
  173. data/tests/parser_tests/test_tb-00_pp.vhd +71 -0
  174. data/tests/parser_tests/test_type_decl_02.vhd +9 -0
  175. data/tests/parser_tests/test_type_decl_02_pp.vhd +11 -0
  176. data/tests/parser_tests/test_use.vhd +7 -0
  177. data/tests/parser_tests/test_use_pp.vhd +10 -0
  178. data/tests/parser_tests/test_while_1.vhd +38 -0
  179. data/tests/parser_tests/test_while_1_pp.vhd +26 -0
  180. data/tests/parser_tests/test_with-00.vhd +21 -0
  181. data/tests/parser_tests/test_with-00_pp.vhd +12 -0
  182. data/tests/tb_gen_tests/test_accelerator.vhd +160 -0
  183. metadata +224 -0
@@ -0,0 +1,25 @@
1
+ -- generated by Vertigo VHDL tool
2
+ library ieee;
3
+ use ieee.std_logic_1164.all;
4
+ architecture test_var of test is
5
+ begin
6
+
7
+
8
+ test : process
9
+
10
+ type testit is array(natural range <>) of boolean;
11
+
12
+ type mem is array(natural range <>,natural range <>) of std_logic;
13
+ variable tempcond : boolean := true;
14
+ variable ram2 : mem(0 to 7,0 to 7) := (
15
+ ('0','0','0','0','0','0','0','0'),
16
+ ('0','0','0','0','0','0','0','0'),
17
+ ('0','0','0','0','0','0','0','0'),
18
+ ('0','0','0','0','0','0','0','0'),
19
+ ('0','0','0','0','0','0','0','0'),
20
+ ('0','0','0','0','0','0','0','0'),
21
+ ('0','0','0','0','0','0','0','0'),
22
+ ('0','0','0','0','0','0','0','0'));
23
+ begin
24
+ end process;
25
+ end test_var;
@@ -0,0 +1,25 @@
1
+ library ieee;
2
+ use ieee.std_logic_1164.all;
3
+
4
+ architecture test_var of test is
5
+
6
+
7
+ begin -- test_var
8
+
9
+ test : process
10
+ type TestIt is array(natural range <>) of boolean;
11
+ type Mem is array (natural range <>, natural range <>) of std_logic;
12
+ variable TempCond : boolean := true;
13
+ variable RAM2 : Mem (0 to 7, 0 to 7) :=
14
+ (('0', '0', '0', '0', '0', '0', '0', '0'),
15
+ ('0', '0', '0', '0', '0', '0', '0', '0'),
16
+ ('0', '0', '0', '0', '0', '0', '0', '0'),
17
+ ('0', '0', '0', '0', '0', '0', '0', '0'),
18
+ ('0', '0', '0', '0', '0', '0', '0', '0'),
19
+ ('0', '0', '0', '0', '0', '0', '0', '0'),
20
+ ('0', '0', '0', '0', '0', '0', '0', '0'),
21
+ ('0', '0', '0', '0', '0', '0', '0', '0'));
22
+ begin -- process test
23
+ end process test;
24
+
25
+ end test_var;
@@ -0,0 +1,25 @@
1
+ -- generated by Vertigo VHDL tool
2
+ library ieee;
3
+ use ieee.std_logic_1164.all;
4
+ architecture test_var of test is
5
+ begin
6
+
7
+
8
+ test : process
9
+
10
+ type testit is array(natural range <>) of boolean;
11
+
12
+ type mem is array(natural range <>,natural range <>) of std_logic;
13
+ variable tempcond : boolean := true;
14
+ variable ram2 : mem(0 to 7,0 to 7) := (
15
+ ('0','0','0','0','0','0','0','0'),
16
+ ('0','0','0','0','0','0','0','0'),
17
+ ('0','0','0','0','0','0','0','0'),
18
+ ('0','0','0','0','0','0','0','0'),
19
+ ('0','0','0','0','0','0','0','0'),
20
+ ('0','0','0','0','0','0','0','0'),
21
+ ('0','0','0','0','0','0','0','0'),
22
+ ('0','0','0','0','0','0','0','0'));
23
+ begin
24
+ end process;
25
+ end test_var;
@@ -0,0 +1,80 @@
1
+ library ieee;
2
+ use ieee.std_logic_1164.all;
3
+ use ieee.numeric_std.all;
4
+
5
+ entity ram_ctrl_test is
6
+ port(
7
+ clk, reset: in std_logic;
8
+ sw: in std_logic_vector(7 downto 0);
9
+ btn: in std_logic_vector(2 downto 0);
10
+ led: out std_logic_vector(7 downto 0);
11
+ ad: out std_logic_vector(17 downto 0);
12
+ we_n, oe_n: out std_logic;
13
+ dio_a: inout std_logic_vector(15 downto 0);
14
+ ce_a_n, ub_a_n, lb_a_n: out std_logic
15
+ );
16
+ end ram_ctrl_test;
17
+
18
+ architecture arch of ram_ctrl_test is
19
+ constant ADDR_W: integer:=18;
20
+ constant DATA_W: integer:=16;
21
+ signal addr: std_logic_vector(ADDR_W-1 downto 0);
22
+ signal data_f2s, data_s2f:
23
+ std_logic_vector(DATA_W-1 downto 0);
24
+ signal mem, rw: std_logic;
25
+ signal data_reg: std_logic_vector(7 downto 0);
26
+ signal db_btn: std_logic_vector(2 downto 0);
27
+
28
+ begin
29
+ ctrl_unit: entity work.sram_ctrl
30
+ port map(
31
+ clk=>clk, reset=>reset,
32
+ mem=>mem, rw =>rw, addr=>addr, data_f2s=>data_f2s,
33
+ ready=>open, data_s2f_r=>data_s2f,
34
+ data_s2f_ur=>open, ad=>ad,
35
+ we_n=>we_n, oe_n=>oe_n, dio_a=>dio_a,
36
+ ce_a_n=>ce_a_n, ub_a_n=>ub_a_n, lb_a_n=>lb_a_n);
37
+
38
+ debounce_unit0: entity work.debounce
39
+ port map(
40
+ clk=>clk, reset=>reset, sw=>btn(0),
41
+ db_level=>open, db_tick=>db_btn(0));
42
+ debounce_unit1: entity work.debounce
43
+ port map(
44
+ clk=>clk, reset=>reset, sw=>btn(1),
45
+ db_level=>open, db_tick=>db_btn(1));
46
+ debounce_unit2: entity work.debounce
47
+ port map(
48
+ clk=>clk, reset=>reset, sw=>btn(2),
49
+ db_level=>open, db_tick=>db_btn(2));
50
+
51
+ --data registers
52
+ process(clk)
53
+ begin
54
+ if (clk'event and clk='1') then
55
+ if (db_btn(0)='1') then
56
+ data_reg <= sw;
57
+ end if;
58
+ end if;
59
+ end process;
60
+ -- address
61
+ addr <= "0000000000" & sw;
62
+ --
63
+ process(db_btn,data_reg)
64
+ begin
65
+ data_f2s <= (others=>'0');
66
+ if db_btn(1)='1' then -- write
67
+ mem <= '1';
68
+ rw <= '0';
69
+ data_f2s <= "00000000" & data_reg;
70
+ elsif db_btn(2)='1' then -- read
71
+ mem <= '1';
72
+ rw <= '1';
73
+ else
74
+ mem <= '0';
75
+ rw <= '1';
76
+ end if;
77
+ end process;
78
+ -- output
79
+ led <= data_s2f(7 downto 0);
80
+ end arch;
@@ -0,0 +1,104 @@
1
+ -- generated by Vertigo VHDL tool
2
+ library ieee;
3
+ use ieee.std_logic_1164.all;
4
+ use ieee.numeric_std.all;
5
+
6
+ entity ram_ctrl_test is
7
+ port(
8
+ clk : in std_logic;
9
+ reset : in std_logic;
10
+ sw : in std_logic_vector(7 downto 0);
11
+ btn : in std_logic_vector(2 downto 0);
12
+ led : out std_logic_vector(7 downto 0);
13
+ ad : out std_logic_vector(17 downto 0);
14
+ we_n : out std_logic;
15
+ oe_n : out std_logic;
16
+ dio_a : inout std_logic_vector(15 downto 0);
17
+ ce_a_n : out std_logic;
18
+ ub_a_n : out std_logic;
19
+ lb_a_n : out std_logic);
20
+ end entity ram_ctrl_test;
21
+
22
+ architecture arch of ram_ctrl_test is
23
+ constant addr_w : integer := 18;
24
+ constant data_w : integer := 16;
25
+ signal addr : std_logic_vector(addr_w - 1 downto 0);
26
+ signal data_f2s : std_logic_vector(data_w - 1 downto 0);
27
+ signal data_s2f : std_logic_vector(data_w - 1 downto 0);
28
+ signal mem : std_logic;
29
+ signal rw : std_logic;
30
+ signal data_reg : std_logic_vector(7 downto 0);
31
+ signal db_btn : std_logic_vector(2 downto 0);
32
+ begin
33
+
34
+ ctrl_unit : entity work.sram_ctrl
35
+ port map(
36
+ clk => clk,
37
+ reset => reset,
38
+ mem => mem,
39
+ rw => rw,
40
+ addr => addr,
41
+ data_f2s => data_f2s,
42
+ ready => open,
43
+ data_s2f_r => data_s2f,
44
+ data_s2f_ur => open,
45
+ ad => ad,
46
+ we_n => we_n,
47
+ oe_n => oe_n,
48
+ dio_a => dio_a,
49
+ ce_a_n => ce_a_n,
50
+ ub_a_n => ub_a_n,
51
+ lb_a_n => lb_a_n);
52
+
53
+ debounce_unit0 : entity work.debounce
54
+ port map(
55
+ clk => clk,
56
+ reset => reset,
57
+ sw => btn(0),
58
+ db_level => open,
59
+ db_tick => db_btn(0));
60
+
61
+ debounce_unit1 : entity work.debounce
62
+ port map(
63
+ clk => clk,
64
+ reset => reset,
65
+ sw => btn(1),
66
+ db_level => open,
67
+ db_tick => db_btn(1));
68
+
69
+ debounce_unit2 : entity work.debounce
70
+ port map(
71
+ clk => clk,
72
+ reset => reset,
73
+ sw => btn(2),
74
+ db_level => open,
75
+ db_tick => db_btn(2));
76
+
77
+
78
+ process(clk)
79
+ begin
80
+ if (clk'event and clk = '1') then
81
+ if (db_btn(0) = '1') then
82
+ data_reg <= sw;
83
+ end if;
84
+ end if;
85
+ end process;
86
+ addr <= "0000000000" & sw;
87
+
88
+ process(db_btn,data_reg)
89
+ begin
90
+ data_f2s <= (others => '0');
91
+ if db_btn(1) = '1' then
92
+ mem <= '1';
93
+ rw <= '0';
94
+ data_f2s <= "00000000" & data_reg;
95
+ elsif db_btn(2) = '1' then
96
+ mem <= '1';
97
+ rw <= '1';
98
+ else
99
+ mem <= '0';
100
+ rw <= '1';
101
+ end if;
102
+ end process;
103
+ led <= data_s2f(7 downto 0);
104
+ end arch;
@@ -0,0 +1,11 @@
1
+
2
+ entity test is
3
+ end test;
4
+
5
+ architecture bhv of test is
6
+ begin
7
+ process
8
+ begin
9
+ report "hello" & "world" severity error;
10
+ end process;
11
+ end bhv;
@@ -0,0 +1,14 @@
1
+ -- generated by Vertigo VHDL tool
2
+
3
+ entity test is
4
+ end entity test;
5
+
6
+ architecture bhv of test is
7
+ begin
8
+
9
+
10
+ process
11
+ begin
12
+ report "hello" & "world" severity error;
13
+ end process;
14
+ end bhv;
@@ -0,0 +1,35 @@
1
+ library ieee;
2
+ use ieee.std_logic_1164.all;
3
+ use ieee.numeric_std.all;
4
+
5
+ entity counter is
6
+ generic (N : natural := 8);
7
+ port(
8
+ reset_n : in std_logic;
9
+ clk : in std_logic;
10
+ inc : in std_logic;
11
+ dec : in std_logic;
12
+ value : out signed(N-1 downto 0)
13
+ );
14
+ end entity;
15
+
16
+ architecture rtl of counter is
17
+ signal value_s : signed(N-1 downto 0);
18
+ begin
19
+
20
+ process(reset_n,clk)
21
+ begin
22
+ if reset_n='0' then
23
+ value_s <= to_signed(0,N);
24
+ elsif rising_edge(clk) then
25
+ if inc='1' then
26
+ value_s <= value_s + 1;
27
+ elsif dec='1' then
28
+ value_s <= value_s - 1;
29
+ end if;
30
+ end if;
31
+ end process;
32
+
33
+ value <= value_s;
34
+
35
+ end rtl;
@@ -0,0 +1,35 @@
1
+ -- generated by Vertigo VHDL tool
2
+ library ieee;
3
+ use ieee.std_logic_1164.all;
4
+ use ieee.numeric_std.all;
5
+
6
+ entity counter is
7
+ generic(
8
+ n : natural8 := 8);
9
+ port(
10
+ reset_n : in std_logic;
11
+ clk : in std_logic;
12
+ inc : in std_logic;
13
+ dec : in std_logic;
14
+ value : out signed(n - 1 downto 0));
15
+ end entity counter;
16
+
17
+ architecture rtl of counter is
18
+ signal value_s : signed(n - 1 downto 0);
19
+ begin
20
+
21
+
22
+ process(reset_n,clk)
23
+ begin
24
+ if reset_n = '0' then
25
+ value_s <= to_signed(0,n);
26
+ elsif rising_edge(clk) then
27
+ if inc = '1' then
28
+ value_s <= value_s + 1;
29
+ elsif dec = '1' then
30
+ value_s <= value_s - 1;
31
+ end if;
32
+ end if;
33
+ end process;
34
+ value <= value_s;
35
+ end rtl;
@@ -0,0 +1,358 @@
1
+ --
2
+ -- DE2 top-level module that includes the simple audio component
3
+ --
4
+ -- From JCLL, jean-christophe.le_lann@ensta-bretagne.fr
5
+ -- ...From Stephen A. Edwards, Columbia University, sedwards@cs.columbia.edu
6
+ -- ......From an original by Terasic Technology, Inc.
7
+ -- ......(DE2_TOP.v, part of the DE2 system board CD supplied by Altera)
8
+ --
9
+
10
+ library IEEE;
11
+ use IEEE.std_logic_1164.all;
12
+ use IEEE.numeric_std.all;
13
+
14
+ entity DE2 is
15
+
16
+ port (
17
+ -- Clocks
18
+
19
+ CLOCK_27 : in std_logic; -- 27 MHz
20
+ CLOCK_50 : in std_logic; -- 50 MHz
21
+ EXT_CLOCK : in std_logic; -- External Clock
22
+
23
+ -- Buttons and switches
24
+
25
+ KEY : in std_logic_vector(3 downto 0); -- Push buttons
26
+ SW : in std_logic_vector(17 downto 0); -- DPDT switches
27
+
28
+ HEX0, HEX1, HEX2, HEX3, HEX4, HEX5, HEX6, HEX7 : out std_logic_vector(6 downto 0);-- 7-segment displays
29
+ LEDG : out std_logic_vector(7 downto 0); -- Green LEDs
30
+ LEDR : out std_logic_vector(17 downto 0); -- Red LEDs
31
+
32
+ -- RS-232 interface
33
+
34
+ UART_TXD : out std_logic; -- UART transmitter
35
+ UART_RXD : in std_logic; -- UART receiver
36
+
37
+ -- IRDA interface
38
+
39
+ -- IRDA_TXD : out std_logic; -- IRDA Transmitter
40
+ IRDA_RXD : in std_logic; -- IRDA Receiver
41
+
42
+ -- SDRAM
43
+
44
+ DRAM_DQ : inout std_logic_vector(15 downto 0); -- Data Bus
45
+ DRAM_ADDR : out std_logic_vector(11 downto 0); -- Address Bus
46
+ DRAM_LDQM : out std_logic; -- Low-byte Data Mask
47
+ DRAM_UDQM : out std_logic; -- High-byte Data Mask
48
+ DRAM_WE_N : out std_logic; -- Write Enable
49
+ DRAM_CAS_N : out std_logic; -- Column Address Strobe
50
+ DRAM_RAS_N : out std_logic; -- Row Address Strobe
51
+ DRAM_CS_N : out std_logic; -- Chip Select
52
+ DRAM_BA_0 : out std_logic; -- Bank Address 0
53
+ DRAM_BA_1 : out std_logic; -- Bank Address 0
54
+ DRAM_CLK : out std_logic; -- Clock
55
+ DRAM_CKE : out std_logic; -- Clock Enable
56
+
57
+ -- FLASH
58
+
59
+ FL_DQ : inout std_logic_vector(7 downto 0); -- Data bus
60
+ FL_ADDR : out std_logic_vector(21 downto 0); -- Address bus
61
+ FL_WE_N : out std_logic; -- Write Enable
62
+ FL_RST_N : out std_logic; -- Reset
63
+ FL_OE_N : out std_logic; -- Output Enable
64
+ FL_CE_N : out std_logic; -- Chip Enable
65
+
66
+ -- SRAM
67
+
68
+ SRAM_DQ : inout std_logic_vector(15 downto 0); -- Data bus 16 Bits
69
+ SRAM_ADDR : out std_logic_vector(17 downto 0); -- Address bus 18 Bits
70
+ SRAM_UB_N : out std_logic; -- High-byte Data Mask
71
+ SRAM_LB_N : out std_logic; -- Low-byte Data Mask
72
+ SRAM_WE_N : out std_logic; -- Write Enable
73
+ SRAM_CE_N : out std_logic; -- Chip Enable
74
+ SRAM_OE_N : out std_logic; -- Output Enable
75
+
76
+ -- USB controller
77
+
78
+ OTG_DATA : inout std_logic_vector(15 downto 0); -- Data bus
79
+ OTG_ADDR : out std_logic_vector(1 downto 0); -- Address
80
+ OTG_CS_N : out std_logic; -- Chip Select
81
+ OTG_RD_N : out std_logic; -- Write
82
+ OTG_WR_N : out std_logic; -- Read
83
+ OTG_RST_N : out std_logic; -- Reset
84
+ OTG_FSPEED : out std_logic; -- USB Full Speed, 0 = Enable, Z = Disable
85
+ OTG_LSPEED : out std_logic; -- USB Low Speed, 0 = Enable, Z = Disable
86
+ OTG_INT0 : in std_logic; -- Interrupt 0
87
+ OTG_INT1 : in std_logic; -- Interrupt 1
88
+ OTG_DREQ0 : in std_logic; -- DMA Request 0
89
+ OTG_DREQ1 : in std_logic; -- DMA Request 1
90
+ OTG_DACK0_N : out std_logic; -- DMA Acknowledge 0
91
+ OTG_DACK1_N : out std_logic; -- DMA Acknowledge 1
92
+
93
+ -- 16 X 2 LCD Module
94
+
95
+ LCD_ON, -- Power ON/OFF
96
+ LCD_BLON, -- Back Light ON/OFF
97
+ LCD_RW, -- Read/Write Select, 0 = Write, 1 = Read
98
+ LCD_EN, -- Enable
99
+ LCD_RS : out std_logic; -- Command/Data Select, 0 = Command, 1 = Data
100
+ LCD_DATA : inout std_logic_vector(7 downto 0); -- Data bus 8 bits
101
+
102
+ -- SD card interface
103
+
104
+ SD_DAT, -- SD Card Data
105
+ SD_DAT3, -- SD Card Data 3
106
+ SD_CMD : inout std_logic; -- SD Card Command Signal
107
+ SD_CLK : out std_logic; -- SD Card Clock
108
+
109
+ -- USB JTAG link
110
+
111
+ TDI, -- CPLD -> FPGA (data in)
112
+ TCK, -- CPLD -> FPGA (clk)
113
+ TCS : in std_logic; -- CPLD -> FPGA (CS)
114
+ TDO : out std_logic; -- FPGA -> CPLD (data out)
115
+
116
+ -- I2C bus
117
+
118
+ I2C_SDAT : inout std_logic; -- I2C Data
119
+ I2C_SCLK : out std_logic; -- I2C Clock
120
+
121
+ -- PS/2 port
122
+
123
+ PS2_DAT, -- Data
124
+ PS2_CLK : in std_logic; -- Clock
125
+
126
+ -- VGA output
127
+
128
+ VGA_CLK, -- Clock
129
+ VGA_HS, -- H_SYNC
130
+ VGA_VS, -- V_SYNC
131
+ VGA_BLANK, -- BLANK
132
+ VGA_SYNC : out std_logic; -- SYNC
133
+ VGA_R, -- Red[9:0]
134
+ VGA_G, -- Green[9:0]
135
+ VGA_B : out std_logic_vector(9 downto 0); -- Blue[9:0]
136
+
137
+ -- Ethernet Interface
138
+
139
+ ENET_DATA : inout std_logic_vector(15 downto 0); -- DATA bus 16Bits
140
+ ENET_CMD, -- Command/Data Select, 0 = Command, 1 = Data
141
+ ENET_CS_N, -- Chip Select
142
+ ENET_WR_N, -- Write
143
+ ENET_RD_N, -- Read
144
+ ENET_RST_N, -- Reset
145
+ ENET_CLK : out std_logic; -- Clock 25 MHz
146
+ ENET_INT : in std_logic; -- Interrupt
147
+
148
+ -- Audio CODEC
149
+
150
+ AUD_ADCLRCK : inout std_logic; -- ADC LR Clock
151
+ AUD_ADCDAT : in std_logic; -- ADC Data
152
+ AUD_DACLRCK : inout std_logic; -- DAC LR Clock
153
+ AUD_DACDAT : out std_logic; -- DAC Data
154
+ AUD_BCLK : inout std_logic; -- Bit-Stream Clock
155
+ AUD_XCK : out std_logic; -- Chip Clock
156
+
157
+ -- Video Decoder
158
+
159
+ TD_DATA : in std_logic_vector(7 downto 0); -- Data bus 8 bits
160
+ TD_HS, -- H_SYNC
161
+ TD_VS : in std_logic; -- V_SYNC
162
+ TD_RESET : out std_logic; -- Reset
163
+
164
+ -- General-purpose I/O
165
+
166
+ GPIO_0, -- GPIO Connection 0
167
+ GPIO_1 : inout std_logic_vector(35 downto 0) -- GPIO Connection 1
168
+ );
169
+
170
+ end DE2;
171
+
172
+ architecture RTL of DE2 is
173
+ signal reset_n : std_logic;
174
+ signal start : std_logic;
175
+ signal req_a : std_logic;
176
+ signal req_b : std_logic;
177
+ signal a, b : std_logic_vector(3 downto 0);
178
+ signal ready : std_logic;
179
+ signal res : std_logic_vector(7 downto 0);
180
+ signal state_o : std_logic_vector(3 downto 0); --one hot for LOGIC archi !
181
+ signal state_num : std_logic_vector(3 downto 0);
182
+
183
+ function binTo7Seg(bin : std_logic_vector(3 downto 0)) return std_logic_vector is
184
+ variable res : std_logic_vector(6 downto 0);
185
+ begin
186
+ res := "0000000";
187
+ case bin is
188
+ when "0000" => res := "0111111"; --0
189
+ when "0001" => res := "0000110"; --1
190
+ when "0010" => res := "1011011"; --2
191
+ when "0011" => res := "1001111"; --3
192
+ when "0100" => res := "1100110"; --4
193
+ when "0101" => res := "1101101"; --5
194
+ when "0110" => res := "1111101"; --6
195
+ when "0111" => res := "0000111"; --7
196
+ when "1000" => res := "1111111"; --8
197
+ when "1001" => res := "1101111"; --9
198
+ when "1010" => res := "1110111"; --A
199
+ when "1011" => res := "1111100"; --b
200
+ when "1100" => res := "0111001"; --C
201
+ when "1101" => res := "1011110"; --d
202
+ when "1110" => res := "1111001"; --E
203
+ when "1111" => res := "1110001"; --F
204
+ when others => null;
205
+ end case;
206
+ return res;
207
+ end binTo7Seg;
208
+
209
+ function one_hot_to_dec (bin : std_logic_vector(3 downto 0)) return std_logic_vector is
210
+ variable res : std_logic_vector(3 downto 0);
211
+ begin
212
+ res := "0000";
213
+ for i in bin'range loop
214
+ if bin(i) = '1' then
215
+ return std_logic_vector(to_unsigned(i, 4));
216
+ end if;
217
+ end loop;
218
+ return res;
219
+ end one_hot_to_dec;
220
+
221
+ --=====================================================================
222
+ signal sta : std_logic_vector(3 downto 0);
223
+ constant PRESSED : std_logic :='0';
224
+ begin
225
+
226
+ -----------------------------------------------------------------------------
227
+ ---- inputs
228
+ -----------------------------------------------------------------------------
229
+ reset_n <= '0' when KEY(0)=PRESSED else '1';
230
+ start <= '1' when KEY(1)=PRESSED else '0';
231
+ req_a <= '1' when KEY(2)=PRESSED else '0';
232
+ req_b <= '1' when KEY(3)=PRESSED else '0';
233
+ a <= SW(3 downto 0);
234
+ b <= SW(3 downto 0);
235
+
236
+ -------------------------------------------------------------------------------
237
+ ---- outputs
238
+ -------------------------------------------------------------------------------
239
+ LEDG(0) <= ready;
240
+ HEX0 <= not binTo7Seg(res(3 downto 0)) when ready = '1' else
241
+ not binTo7Seg(SW(3 downto 0));
242
+ HEX1 <= not binTo7Seg(res(7 downto 4)) when ready = '1' else
243
+ not "0001000";
244
+ HEX5 <= not binTo7Seg("0101"); -- letter S
245
+ HEX4 <= not binTo7Seg(state_num); -- state number
246
+ HEX2 <= not "0001000"; --nicer
247
+ HEX3 <= not "0001000";
248
+ HEX6 <= not "0001000";
249
+ HEX7 <= not "0001000" when start='1' else "0001000";
250
+ state_num <= one_hot_to_dec(state_o);
251
+
252
+
253
+ DESIGN : entity work.MultSeq(logic)
254
+ port map (
255
+ clk => CLOCK_27,
256
+ reset_n => reset_n,
257
+ start => start,
258
+ req_a => req_a,
259
+ req_b => req_b,
260
+ a => a,
261
+ b => b,
262
+ ready => ready,
263
+ res => res,
264
+ state_o => state_o
265
+ );
266
+
267
+ -----------------------------------------
268
+ -- Unassigned
269
+ -----------------------------------------
270
+ LEDR <= (others => '0');
271
+
272
+ -- LCD
273
+ LCD_ON <= '1';
274
+ LCD_BLON <= '1';
275
+ LCD_RW <= '1';
276
+ LCD_EN <= '0';
277
+ LCD_RS <= '0';
278
+
279
+ -- VGA
280
+ VGA_CLK <= '0';
281
+ VGA_HS <= '0';
282
+ VGA_VS <= '0';
283
+ VGA_BLANK <= '0';
284
+ VGA_SYNC <= '0';
285
+ VGA_R <= (others => '0');
286
+ VGA_G <= (others => '0');
287
+ VGA_B <= (others => '0');
288
+
289
+ --SD
290
+ SD_DAT3 <= '1';
291
+ SD_CMD <= '1';
292
+ SD_CLK <= '1';
293
+
294
+ -- SRAM
295
+ SRAM_DQ <= (others => 'Z');
296
+ SRAM_ADDR <= (others => '0');
297
+ SRAM_UB_N <= '1';
298
+ SRAM_LB_N <= '1';
299
+ SRAM_CE_N <= '1';
300
+ SRAM_WE_N <= '1';
301
+ SRAM_OE_N <= '1';
302
+
303
+ UART_TXD <= '0';
304
+
305
+ -- DRAM
306
+ DRAM_ADDR <= (others => '0');
307
+ DRAM_LDQM <= '0';
308
+ DRAM_UDQM <= '0';
309
+ DRAM_WE_N <= '1';
310
+ DRAM_CAS_N <= '1';
311
+ DRAM_RAS_N <= '1';
312
+ DRAM_CS_N <= '1';
313
+ DRAM_BA_0 <= '0';
314
+ DRAM_BA_1 <= '0';
315
+ DRAM_CLK <= '0';
316
+ DRAM_CKE <= '0';
317
+
318
+ -- FLASH
319
+ FL_ADDR <= (others => '0');
320
+ FL_WE_N <= '1';
321
+ FL_RST_N <= '0';
322
+ FL_OE_N <= '1';
323
+ FL_CE_N <= '1';
324
+ OTG_ADDR <= (others => '0');
325
+ OTG_CS_N <= '1';
326
+ OTG_RD_N <= '1';
327
+ OTG_RD_N <= '1';
328
+ OTG_WR_N <= '1';
329
+ OTG_RST_N <= '1';
330
+ OTG_FSPEED <= '1';
331
+ OTG_LSPEED <= '1';
332
+ OTG_DACK0_N <= '1';
333
+ OTG_DACK1_N <= '1';
334
+
335
+ TDO <= '0';
336
+
337
+ -- ETHERNET
338
+ ENET_CMD <= '0';
339
+ ENET_CS_N <= '1';
340
+ ENET_WR_N <= '1';
341
+ ENET_RD_N <= '1';
342
+ ENET_RST_N <= '1';
343
+ ENET_CLK <= '0';
344
+
345
+ -- Video decoder
346
+ TD_RESET <= '1'; -- NEED TO ACTIVATE 27 Mhz
347
+
348
+ -- Set all bidirectional ports to tri-state
349
+ DRAM_DQ <= (others => 'Z');
350
+ FL_DQ <= (others => 'Z');
351
+ OTG_DATA <= (others => 'Z');
352
+ LCD_DATA <= (others => 'Z');
353
+ SD_DAT <= 'Z';
354
+ ENET_DATA <= (others => 'Z');
355
+ GPIO_0 <= (others => 'Z');
356
+ GPIO_1 <= (others => 'Z');
357
+
358
+ end RTL;