reggae_eda 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/assets/Nexys4DDR_Master.xdc +255 -0
- data/assets/fifo.vhd +109 -0
- data/assets/flag_buf.vhd +45 -0
- data/assets/mod_m_counter.vhd +36 -0
- data/assets/slow_ticker.vhd +49 -0
- data/assets/uart.vhd +69 -0
- data/assets/uart_bus_master.vhd +256 -0
- data/assets/uart_rx.vhd +90 -0
- data/assets/uart_tx.vhd +102 -0
- data/bin/reggae +6 -0
- data/lib/reggae.rb +3 -0
- data/lib/reggae/ast.rb +72 -0
- data/lib/reggae/code.rb +55 -0
- data/lib/reggae/compiler.rb +110 -0
- data/lib/reggae/parser.rb +281 -0
- data/lib/reggae/pretty_printer.rb +107 -0
- data/lib/reggae/version.rb +3 -0
- data/lib/reggae/vhdl_generator.rb +973 -0
- data/lib/reggae/visitor.rb +107 -0
- data/tests/regmap.sexp +139 -0
- metadata +64 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d6797ae44568ddca7bcff5383cdedc84307c4f1bdb69728de72891e17d9197db
|
4
|
+
data.tar.gz: cfef7c0cd1dc0e6e162c32bb180623973c8cf34adb4f7c6c0c2c8fee03102d03
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f3b92c0ac2ab91a693062c76f006182fe06d9510f166402a44431bccf44da9d82ab7b2edd1c352060d686eb1074be455c02887a4b3382572d944e2fc679b39c9
|
7
|
+
data.tar.gz: 0abe3380b547362a9f6d37e02932cf78d4b3c7b527e48bdb04495659ed175a2f6480202aedf223f2c026ecb6df5e7f009aacf26f420446b980a3663f0162eee4
|
@@ -0,0 +1,255 @@
|
|
1
|
+
## This file is a general .xdc for the Nexys4 DDR Rev. C
|
2
|
+
## To use it in a project:
|
3
|
+
## - uncomment the lines corresponding to used pins
|
4
|
+
## - rename the used ports (in each line, after get_ports) according to the top level signal names in the project
|
5
|
+
|
6
|
+
## Clock signal
|
7
|
+
|
8
|
+
set_property -dict { PACKAGE_PIN E3 IOSTANDARD LVCMOS33 } [get_ports { clk }]; #IO_L12P_T1_MRCC_35 Sch=clk100mhz
|
9
|
+
create_clock -add -name clk -period 10.00 -waveform {0 5} [get_ports {clk}];
|
10
|
+
|
11
|
+
|
12
|
+
##Switches
|
13
|
+
|
14
|
+
set_property -dict { PACKAGE_PIN J15 IOSTANDARD LVCMOS33 } [get_ports { reset_n }]; #IO_L24N_T3_RS0_15 Sch=sw[0]
|
15
|
+
# set_property -dict { PACKAGE_PIN L16 IOSTANDARD LVCMOS33 } [get_ports { switches[1] }]; #IO_L3N_T0_DQS_EMCCLK_14 Sch=sw[1]
|
16
|
+
# set_property -dict { PACKAGE_PIN M13 IOSTANDARD LVCMOS33 } [get_ports { switches[2] }]; #IO_L6N_T0_D08_VREF_14 Sch=sw[2]
|
17
|
+
# set_property -dict { PACKAGE_PIN R15 IOSTANDARD LVCMOS33 } [get_ports { switches[3] }]; #IO_L13N_T2_MRCC_14 Sch=sw[3]
|
18
|
+
# set_property -dict { PACKAGE_PIN R17 IOSTANDARD LVCMOS33 } [get_ports { switches[4] }]; #IO_L12N_T1_MRCC_14 Sch=sw[4]
|
19
|
+
# set_property -dict { PACKAGE_PIN T18 IOSTANDARD LVCMOS33 } [get_ports { switches[5] }]; #IO_L7N_T1_D10_14 Sch=sw[5]
|
20
|
+
# set_property -dict { PACKAGE_PIN U18 IOSTANDARD LVCMOS33 } [get_ports { switches[6] }]; #IO_L17N_T2_A13_D29_14 Sch=sw[6]
|
21
|
+
# set_property -dict { PACKAGE_PIN R13 IOSTANDARD LVCMOS33 } [get_ports { switches[7] }]; #IO_L5N_T0_D07_14 Sch=sw[7]
|
22
|
+
# set_property -dict { PACKAGE_PIN T8 IOSTANDARD LVCMOS18 } [get_ports { switches[8] }]; #IO_L24N_T3_34 Sch=sw[8]
|
23
|
+
# set_property -dict { PACKAGE_PIN U8 IOSTANDARD LVCMOS18 } [get_ports { switches[9] }]; #IO_25_34 Sch=sw[9]
|
24
|
+
# set_property -dict { PACKAGE_PIN R16 IOSTANDARD LVCMOS33 } [get_ports { switches[10] }]; #IO_L15P_T2_DQS_RDWR_B_14 Sch=sw[10]
|
25
|
+
# set_property -dict { PACKAGE_PIN T13 IOSTANDARD LVCMOS33 } [get_ports { switches[11] }]; #IO_L23P_T3_A03_D19_14 Sch=sw[11]
|
26
|
+
# set_property -dict { PACKAGE_PIN H6 IOSTANDARD LVCMOS33 } [get_ports { switches[12] }]; #IO_L24P_T3_35 Sch=sw[12]
|
27
|
+
# set_property -dict { PACKAGE_PIN U12 IOSTANDARD LVCMOS33 } [get_ports { switches[13] }]; #IO_L20P_T3_A08_D24_14 Sch=sw[13]
|
28
|
+
# set_property -dict { PACKAGE_PIN U11 IOSTANDARD LVCMOS33 } [get_ports { switches[14] }]; #IO_L19N_T3_A09_D25_VREF_14 Sch=sw[14]
|
29
|
+
# set_property -dict { PACKAGE_PIN V10 IOSTANDARD LVCMOS33 } [get_ports { switches[15] }]; #IO_L21P_T3_DQS_14 Sch=sw[15]
|
30
|
+
|
31
|
+
|
32
|
+
## LEDs
|
33
|
+
|
34
|
+
set_property -dict { PACKAGE_PIN H17 IOSTANDARD LVCMOS33 } [get_ports { leds[0] }]; #IO_L18P_T2_A24_15 Sch=led[0]
|
35
|
+
set_property -dict { PACKAGE_PIN K15 IOSTANDARD LVCMOS33 } [get_ports { leds[1] }]; #IO_L24P_T3_RS1_15 Sch=led[1]
|
36
|
+
set_property -dict { PACKAGE_PIN J13 IOSTANDARD LVCMOS33 } [get_ports { leds[2] }]; #IO_L17N_T2_A25_15 Sch=led[2]
|
37
|
+
set_property -dict { PACKAGE_PIN N14 IOSTANDARD LVCMOS33 } [get_ports { leds[3] }]; #IO_L8P_T1_D11_14 Sch=led[3]
|
38
|
+
set_property -dict { PACKAGE_PIN R18 IOSTANDARD LVCMOS33 } [get_ports { leds[4] }]; #IO_L7P_T1_D09_14 Sch=led[4]
|
39
|
+
set_property -dict { PACKAGE_PIN V17 IOSTANDARD LVCMOS33 } [get_ports { leds[5] }]; #IO_L18N_T2_A11_D27_14 Sch=led[5]
|
40
|
+
set_property -dict { PACKAGE_PIN U17 IOSTANDARD LVCMOS33 } [get_ports { leds[6] }]; #IO_L17P_T2_A14_D30_14 Sch=led[6]
|
41
|
+
set_property -dict { PACKAGE_PIN U16 IOSTANDARD LVCMOS33 } [get_ports { leds[7] }]; #IO_L18P_T2_A12_D28_14 Sch=led[7]
|
42
|
+
set_property -dict { PACKAGE_PIN V16 IOSTANDARD LVCMOS33 } [get_ports { leds[8] }]; #IO_L16N_T2_A15_D31_14 Sch=led[8]
|
43
|
+
set_property -dict { PACKAGE_PIN T15 IOSTANDARD LVCMOS33 } [get_ports { leds[9] }]; #IO_L14N_T2_SRCC_14 Sch=led[9]
|
44
|
+
set_property -dict { PACKAGE_PIN U14 IOSTANDARD LVCMOS33 } [get_ports { leds[10] }]; #IO_L22P_T3_A05_D21_14 Sch=led[10]
|
45
|
+
set_property -dict { PACKAGE_PIN T16 IOSTANDARD LVCMOS33 } [get_ports { leds[11] }]; #IO_L15N_T2_DQS_DOUT_CSO_B_14 Sch=led[11]
|
46
|
+
set_property -dict { PACKAGE_PIN V15 IOSTANDARD LVCMOS33 } [get_ports { leds[12] }]; #IO_L16P_T2_CSI_B_14 Sch=led[12]
|
47
|
+
set_property -dict { PACKAGE_PIN V14 IOSTANDARD LVCMOS33 } [get_ports { leds[13] }]; #IO_L22N_T3_A04_D20_14 Sch=led[13]
|
48
|
+
set_property -dict { PACKAGE_PIN V12 IOSTANDARD LVCMOS33 } [get_ports { leds[14] }]; #IO_L20N_T3_A07_D23_14 Sch=led[14]
|
49
|
+
set_property -dict { PACKAGE_PIN V11 IOSTANDARD LVCMOS33 } [get_ports { leds[15] }]; #IO_L21N_T3_DQS_A06_D22_14 Sch=led[15]
|
50
|
+
|
51
|
+
#set_property -dict { PACKAGE_PIN R12 IOSTANDARD LVCMOS33 } [get_ports { LED16_B }]; #IO_L5P_T0_D06_14 Sch=led16_b
|
52
|
+
#set_property -dict { PACKAGE_PIN M16 IOSTANDARD LVCMOS33 } [get_ports { LED16_G }]; #IO_L10P_T1_D14_14 Sch=led16_g
|
53
|
+
#set_property -dict { PACKAGE_PIN N15 IOSTANDARD LVCMOS33 } [get_ports { LED16_R }]; #IO_L11P_T1_SRCC_14 Sch=led16_r
|
54
|
+
#set_property -dict { PACKAGE_PIN G14 IOSTANDARD LVCMOS33 } [get_ports { LED17_B }]; #IO_L15N_T2_DQS_ADV_B_15 Sch=led17_b
|
55
|
+
#set_property -dict { PACKAGE_PIN R11 IOSTANDARD LVCMOS33 } [get_ports { LED17_G }]; #IO_0_14 Sch=led17_g
|
56
|
+
#set_property -dict { PACKAGE_PIN N16 IOSTANDARD LVCMOS33 } [get_ports { LED17_R }]; #IO_L11N_T1_SRCC_14 Sch=led17_r
|
57
|
+
|
58
|
+
|
59
|
+
##7 segment display
|
60
|
+
|
61
|
+
# set_property -dict { PACKAGE_PIN T10 IOSTANDARD LVCMOS33 } [get_ports { segments[0] }]; #IO_L24N_T3_A00_D16_14 Sch=ca
|
62
|
+
# set_property -dict { PACKAGE_PIN R10 IOSTANDARD LVCMOS33 } [get_ports { segments[1] }]; #IO_25_14 Sch=cb
|
63
|
+
# set_property -dict { PACKAGE_PIN K16 IOSTANDARD LVCMOS33 } [get_ports { segments[2] }]; #IO_25_15 Sch=cc
|
64
|
+
# set_property -dict { PACKAGE_PIN K13 IOSTANDARD LVCMOS33 } [get_ports { segments[3] }]; #IO_L17P_T2_A26_15 Sch=cd
|
65
|
+
# set_property -dict { PACKAGE_PIN P15 IOSTANDARD LVCMOS33 } [get_ports { segments[4] }]; #IO_L13P_T2_MRCC_14 Sch=ce
|
66
|
+
# set_property -dict { PACKAGE_PIN T11 IOSTANDARD LVCMOS33 } [get_ports { segments[5] }]; #IO_L19P_T3_A10_D26_14 Sch=cf
|
67
|
+
# set_property -dict { PACKAGE_PIN L18 IOSTANDARD LVCMOS33 } [get_ports { segments[6] }]; #IO_L4P_T0_D04_14 Sch=cg
|
68
|
+
|
69
|
+
#set_property -dict { PACKAGE_PIN H15 IOSTANDARD LVCMOS33 } [get_ports { DP }]; #IO_L19N_T3_A21_VREF_15 Sch=dp
|
70
|
+
|
71
|
+
# 4 x 7-segments NEEDED
|
72
|
+
# set_property -dict { PACKAGE_PIN J17 IOSTANDARD LVCMOS33 } [get_ports { anodes[0] }]; #IO_L23P_T3_FOE_B_15 Sch=an[0]
|
73
|
+
# set_property -dict { PACKAGE_PIN J18 IOSTANDARD LVCMOS33 } [get_ports { anodes[1] }]; #IO_L23N_T3_FWE_B_15 Sch=an[1]
|
74
|
+
# set_property -dict { PACKAGE_PIN T9 IOSTANDARD LVCMOS33 } [get_ports { anodes[2] }]; #IO_L24P_T3_A01_D17_14 Sch=an[2]
|
75
|
+
# set_property -dict { PACKAGE_PIN J14 IOSTANDARD LVCMOS33 } [get_ports { anodes[3] }]; #IO_L19P_T3_A22_15 Sch=an[3]
|
76
|
+
# set_property -dict { PACKAGE_PIN P14 IOSTANDARD LVCMOS33 } [get_ports { anodes[4] }]; #IO_L8N_T1_D12_14 Sch=an[4]
|
77
|
+
# set_property -dict { PACKAGE_PIN T14 IOSTANDARD LVCMOS33 } [get_ports { anodes[5] }]; #IO_L14P_T2_SRCC_14 Sch=an[5]
|
78
|
+
# set_property -dict { PACKAGE_PIN K2 IOSTANDARD LVCMOS33 } [get_ports { anodes[6] }]; #IO_L23P_T3_35 Sch=an[6]
|
79
|
+
# set_property -dict { PACKAGE_PIN U13 IOSTANDARD LVCMOS33 } [get_ports { anodes[7] }]; #IO_L23N_T3_A02_D18_14 Sch=an[7]
|
80
|
+
|
81
|
+
##Buttons
|
82
|
+
|
83
|
+
#set_property -dict { PACKAGE_PIN C12 IOSTANDARD LVCMOS33 } [get_ports { reset_n }]; #IO_L3P_T0_DQS_AD1P_15 Sch=cpu_resetn
|
84
|
+
|
85
|
+
#set_property -dict { PACKAGE_PIN N17 IOSTANDARD LVCMOS33 } [get_ports { BTNC }]; #IO_L9P_T1_DQS_14 Sch=btnc
|
86
|
+
#set_property -dict { PACKAGE_PIN M18 IOSTANDARD LVCMOS33 } [get_ports { BTNU }]; #IO_L4N_T0_D05_14 Sch=btnu
|
87
|
+
#set_property -dict { PACKAGE_PIN P17 IOSTANDARD LVCMOS33 } [get_ports { BTNL }]; #IO_L12P_T1_MRCC_14 Sch=btnl
|
88
|
+
#set_property -dict { PACKAGE_PIN M17 IOSTANDARD LVCMOS33 } [get_ports { BTNR }]; #IO_L10N_T1_D15_14 Sch=btnr
|
89
|
+
|
90
|
+
#set_property -dict { PACKAGE_PIN P18 IOSTANDARD LVCMOS33 } [get_ports { BTND }]; #IO_L9N_T1_DQS_D13_14 Sch=btnd
|
91
|
+
|
92
|
+
|
93
|
+
##Pmod Headers
|
94
|
+
|
95
|
+
|
96
|
+
##Pmod Header JA
|
97
|
+
|
98
|
+
#set_property -dict { PACKAGE_PIN C17 IOSTANDARD LVCMOS33 } [get_ports { JA[1] }]; #IO_L20N_T3_A19_15 Sch=ja[1]
|
99
|
+
#set_property -dict { PACKAGE_PIN D18 IOSTANDARD LVCMOS33 } [get_ports { JA[2] }]; #IO_L21N_T3_DQS_A18_15 Sch=ja[2]
|
100
|
+
#set_property -dict { PACKAGE_PIN E18 IOSTANDARD LVCMOS33 } [get_ports { JA[3] }]; #IO_L21P_T3_DQS_15 Sch=ja[3]
|
101
|
+
#set_property -dict { PACKAGE_PIN G17 IOSTANDARD LVCMOS33 } [get_ports { JA[4] }]; #IO_L18N_T2_A23_15 Sch=ja[4]
|
102
|
+
#set_property -dict { PACKAGE_PIN D17 IOSTANDARD LVCMOS33 } [get_ports { JA[7] }]; #IO_L16N_T2_A27_15 Sch=ja[7]
|
103
|
+
#set_property -dict { PACKAGE_PIN E17 IOSTANDARD LVCMOS33 } [get_ports { JA[8] }]; #IO_L16P_T2_A28_15 Sch=ja[8]
|
104
|
+
#set_property -dict { PACKAGE_PIN F18 IOSTANDARD LVCMOS33 } [get_ports { JA[9] }]; #IO_L22N_T3_A16_15 Sch=ja[9]
|
105
|
+
#set_property -dict { PACKAGE_PIN G18 IOSTANDARD LVCMOS33 } [get_ports { JA[10] }]; #IO_L22P_T3_A17_15 Sch=ja[10]
|
106
|
+
|
107
|
+
|
108
|
+
##Pmod Header JB
|
109
|
+
|
110
|
+
#set_property -dict { PACKAGE_PIN D14 IOSTANDARD LVCMOS33 } [get_ports { JB[1] }]; #IO_L1P_T0_AD0P_15 Sch=jb[1]
|
111
|
+
#set_property -dict { PACKAGE_PIN F16 IOSTANDARD LVCMOS33 } [get_ports { JB[2] }]; #IO_L14N_T2_SRCC_15 Sch=jb[2]
|
112
|
+
#set_property -dict { PACKAGE_PIN G16 IOSTANDARD LVCMOS33 } [get_ports { JB[3] }]; #IO_L13N_T2_MRCC_15 Sch=jb[3]
|
113
|
+
#set_property -dict { PACKAGE_PIN H14 IOSTANDARD LVCMOS33 } [get_ports { JB[4] }]; #IO_L15P_T2_DQS_15 Sch=jb[4]
|
114
|
+
#set_property -dict { PACKAGE_PIN E16 IOSTANDARD LVCMOS33 } [get_ports { JB[7] }]; #IO_L11N_T1_SRCC_15 Sch=jb[7]
|
115
|
+
#set_property -dict { PACKAGE_PIN F13 IOSTANDARD LVCMOS33 } [get_ports { JB[8] }]; #IO_L5P_T0_AD9P_15 Sch=jb[8]
|
116
|
+
#set_property -dict { PACKAGE_PIN G13 IOSTANDARD LVCMOS33 } [get_ports { JB[9] }]; #IO_0_15 Sch=jb[9]
|
117
|
+
#set_property -dict { PACKAGE_PIN H16 IOSTANDARD LVCMOS33 } [get_ports { JB[10] }]; #IO_L13P_T2_MRCC_15 Sch=jb[10]
|
118
|
+
|
119
|
+
|
120
|
+
##Pmod Header JC
|
121
|
+
|
122
|
+
#set_property -dict { PACKAGE_PIN K1 IOSTANDARD LVCMOS33 } [get_ports { JC[1] }]; #IO_L23N_T3_35 Sch=jc[1]
|
123
|
+
#set_property -dict { PACKAGE_PIN F6 IOSTANDARD LVCMOS33 } [get_ports { JC[2] }]; #IO_L19N_T3_VREF_35 Sch=jc[2]
|
124
|
+
#set_property -dict { PACKAGE_PIN J2 IOSTANDARD LVCMOS33 } [get_ports { JC[3] }]; #IO_L22N_T3_35 Sch=jc[3]
|
125
|
+
#set_property -dict { PACKAGE_PIN G6 IOSTANDARD LVCMOS33 } [get_ports { JC[4] }]; #IO_L19P_T3_35 Sch=jc[4]
|
126
|
+
#set_property -dict { PACKAGE_PIN E7 IOSTANDARD LVCMOS33 } [get_ports { JC[7] }]; #IO_L6P_T0_35 Sch=jc[7]
|
127
|
+
#set_property -dict { PACKAGE_PIN J3 IOSTANDARD LVCMOS33 } [get_ports { JC[8] }]; #IO_L22P_T3_35 Sch=jc[8]
|
128
|
+
#set_property -dict { PACKAGE_PIN J4 IOSTANDARD LVCMOS33 } [get_ports { JC[9] }]; #IO_L21P_T3_DQS_35 Sch=jc[9]
|
129
|
+
#set_property -dict { PACKAGE_PIN E6 IOSTANDARD LVCMOS33 } [get_ports { JC[10] }]; #IO_L5P_T0_AD13P_35 Sch=jc[10]
|
130
|
+
|
131
|
+
|
132
|
+
##Pmod Header JD
|
133
|
+
|
134
|
+
#set_property -dict { PACKAGE_PIN H4 IOSTANDARD LVCMOS33 } [get_ports { JD[1] }]; #IO_L21N_T3_DQS_35 Sch=jd[1]
|
135
|
+
#set_property -dict { PACKAGE_PIN H1 IOSTANDARD LVCMOS33 } [get_ports { JD[2] }]; #IO_L17P_T2_35 Sch=jd[2]
|
136
|
+
#set_property -dict { PACKAGE_PIN G1 IOSTANDARD LVCMOS33 } [get_ports { JD[3] }]; #IO_L17N_T2_35 Sch=jd[3]
|
137
|
+
#set_property -dict { PACKAGE_PIN G3 IOSTANDARD LVCMOS33 } [get_ports { JD[4] }]; #IO_L20N_T3_35 Sch=jd[4]
|
138
|
+
#set_property -dict { PACKAGE_PIN H2 IOSTANDARD LVCMOS33 } [get_ports { JD[7] }]; #IO_L15P_T2_DQS_35 Sch=jd[7]
|
139
|
+
#set_property -dict { PACKAGE_PIN G4 IOSTANDARD LVCMOS33 } [get_ports { JD[8] }]; #IO_L20P_T3_35 Sch=jd[8]
|
140
|
+
#set_property -dict { PACKAGE_PIN G2 IOSTANDARD LVCMOS33 } [get_ports { JD[9] }]; #IO_L15N_T2_DQS_35 Sch=jd[9]
|
141
|
+
#set_property -dict { PACKAGE_PIN F3 IOSTANDARD LVCMOS33 } [get_ports { JD[10] }]; #IO_L13N_T2_MRCC_35 Sch=jd[10]
|
142
|
+
|
143
|
+
|
144
|
+
##Pmod Header JXADC
|
145
|
+
|
146
|
+
#set_property -dict { PACKAGE_PIN A14 IOSTANDARD LVDS } [get_ports { XA_N[1] }]; #IO_L9N_T1_DQS_AD3N_15 Sch=xa_n[1]
|
147
|
+
#set_property -dict { PACKAGE_PIN A13 IOSTANDARD LVDS } [get_ports { XA_P[1] }]; #IO_L9P_T1_DQS_AD3P_15 Sch=xa_p[1]
|
148
|
+
#set_property -dict { PACKAGE_PIN A16 IOSTANDARD LVDS } [get_ports { XA_N[2] }]; #IO_L8N_T1_AD10N_15 Sch=xa_n[2]
|
149
|
+
#set_property -dict { PACKAGE_PIN A15 IOSTANDARD LVDS } [get_ports { XA_P[2] }]; #IO_L8P_T1_AD10P_15 Sch=xa_p[2]
|
150
|
+
#set_property -dict { PACKAGE_PIN B17 IOSTANDARD LVDS } [get_ports { XA_N[3] }]; #IO_L7N_T1_AD2N_15 Sch=xa_n[3]
|
151
|
+
#set_property -dict { PACKAGE_PIN B16 IOSTANDARD LVDS } [get_ports { XA_P[3] }]; #IO_L7P_T1_AD2P_15 Sch=xa_p[3]
|
152
|
+
#set_property -dict { PACKAGE_PIN A18 IOSTANDARD LVDS } [get_ports { XA_N[4] }]; #IO_L10N_T1_AD11N_15 Sch=xa_n[4]
|
153
|
+
#set_property -dict { PACKAGE_PIN B18 IOSTANDARD LVDS } [get_ports { XA_P[4] }]; #IO_L10P_T1_AD11P_15 Sch=xa_p[4]
|
154
|
+
|
155
|
+
|
156
|
+
##VGA Connector
|
157
|
+
|
158
|
+
#set_property -dict { PACKAGE_PIN A3 IOSTANDARD LVCMOS33 } [get_ports { VGA_R[0] }]; #IO_L8N_T1_AD14N_35 Sch=vga_r[0]
|
159
|
+
#set_property -dict { PACKAGE_PIN B4 IOSTANDARD LVCMOS33 } [get_ports { VGA_R[1] }]; #IO_L7N_T1_AD6N_35 Sch=vga_r[1]
|
160
|
+
#set_property -dict { PACKAGE_PIN C5 IOSTANDARD LVCMOS33 } [get_ports { VGA_R[2] }]; #IO_L1N_T0_AD4N_35 Sch=vga_r[2]
|
161
|
+
#set_property -dict { PACKAGE_PIN A4 IOSTANDARD LVCMOS33 } [get_ports { VGA_R[3] }]; #IO_L8P_T1_AD14P_35 Sch=vga_r[3]
|
162
|
+
|
163
|
+
#set_property -dict { PACKAGE_PIN C6 IOSTANDARD LVCMOS33 } [get_ports { VGA_G[0] }]; #IO_L1P_T0_AD4P_35 Sch=vga_g[0]
|
164
|
+
#set_property -dict { PACKAGE_PIN A5 IOSTANDARD LVCMOS33 } [get_ports { VGA_G[1] }]; #IO_L3N_T0_DQS_AD5N_35 Sch=vga_g[1]
|
165
|
+
#set_property -dict { PACKAGE_PIN B6 IOSTANDARD LVCMOS33 } [get_ports { VGA_G[2] }]; #IO_L2N_T0_AD12N_35 Sch=vga_g[2]
|
166
|
+
#set_property -dict { PACKAGE_PIN A6 IOSTANDARD LVCMOS33 } [get_ports { VGA_G[3] }]; #IO_L3P_T0_DQS_AD5P_35 Sch=vga_g[3]
|
167
|
+
|
168
|
+
#set_property -dict { PACKAGE_PIN B7 IOSTANDARD LVCMOS33 } [get_ports { VGA_B[0] }]; #IO_L2P_T0_AD12P_35 Sch=vga_b[0]
|
169
|
+
#set_property -dict { PACKAGE_PIN C7 IOSTANDARD LVCMOS33 } [get_ports { VGA_B[1] }]; #IO_L4N_T0_35 Sch=vga_b[1]
|
170
|
+
#set_property -dict { PACKAGE_PIN D7 IOSTANDARD LVCMOS33 } [get_ports { VGA_B[2] }]; #IO_L6N_T0_VREF_35 Sch=vga_b[2]
|
171
|
+
#set_property -dict { PACKAGE_PIN D8 IOSTANDARD LVCMOS33 } [get_ports { VGA_B[3] }]; #IO_L4P_T0_35 Sch=vga_b[3]
|
172
|
+
|
173
|
+
#set_property -dict { PACKAGE_PIN B11 IOSTANDARD LVCMOS33 } [get_ports { VGA_HS }]; #IO_L4P_T0_15 Sch=vga_hs
|
174
|
+
#set_property -dict { PACKAGE_PIN B12 IOSTANDARD LVCMOS33 } [get_ports { VGA_VS }]; #IO_L3N_T0_DQS_AD1N_15 Sch=vga_vs
|
175
|
+
|
176
|
+
|
177
|
+
##Micro SD Connector
|
178
|
+
|
179
|
+
#set_property -dict { PACKAGE_PIN E2 IOSTANDARD LVCMOS33 } [get_ports { SD_RESET }]; #IO_L14P_T2_SRCC_35 Sch=sd_reset
|
180
|
+
#set_property -dict { PACKAGE_PIN A1 IOSTANDARD LVCMOS33 } [get_ports { SD_CD }]; #IO_L9N_T1_DQS_AD7N_35 Sch=sd_cd
|
181
|
+
#set_property -dict { PACKAGE_PIN B1 IOSTANDARD LVCMOS33 } [get_ports { SD_SCK }]; #IO_L9P_T1_DQS_AD7P_35 Sch=sd_sck
|
182
|
+
#set_property -dict { PACKAGE_PIN C1 IOSTANDARD LVCMOS33 } [get_ports { SD_CMD }]; #IO_L16N_T2_35 Sch=sd_cmd
|
183
|
+
#set_property -dict { PACKAGE_PIN C2 IOSTANDARD LVCMOS33 } [get_ports { SD_DAT[0] }]; #IO_L16P_T2_35 Sch=sd_dat[0]
|
184
|
+
#set_property -dict { PACKAGE_PIN E1 IOSTANDARD LVCMOS33 } [get_ports { SD_DAT[1] }]; #IO_L18N_T2_35 Sch=sd_dat[1]
|
185
|
+
#set_property -dict { PACKAGE_PIN F1 IOSTANDARD LVCMOS33 } [get_ports { SD_DAT[2] }]; #IO_L18P_T2_35 Sch=sd_dat[2]
|
186
|
+
#set_property -dict { PACKAGE_PIN D2 IOSTANDARD LVCMOS33 } [get_ports { SD_DAT[3] }]; #IO_L14N_T2_SRCC_35 Sch=sd_dat[3]
|
187
|
+
|
188
|
+
|
189
|
+
##Accelerometer
|
190
|
+
|
191
|
+
#set_property -dict { PACKAGE_PIN E15 IOSTANDARD LVCMOS33 } [get_ports { ACL_MISO }]; #IO_L11P_T1_SRCC_15 Sch=acl_miso
|
192
|
+
#set_property -dict { PACKAGE_PIN F14 IOSTANDARD LVCMOS33 } [get_ports { ACL_MOSI }]; #IO_L5N_T0_AD9N_15 Sch=acl_mosi
|
193
|
+
#set_property -dict { PACKAGE_PIN F15 IOSTANDARD LVCMOS33 } [get_ports { ACL_SCLK }]; #IO_L14P_T2_SRCC_15 Sch=acl_sclk
|
194
|
+
#set_property -dict { PACKAGE_PIN D15 IOSTANDARD LVCMOS33 } [get_ports { ACL_CSN }]; #IO_L12P_T1_MRCC_15 Sch=acl_csn
|
195
|
+
#set_property -dict { PACKAGE_PIN B13 IOSTANDARD LVCMOS33 } [get_ports { ACL_INT[1] }]; #IO_L2P_T0_AD8P_15 Sch=acl_int[1]
|
196
|
+
#set_property -dict { PACKAGE_PIN C16 IOSTANDARD LVCMOS33 } [get_ports { ACL_INT[2] }]; #IO_L20P_T3_A20_15 Sch=acl_int[2]
|
197
|
+
|
198
|
+
|
199
|
+
##Temperature Sensor
|
200
|
+
|
201
|
+
#set_property -dict { PACKAGE_PIN C14 IOSTANDARD LVCMOS33 } [get_ports { TMP_SCL }]; #IO_L1N_T0_AD0N_15 Sch=tmp_scl
|
202
|
+
#set_property -dict { PACKAGE_PIN C15 IOSTANDARD LVCMOS33 } [get_ports { TMP_SDA }]; #IO_L12N_T1_MRCC_15 Sch=tmp_sda
|
203
|
+
#set_property -dict { PACKAGE_PIN D13 IOSTANDARD LVCMOS33 } [get_ports { TMP_INT }]; #IO_L6N_T0_VREF_15 Sch=tmp_int
|
204
|
+
#set_property -dict { PACKAGE_PIN B14 IOSTANDARD LVCMOS33 } [get_ports { TMP_CT }]; #IO_L2N_T0_AD8N_15 Sch=tmp_ct
|
205
|
+
|
206
|
+
##Omnidirectional Microphone
|
207
|
+
|
208
|
+
#set_property -dict { PACKAGE_PIN J5 IOSTANDARD LVCMOS33 } [get_ports { M_CLK }]; #IO_25_35 Sch=m_clk
|
209
|
+
#set_property -dict { PACKAGE_PIN H5 IOSTANDARD LVCMOS33 } [get_ports { M_DATA }]; #IO_L24N_T3_35 Sch=m_data
|
210
|
+
#set_property -dict { PACKAGE_PIN F5 IOSTANDARD LVCMOS33 } [get_ports { M_LRSEL }]; #IO_0_35 Sch=m_lrsel
|
211
|
+
|
212
|
+
|
213
|
+
##PWM Audio Amplifier
|
214
|
+
|
215
|
+
#set_property -dict { PACKAGE_PIN A11 IOSTANDARD LVCMOS33 } [get_ports { AUD_PWM }]; #IO_L4N_T0_15 Sch=aud_pwm
|
216
|
+
#set_property -dict { PACKAGE_PIN D12 IOSTANDARD LVCMOS33 } [get_ports { AUD_SD }]; #IO_L6P_T0_15 Sch=aud_sd
|
217
|
+
|
218
|
+
|
219
|
+
##USB-RS232 Interface
|
220
|
+
|
221
|
+
set_property -dict { PACKAGE_PIN C4 IOSTANDARD LVCMOS33 } [get_ports { rx }]; #IO_L7P_T1_AD6P_35 Sch=uart_txd_in
|
222
|
+
set_property -dict { PACKAGE_PIN D4 IOSTANDARD LVCMOS33 } [get_ports { tx }]; #IO_L11N_T1_SRCC_35 Sch=uart_rxd_out
|
223
|
+
|
224
|
+
#set_property -dict { PACKAGE_PIN D3 IOSTANDARD LVCMOS33 } [get_ports { UART_CTS }]; #IO_L12N_T1_MRCC_35 Sch=uart_cts
|
225
|
+
#set_property -dict { PACKAGE_PIN E5 IOSTANDARD LVCMOS33 } [get_ports { UART_RTS }]; #IO_L5N_T0_AD13N_35 Sch=uart_rts
|
226
|
+
|
227
|
+
##USB HID (PS/2)
|
228
|
+
|
229
|
+
#set_property -dict { PACKAGE_PIN F4 IOSTANDARD LVCMOS33 } [get_ports { PS2_CLK }]; #IO_L13P_T2_MRCC_35 Sch=ps2_clk
|
230
|
+
#set_property -dict { PACKAGE_PIN B2 IOSTANDARD LVCMOS33 } [get_ports { PS2_DATA }]; #IO_L10N_T1_AD15N_35 Sch=ps2_data
|
231
|
+
|
232
|
+
|
233
|
+
##SMSC Ethernet PHY
|
234
|
+
|
235
|
+
#set_property -dict { PACKAGE_PIN C9 IOSTANDARD LVCMOS33 } [get_ports { ETH_MDC }]; #IO_L11P_T1_SRCC_16 Sch=eth_mdc
|
236
|
+
#set_property -dict { PACKAGE_PIN A9 IOSTANDARD LVCMOS33 } [get_ports { ETH_MDIO }]; #IO_L14N_T2_SRCC_16 Sch=eth_mdio
|
237
|
+
#set_property -dict { PACKAGE_PIN B3 IOSTANDARD LVCMOS33 } [get_ports { ETH_RSTN }]; #IO_L10P_T1_AD15P_35 Sch=eth_rstn
|
238
|
+
#set_property -dict { PACKAGE_PIN D9 IOSTANDARD LVCMOS33 } [get_ports { ETH_CRSDV }]; #IO_L6N_T0_VREF_16 Sch=eth_crsdv
|
239
|
+
#set_property -dict { PACKAGE_PIN C10 IOSTANDARD LVCMOS33 } [get_ports { ETH_RXERR }]; #IO_L13N_T2_MRCC_16 Sch=eth_rxerr
|
240
|
+
#set_property -dict { PACKAGE_PIN C11 IOSTANDARD LVCMOS33 } [get_ports { ETH_RXD[0] }]; #IO_L13P_T2_MRCC_16 Sch=eth_rxd[0]
|
241
|
+
#set_property -dict { PACKAGE_PIN D10 IOSTANDARD LVCMOS33 } [get_ports { ETH_RXD[1] }]; #IO_L19N_T3_VREF_16 Sch=eth_rxd[1]
|
242
|
+
#set_property -dict { PACKAGE_PIN B9 IOSTANDARD LVCMOS33 } [get_ports { ETH_TXEN }]; #IO_L11N_T1_SRCC_16 Sch=eth_txen
|
243
|
+
#set_property -dict { PACKAGE_PIN A10 IOSTANDARD LVCMOS33 } [get_ports { ETH_TXD[0] }]; #IO_L14P_T2_SRCC_16 Sch=eth_txd[0]
|
244
|
+
#set_property -dict { PACKAGE_PIN A8 IOSTANDARD LVCMOS33 } [get_ports { ETH_TXD[1] }]; #IO_L12N_T1_MRCC_16 Sch=eth_txd[1]
|
245
|
+
#set_property -dict { PACKAGE_PIN D5 IOSTANDARD LVCMOS33 } [get_ports { ETH_REFCLK }]; #IO_L11P_T1_SRCC_35 Sch=eth_refclk
|
246
|
+
#set_property -dict { PACKAGE_PIN B8 IOSTANDARD LVCMOS33 } [get_ports { ETH_INTN }]; #IO_L12P_T1_MRCC_16 Sch=eth_intn
|
247
|
+
|
248
|
+
|
249
|
+
##Quad SPI Flash
|
250
|
+
|
251
|
+
#set_property -dict { PACKAGE_PIN K17 IOSTANDARD LVCMOS33 } [get_ports { QSPI_DQ[0] }]; #IO_L1P_T0_D00_MOSI_14 Sch=qspi_dq[0]
|
252
|
+
#set_property -dict { PACKAGE_PIN K18 IOSTANDARD LVCMOS33 } [get_ports { QSPI_DQ[1] }]; #IO_L1N_T0_D01_DIN_14 Sch=qspi_dq[1]
|
253
|
+
#set_property -dict { PACKAGE_PIN L14 IOSTANDARD LVCMOS33 } [get_ports { QSPI_DQ[2] }]; #IO_L2P_T0_D02_14 Sch=qspi_dq[2]
|
254
|
+
#set_property -dict { PACKAGE_PIN M14 IOSTANDARD LVCMOS33 } [get_ports { QSPI_DQ[3] }]; #IO_L2N_T0_D03_14 Sch=qspi_dq[3]
|
255
|
+
#set_property -dict { PACKAGE_PIN L13 IOSTANDARD LVCMOS33 } [get_ports { QSPI_CSN }]; #IO_L6P_T0_FCS_B_14 Sch=qspi_csn
|
data/assets/fifo.vhd
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
-- Listing 4.20
|
2
|
+
library ieee;
|
3
|
+
use ieee.std_logic_1164.all;
|
4
|
+
use ieee.numeric_std.all;
|
5
|
+
entity fifo is
|
6
|
+
generic(
|
7
|
+
B: natural:=8; -- number of bits
|
8
|
+
W: natural:=4 -- number of address bits
|
9
|
+
);
|
10
|
+
port(
|
11
|
+
clk, reset_n: in std_logic;
|
12
|
+
rd, wr: in std_logic;
|
13
|
+
w_data: in std_logic_vector (B-1 downto 0);
|
14
|
+
empty, full: out std_logic;
|
15
|
+
r_data: out std_logic_vector (B-1 downto 0)
|
16
|
+
);
|
17
|
+
end fifo;
|
18
|
+
|
19
|
+
architecture arch of fifo is
|
20
|
+
type reg_file_type is array (2**W-1 downto 0) of
|
21
|
+
std_logic_vector(B-1 downto 0);
|
22
|
+
signal array_reg: reg_file_type;
|
23
|
+
signal w_ptr_reg, w_ptr_next, w_ptr_succ:
|
24
|
+
std_logic_vector(W-1 downto 0);
|
25
|
+
signal r_ptr_reg, r_ptr_next, r_ptr_succ:
|
26
|
+
std_logic_vector(W-1 downto 0);
|
27
|
+
signal full_reg, empty_reg, full_next, empty_next:
|
28
|
+
std_logic;
|
29
|
+
signal wr_op: std_logic_vector(1 downto 0);
|
30
|
+
signal wr_en: std_logic;
|
31
|
+
begin
|
32
|
+
--=================================================
|
33
|
+
-- register file
|
34
|
+
--=================================================
|
35
|
+
process(clk,reset_n)
|
36
|
+
begin
|
37
|
+
if (reset_n='0') then
|
38
|
+
array_reg <= (others=>(others=>'0'));
|
39
|
+
elsif (clk'event and clk='1') then
|
40
|
+
if wr_en='1' then
|
41
|
+
array_reg(to_integer(unsigned(w_ptr_reg)))
|
42
|
+
<= w_data;
|
43
|
+
end if;
|
44
|
+
end if;
|
45
|
+
end process;
|
46
|
+
-- read port
|
47
|
+
r_data <= array_reg(to_integer(unsigned(r_ptr_reg)));
|
48
|
+
-- write enabled only when FIFO is not full
|
49
|
+
wr_en <= wr and (not full_reg);
|
50
|
+
|
51
|
+
--=================================================
|
52
|
+
-- fifo control logic
|
53
|
+
--=================================================
|
54
|
+
-- register for read and write pointers
|
55
|
+
process(clk,reset_n)
|
56
|
+
begin
|
57
|
+
if (reset_n='0') then
|
58
|
+
w_ptr_reg <= (others=>'0');
|
59
|
+
r_ptr_reg <= (others=>'0');
|
60
|
+
full_reg <= '0';
|
61
|
+
empty_reg <= '1';
|
62
|
+
elsif (clk'event and clk='1') then
|
63
|
+
w_ptr_reg <= w_ptr_next;
|
64
|
+
r_ptr_reg <= r_ptr_next;
|
65
|
+
full_reg <= full_next;
|
66
|
+
empty_reg <= empty_next;
|
67
|
+
end if;
|
68
|
+
end process;
|
69
|
+
|
70
|
+
-- successive pointer values
|
71
|
+
w_ptr_succ <= std_logic_vector(unsigned(w_ptr_reg)+1);
|
72
|
+
r_ptr_succ <= std_logic_vector(unsigned(r_ptr_reg)+1);
|
73
|
+
|
74
|
+
-- next-state logic for read and write pointers
|
75
|
+
wr_op <= wr & rd;
|
76
|
+
process(w_ptr_reg,w_ptr_succ,r_ptr_reg,r_ptr_succ,wr_op,
|
77
|
+
empty_reg,full_reg)
|
78
|
+
begin
|
79
|
+
w_ptr_next <= w_ptr_reg;
|
80
|
+
r_ptr_next <= r_ptr_reg;
|
81
|
+
full_next <= full_reg;
|
82
|
+
empty_next <= empty_reg;
|
83
|
+
case wr_op is
|
84
|
+
when "00" => -- no op
|
85
|
+
when "01" => -- read
|
86
|
+
if (empty_reg /= '1') then -- not empty
|
87
|
+
r_ptr_next <= r_ptr_succ;
|
88
|
+
full_next <= '0';
|
89
|
+
if (r_ptr_succ=w_ptr_reg) then
|
90
|
+
empty_next <='1';
|
91
|
+
end if;
|
92
|
+
end if;
|
93
|
+
when "10" => -- write
|
94
|
+
if (full_reg /= '1') then -- not full
|
95
|
+
w_ptr_next <= w_ptr_succ;
|
96
|
+
empty_next <= '0';
|
97
|
+
if (w_ptr_succ=r_ptr_reg) then
|
98
|
+
full_next <='1';
|
99
|
+
end if;
|
100
|
+
end if;
|
101
|
+
when others => -- write/read;
|
102
|
+
w_ptr_next <= w_ptr_succ;
|
103
|
+
r_ptr_next <= r_ptr_succ;
|
104
|
+
end case;
|
105
|
+
end process;
|
106
|
+
-- output
|
107
|
+
full <= full_reg;
|
108
|
+
empty <= empty_reg;
|
109
|
+
end arch;
|
data/assets/flag_buf.vhd
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
-- Listing 7.2
|
2
|
+
library ieee;
|
3
|
+
use ieee.std_logic_1164.all;
|
4
|
+
entity flag_buf is
|
5
|
+
generic(W: integer:=8);
|
6
|
+
port(
|
7
|
+
clk, reset_n: in std_logic;
|
8
|
+
clr_flag, set_flag: in std_logic;
|
9
|
+
din: in std_logic_vector(W-1 downto 0);
|
10
|
+
dout: out std_logic_vector(W-1 downto 0);
|
11
|
+
flag: out std_logic
|
12
|
+
);
|
13
|
+
end flag_buf;
|
14
|
+
|
15
|
+
architecture arch of flag_buf is
|
16
|
+
signal buf_reg, buf_next: std_logic_vector(W-1 downto 0);
|
17
|
+
signal flag_reg, flag_next: std_logic;
|
18
|
+
begin
|
19
|
+
-- FF & register
|
20
|
+
process(clk,reset_n)
|
21
|
+
begin
|
22
|
+
if reset_n='0' then
|
23
|
+
buf_reg <= (others=>'0');
|
24
|
+
flag_reg <= '0';
|
25
|
+
elsif (clk'event and clk='1') then
|
26
|
+
buf_reg <= buf_next;
|
27
|
+
flag_reg <= flag_next;
|
28
|
+
end if;
|
29
|
+
end process;
|
30
|
+
-- next-state logic
|
31
|
+
process(buf_reg,flag_reg,set_flag,clr_flag,din)
|
32
|
+
begin
|
33
|
+
buf_next <= buf_reg;
|
34
|
+
flag_next <= flag_reg;
|
35
|
+
if (set_flag='1') then
|
36
|
+
buf_next <= din;
|
37
|
+
flag_next <= '1';
|
38
|
+
elsif (clr_flag='1') then
|
39
|
+
flag_next <= '0';
|
40
|
+
end if;
|
41
|
+
end process;
|
42
|
+
-- output logic
|
43
|
+
dout <= buf_reg;
|
44
|
+
flag <= flag_reg;
|
45
|
+
end arch;
|
@@ -0,0 +1,36 @@
|
|
1
|
+
-- pong chu version
|
2
|
+
library ieee;
|
3
|
+
use ieee.std_logic_1164.all;
|
4
|
+
use ieee.numeric_std.all;
|
5
|
+
entity mod_m_counter is
|
6
|
+
generic(
|
7
|
+
N : integer := 4; -- number of bits
|
8
|
+
M : integer := 10 -- mod-M
|
9
|
+
);
|
10
|
+
port(
|
11
|
+
clk, reset_n : in std_logic;
|
12
|
+
max_tick : out std_logic;
|
13
|
+
q : out std_logic_vector(N-1 downto 0)
|
14
|
+
);
|
15
|
+
end mod_m_counter;
|
16
|
+
|
17
|
+
architecture arch of mod_m_counter is
|
18
|
+
signal r_reg : unsigned(N-1 downto 0);
|
19
|
+
signal r_next : unsigned(N-1 downto 0);
|
20
|
+
begin
|
21
|
+
-- register
|
22
|
+
process(clk, reset_n)
|
23
|
+
begin
|
24
|
+
if (reset_n = '0') then
|
25
|
+
r_reg <= (others => '0');
|
26
|
+
elsif (clk'event and clk = '1') then
|
27
|
+
r_reg <= r_next;
|
28
|
+
end if;
|
29
|
+
end process;
|
30
|
+
-- next-state logic
|
31
|
+
r_next <= (others => '0') when r_reg = (M-1) else
|
32
|
+
r_reg + 1;
|
33
|
+
-- output logic
|
34
|
+
q <= std_logic_vector(r_reg);
|
35
|
+
max_tick <= '1' when r_reg = (M-1) else '0';
|
36
|
+
end arch;
|