Добавил в проект LedController. Начал реализацию загрузчика.
This commit is contained in:
parent
da0eef977c
commit
51ae2e64a4
@ -159,7 +159,7 @@ applicable agreement for further details.
|
||||
(input)
|
||||
(rect 368 1520 536 1536)
|
||||
(text "INPUT" (rect 125 0 153 10)(font "Arial" (font_size 6)))
|
||||
(text "PWM[5..0]" (rect 5 0 57 12)(font "Arial" ))
|
||||
(text "PWM[5..0]" (rect 5 0 56 12)(font "Arial" ))
|
||||
(pt 168 8)
|
||||
(drawing
|
||||
(line (pt 84 12)(pt 109 12))
|
||||
@ -462,8 +462,40 @@ applicable agreement for further details.
|
||||
(annotation_block (location)(rect 2096 984 2144 1440))
|
||||
)
|
||||
(pin
|
||||
(bidir)
|
||||
(output)
|
||||
(rect 1840 280 2016 296)
|
||||
(text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6)))
|
||||
(text "AsyncLine" (rect 90 0 141 12)(font "Arial" ))
|
||||
(pt 0 8)
|
||||
(drawing
|
||||
(line (pt 0 8)(pt 52 8))
|
||||
(line (pt 52 4)(pt 78 4))
|
||||
(line (pt 52 12)(pt 78 12))
|
||||
(line (pt 52 12)(pt 52 4))
|
||||
(line (pt 78 4)(pt 82 8))
|
||||
(line (pt 82 8)(pt 78 12))
|
||||
(line (pt 78 12)(pt 82 8))
|
||||
)
|
||||
)
|
||||
(pin
|
||||
(output)
|
||||
(rect 1840 296 2016 312)
|
||||
(text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6)))
|
||||
(text "DivClk" (rect 90 0 124 12)(font "Arial" ))
|
||||
(pt 0 8)
|
||||
(drawing
|
||||
(line (pt 0 8)(pt 52 8))
|
||||
(line (pt 52 4)(pt 78 4))
|
||||
(line (pt 52 12)(pt 78 12))
|
||||
(line (pt 52 12)(pt 52 4))
|
||||
(line (pt 78 4)(pt 82 8))
|
||||
(line (pt 82 8)(pt 78 12))
|
||||
(line (pt 78 12)(pt 82 8))
|
||||
)
|
||||
)
|
||||
(pin
|
||||
(bidir)
|
||||
(rect 1848 1664 2024 1680)
|
||||
(text "BIDIR" (rect 1 0 25 10)(font "Arial" (font_size 6)))
|
||||
(text "Data[7..0]" (rect 122 0 171 12)(font "Arial" ))
|
||||
(pt 0 8)
|
||||
@ -477,7 +509,7 @@ applicable agreement for further details.
|
||||
(line (pt 52 8)(pt 56 12))
|
||||
)
|
||||
(text "VCC" (rect 4 7 24 17)(font "Arial" (font_size 6)))
|
||||
(annotation_block (location)(rect 2024 168 2080 280))
|
||||
(annotation_block (location)(rect 2032 1552 2088 1664))
|
||||
)
|
||||
(pin
|
||||
(bidir)
|
||||
@ -691,60 +723,6 @@ applicable agreement for further details.
|
||||
)
|
||||
(annotation_block (parameter)(rect 1040 416 1360 544))
|
||||
)
|
||||
(symbol
|
||||
(rect 1040 256 1368 368)
|
||||
(text "RAM" (rect 5 0 28 12)(font "Arial" ))
|
||||
(text "inst1" (rect 8 96 31 108)(font "Arial" ))
|
||||
(port
|
||||
(pt 0 32)
|
||||
(input)
|
||||
(text "address[address_bus_width-1..0]" (rect 0 0 161 12)(font "Arial" ))
|
||||
(text "address[address_bus_width-1..0]" (rect 21 27 182 39)(font "Arial" ))
|
||||
(line (pt 0 32)(pt 16 32)(line_width 3))
|
||||
)
|
||||
(port
|
||||
(pt 0 48)
|
||||
(input)
|
||||
(text "we" (rect 0 0 12 12)(font "Arial" ))
|
||||
(text "we" (rect 21 43 33 55)(font "Arial" ))
|
||||
(line (pt 0 48)(pt 16 48))
|
||||
)
|
||||
(port
|
||||
(pt 0 64)
|
||||
(input)
|
||||
(text "oe" (rect 0 0 11 12)(font "Arial" ))
|
||||
(text "oe" (rect 21 59 32 71)(font "Arial" ))
|
||||
(line (pt 0 64)(pt 16 64))
|
||||
)
|
||||
(port
|
||||
(pt 0 80)
|
||||
(input)
|
||||
(text "ce" (rect 0 0 11 12)(font "Arial" ))
|
||||
(text "ce" (rect 21 75 32 87)(font "Arial" ))
|
||||
(line (pt 0 80)(pt 16 80))
|
||||
)
|
||||
(port
|
||||
(pt 328 32)
|
||||
(bidir)
|
||||
(text "data[data_bus_width-1..0]" (rect 0 0 126 12)(font "Arial" ))
|
||||
(text "data[data_bus_width-1..0]" (rect 208 27 334 39)(font "Arial" ))
|
||||
(line (pt 328 32)(pt 312 32)(line_width 3))
|
||||
)
|
||||
(parameter
|
||||
"DATA_BUS_WIDTH"
|
||||
"8"
|
||||
""
|
||||
(type "PARAMETER_SIGNED_DEC") )
|
||||
(parameter
|
||||
"ADDRESS_BUS_WIDTH"
|
||||
"9"
|
||||
""
|
||||
(type "PARAMETER_SIGNED_DEC") )
|
||||
(drawing
|
||||
(rectangle (rect 16 16 312 96))
|
||||
)
|
||||
(annotation_block (parameter)(rect 1040 208 1280 256))
|
||||
)
|
||||
(symbol
|
||||
(rect 1040 864 1368 1008)
|
||||
(text "RAM9X8_ParallelBusMaster" (rect 5 0 139 12)(font "Arial" ))
|
||||
@ -1005,7 +983,7 @@ applicable agreement for further details.
|
||||
)
|
||||
)
|
||||
(symbol
|
||||
(rect 1552 408 1584 424)
|
||||
(rect 1552 400 1584 416)
|
||||
(text "VCC" (rect 7 0 27 10)(font "Arial" (font_size 6)))
|
||||
(text "inst13" (rect 3 5 32 17)(font "Arial" )(invisible))
|
||||
(port
|
||||
@ -1264,14 +1242,14 @@ applicable agreement for further details.
|
||||
(pt 328 48)
|
||||
(output)
|
||||
(text "tk[31..0]" (rect 0 0 41 12)(font "Arial" ))
|
||||
(text "tk[31..0]" (rect 273 43 307 55)(font "Arial" ))
|
||||
(text "tk[31..0]" (rect 273 43 314 55)(font "Arial" ))
|
||||
(line (pt 328 48)(pt 312 48)(line_width 3))
|
||||
)
|
||||
(port
|
||||
(pt 328 64)
|
||||
(output)
|
||||
(text "interrupt" (rect 0 0 40 12)(font "Arial" ))
|
||||
(text "interrupt" (rect 274 59 307 71)(font "Arial" ))
|
||||
(text "interrupt" (rect 274 59 314 71)(font "Arial" ))
|
||||
(line (pt 328 64)(pt 312 64))
|
||||
)
|
||||
(port
|
||||
@ -1416,6 +1394,184 @@ applicable agreement for further details.
|
||||
)
|
||||
(annotation_block (parameter)(rect 1024 1016 1400 1400))
|
||||
)
|
||||
(symbol
|
||||
(rect 1040 240 1368 384)
|
||||
(text "RAM9X8_LedController" (rect 5 0 117 12)(font "Arial" ))
|
||||
(text "inst19" (rect 8 128 37 140)(font "Arial" ))
|
||||
(port
|
||||
(pt 0 32)
|
||||
(input)
|
||||
(text "clk" (rect 0 0 14 12)(font "Arial" ))
|
||||
(text "clk" (rect 21 27 35 39)(font "Arial" ))
|
||||
(line (pt 0 32)(pt 16 32))
|
||||
)
|
||||
(port
|
||||
(pt 0 48)
|
||||
(input)
|
||||
(text "address[address_bus_width-1..0]" (rect 0 0 161 12)(font "Arial" ))
|
||||
(text "address[address_bus_width-1..0]" (rect 21 43 182 55)(font "Arial" ))
|
||||
(line (pt 0 48)(pt 16 48)(line_width 3))
|
||||
)
|
||||
(port
|
||||
(pt 0 64)
|
||||
(input)
|
||||
(text "we" (rect 0 0 12 12)(font "Arial" ))
|
||||
(text "we" (rect 21 59 33 71)(font "Arial" ))
|
||||
(line (pt 0 64)(pt 16 64))
|
||||
)
|
||||
(port
|
||||
(pt 0 80)
|
||||
(input)
|
||||
(text "oe" (rect 0 0 11 12)(font "Arial" ))
|
||||
(text "oe" (rect 21 75 32 87)(font "Arial" ))
|
||||
(line (pt 0 80)(pt 16 80))
|
||||
)
|
||||
(port
|
||||
(pt 0 96)
|
||||
(input)
|
||||
(text "ce" (rect 0 0 11 12)(font "Arial" ))
|
||||
(text "ce" (rect 21 91 32 103)(font "Arial" ))
|
||||
(line (pt 0 96)(pt 16 96))
|
||||
)
|
||||
(port
|
||||
(pt 0 112)
|
||||
(input)
|
||||
(text "error" (rect 0 0 22 12)(font "Arial" ))
|
||||
(text "error" (rect 21 107 43 119)(font "Arial" ))
|
||||
(line (pt 0 112)(pt 16 112))
|
||||
)
|
||||
(port
|
||||
(pt 328 48)
|
||||
(output)
|
||||
(text "asyncline" (rect 0 0 47 12)(font "Arial" ))
|
||||
(text "asyncline" (rect 268 43 315 55)(font "Arial" ))
|
||||
(line (pt 328 48)(pt 312 48))
|
||||
)
|
||||
(port
|
||||
(pt 328 64)
|
||||
(output)
|
||||
(text "divclk" (rect 0 0 29 12)(font "Arial" ))
|
||||
(text "divclk" (rect 283 59 312 71)(font "Arial" ))
|
||||
(line (pt 328 64)(pt 312 64))
|
||||
)
|
||||
(port
|
||||
(pt 328 80)
|
||||
(output)
|
||||
(text "init" (rect 0 0 14 12)(font "Arial" ))
|
||||
(text "init" (rect 296 75 310 87)(font "Arial" ))
|
||||
(line (pt 328 80)(pt 312 80))
|
||||
)
|
||||
(port
|
||||
(pt 328 32)
|
||||
(bidir)
|
||||
(text "data[data_bus_width-1..0]" (rect 0 0 126 12)(font "Arial" ))
|
||||
(text "data[data_bus_width-1..0]" (rect 208 27 334 39)(font "Arial" ))
|
||||
(line (pt 328 32)(pt 312 32)(line_width 3))
|
||||
)
|
||||
(parameter
|
||||
"REG_ADDR_ACTIVE_DEVICE_UPPER_BYTE"
|
||||
"38"
|
||||
""
|
||||
(type "PARAMETER_SIGNED_DEC") )
|
||||
(parameter
|
||||
"REG_ADDR_ACTIVE_DEVICE_LOWER_BYTE"
|
||||
"39"
|
||||
""
|
||||
(type "PARAMETER_SIGNED_DEC") )
|
||||
(parameter
|
||||
"REG_ADDR_TEST_UPPER_BYTE"
|
||||
"40"
|
||||
""
|
||||
(type "PARAMETER_SIGNED_DEC") )
|
||||
(parameter
|
||||
"REG_ADDR_TEST_LOWER_BYTE"
|
||||
"41"
|
||||
""
|
||||
(type "PARAMETER_SIGNED_DEC") )
|
||||
(parameter
|
||||
"DATA_BUS_WIDTH"
|
||||
"8"
|
||||
""
|
||||
(type "PARAMETER_SIGNED_DEC") )
|
||||
(parameter
|
||||
"ADDRESS_BUS_WIDTH"
|
||||
"9"
|
||||
""
|
||||
(type "PARAMETER_SIGNED_DEC") )
|
||||
(drawing
|
||||
(rectangle (rect 16 16 312 128))
|
||||
)
|
||||
(annotation_block (parameter)(rect 1024 136 1376 240))
|
||||
)
|
||||
(symbol
|
||||
(rect 536 320 568 336)
|
||||
(text "VCC" (rect 7 0 27 10)(font "Arial" (font_size 6)))
|
||||
(text "inst20" (rect 3 5 32 17)(font "Arial" )(invisible))
|
||||
(port
|
||||
(pt 16 16)
|
||||
(output)
|
||||
(text "1" (rect 19 7 24 19)(font "Courier New" (bold))(invisible))
|
||||
(text "1" (rect 19 7 24 19)(font "Courier New" (bold))(invisible))
|
||||
(line (pt 16 16)(pt 16 8))
|
||||
)
|
||||
(drawing
|
||||
(line (pt 8 8)(pt 24 8))
|
||||
)
|
||||
)
|
||||
(symbol
|
||||
(rect 1048 1640 1376 1752)
|
||||
(text "RAM" (rect 5 0 28 12)(font "Arial" ))
|
||||
(text "inst21" (rect 8 96 37 108)(font "Arial" ))
|
||||
(port
|
||||
(pt 0 32)
|
||||
(input)
|
||||
(text "address[address_bus_width-1..0]" (rect 0 0 161 12)(font "Arial" ))
|
||||
(text "address[address_bus_width-1..0]" (rect 21 27 182 39)(font "Arial" ))
|
||||
(line (pt 0 32)(pt 16 32)(line_width 3))
|
||||
)
|
||||
(port
|
||||
(pt 0 48)
|
||||
(input)
|
||||
(text "we" (rect 0 0 12 12)(font "Arial" ))
|
||||
(text "we" (rect 21 43 33 55)(font "Arial" ))
|
||||
(line (pt 0 48)(pt 16 48))
|
||||
)
|
||||
(port
|
||||
(pt 0 64)
|
||||
(input)
|
||||
(text "oe" (rect 0 0 11 12)(font "Arial" ))
|
||||
(text "oe" (rect 21 59 32 71)(font "Arial" ))
|
||||
(line (pt 0 64)(pt 16 64))
|
||||
)
|
||||
(port
|
||||
(pt 0 80)
|
||||
(input)
|
||||
(text "ce" (rect 0 0 11 12)(font "Arial" ))
|
||||
(text "ce" (rect 21 75 32 87)(font "Arial" ))
|
||||
(line (pt 0 80)(pt 16 80))
|
||||
)
|
||||
(port
|
||||
(pt 328 32)
|
||||
(bidir)
|
||||
(text "data[data_bus_width-1..0]" (rect 0 0 126 12)(font "Arial" ))
|
||||
(text "data[data_bus_width-1..0]" (rect 208 27 334 39)(font "Arial" ))
|
||||
(line (pt 328 32)(pt 312 32)(line_width 3))
|
||||
)
|
||||
(parameter
|
||||
"DATA_BUS_WIDTH"
|
||||
"8"
|
||||
""
|
||||
(type "PARAMETER_SIGNED_DEC") )
|
||||
(parameter
|
||||
"ADDRESS_BUS_WIDTH"
|
||||
"9"
|
||||
""
|
||||
(type "PARAMETER_SIGNED_DEC") )
|
||||
(drawing
|
||||
(rectangle (rect 16 16 312 96))
|
||||
)
|
||||
(annotation_block (parameter)(rect 1040 1592 1280 1640))
|
||||
)
|
||||
(connector
|
||||
(pt 488 136)
|
||||
(pt 488 120)
|
||||
@ -1528,11 +1684,6 @@ applicable agreement for further details.
|
||||
(pt 824 32)
|
||||
(pt 1840 32)
|
||||
)
|
||||
(connector
|
||||
(pt 1840 288)
|
||||
(pt 1368 288)
|
||||
(bus)
|
||||
)
|
||||
(connector
|
||||
(pt 704 256)
|
||||
(pt 544 256)
|
||||
@ -1557,14 +1708,6 @@ applicable agreement for further details.
|
||||
(pt 1592 624)
|
||||
(pt 1568 624)
|
||||
)
|
||||
(connector
|
||||
(pt 1568 424)
|
||||
(pt 1568 504)
|
||||
)
|
||||
(connector
|
||||
(pt 1568 504)
|
||||
(pt 1568 624)
|
||||
)
|
||||
(connector
|
||||
(pt 1592 592)
|
||||
(pt 1544 592)
|
||||
@ -1585,10 +1728,6 @@ applicable agreement for further details.
|
||||
(pt 608 408)
|
||||
(pt 1544 408)
|
||||
)
|
||||
(connector
|
||||
(pt 608 136)
|
||||
(pt 608 408)
|
||||
)
|
||||
(connector
|
||||
(pt 608 408)
|
||||
(pt 608 576)
|
||||
@ -1828,35 +1967,118 @@ applicable agreement for further details.
|
||||
(pt 1000 912)
|
||||
(bus)
|
||||
)
|
||||
(connector
|
||||
(pt 1000 912)
|
||||
(pt 1000 1448)
|
||||
(bus)
|
||||
)
|
||||
(connector
|
||||
(pt 984 608)
|
||||
(pt 984 928)
|
||||
)
|
||||
(connector
|
||||
(pt 984 928)
|
||||
(pt 984 1464)
|
||||
)
|
||||
(connector
|
||||
(pt 968 624)
|
||||
(pt 968 944)
|
||||
)
|
||||
(connector
|
||||
(pt 968 944)
|
||||
(pt 968 1480)
|
||||
)
|
||||
(connector
|
||||
(pt 952 640)
|
||||
(pt 952 960)
|
||||
)
|
||||
(connector
|
||||
(pt 1568 504)
|
||||
(pt 1568 624)
|
||||
)
|
||||
(connector
|
||||
(pt 1568 416)
|
||||
(pt 1568 504)
|
||||
)
|
||||
(connector
|
||||
(pt 1040 352)
|
||||
(pt 552 352)
|
||||
)
|
||||
(connector
|
||||
(pt 552 352)
|
||||
(pt 552 336)
|
||||
)
|
||||
(connector
|
||||
(pt 1040 272)
|
||||
(pt 1016 272)
|
||||
)
|
||||
(connector
|
||||
(pt 1016 272)
|
||||
(pt 1016 368)
|
||||
)
|
||||
(connector
|
||||
(pt 1016 368)
|
||||
(pt 608 368)
|
||||
)
|
||||
(connector
|
||||
(pt 608 136)
|
||||
(pt 608 368)
|
||||
)
|
||||
(connector
|
||||
(pt 608 368)
|
||||
(pt 608 408)
|
||||
)
|
||||
(connector
|
||||
(pt 1048 1672)
|
||||
(pt 1000 1672)
|
||||
(bus)
|
||||
)
|
||||
(connector
|
||||
(pt 1000 912)
|
||||
(pt 1000 1448)
|
||||
(bus)
|
||||
)
|
||||
(connector
|
||||
(pt 1000 1448)
|
||||
(pt 1000 1672)
|
||||
(bus)
|
||||
)
|
||||
(connector
|
||||
(pt 1048 1688)
|
||||
(pt 984 1688)
|
||||
)
|
||||
(connector
|
||||
(pt 984 928)
|
||||
(pt 984 1464)
|
||||
)
|
||||
(connector
|
||||
(pt 984 1464)
|
||||
(pt 984 1688)
|
||||
)
|
||||
(connector
|
||||
(pt 1048 1704)
|
||||
(pt 968 1704)
|
||||
)
|
||||
(connector
|
||||
(pt 968 944)
|
||||
(pt 968 1480)
|
||||
)
|
||||
(connector
|
||||
(pt 968 1480)
|
||||
(pt 968 1704)
|
||||
)
|
||||
(connector
|
||||
(pt 1048 1720)
|
||||
(pt 952 1720)
|
||||
)
|
||||
(connector
|
||||
(pt 952 960)
|
||||
(pt 952 1496)
|
||||
)
|
||||
(connector
|
||||
(pt 952 1496)
|
||||
(pt 952 1720)
|
||||
)
|
||||
(connector
|
||||
(pt 1848 1672)
|
||||
(pt 1376 1672)
|
||||
(bus)
|
||||
)
|
||||
(connector
|
||||
(pt 1368 288)
|
||||
(pt 1840 288)
|
||||
)
|
||||
(connector
|
||||
(pt 1368 304)
|
||||
(pt 1840 304)
|
||||
)
|
||||
(junction (pt 608 32))
|
||||
(junction (pt 1000 288))
|
||||
(junction (pt 984 304))
|
||||
@ -1881,3 +2103,8 @@ applicable agreement for further details.
|
||||
(junction (pt 968 944))
|
||||
(junction (pt 952 960))
|
||||
(junction (pt 608 1432))
|
||||
(junction (pt 608 368))
|
||||
(junction (pt 1000 1448))
|
||||
(junction (pt 984 1464))
|
||||
(junction (pt 968 1480))
|
||||
(junction (pt 952 1496))
|
||||
|
@ -208,7 +208,6 @@ set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TK[5]
|
||||
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TK[9]
|
||||
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TK[14]
|
||||
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to PWM[2]
|
||||
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to Error
|
||||
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to Interrupt
|
||||
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to PWM[1]
|
||||
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to PWM[0]
|
||||
@ -280,4 +279,9 @@ set_location_assignment PIN_119 -to TK[29]
|
||||
set_location_assignment PIN_113 -to TK[30]
|
||||
set_location_assignment PIN_118 -to TK[31]
|
||||
set_global_assignment -name BDF_FILE DigitalFilterBlock6.bdf
|
||||
set_global_assignment -name VHDL_FILE RAM9X8_LedController.vhd
|
||||
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to AsyncLine
|
||||
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DivClk
|
||||
set_location_assignment PIN_70 -to DivClk
|
||||
set_location_assignment PIN_69 -to AsyncLine
|
||||
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
|
130
MainController/RAM9X8_LedController.bsf
Normal file
130
MainController/RAM9X8_LedController.bsf
Normal file
@ -0,0 +1,130 @@
|
||||
/*
|
||||
WARNING: Do NOT edit the input and output ports in this file in a text
|
||||
editor if you plan to continue editing the block that represents it in
|
||||
the Block Editor! File corruption is VERY likely to occur.
|
||||
*/
|
||||
/*
|
||||
Copyright (C) 1991-2013 Altera Corporation
|
||||
Your use of Altera Corporation's design tools, logic functions
|
||||
and other software and tools, and its AMPP partner logic
|
||||
functions, and any output files from any of the foregoing
|
||||
(including device programming or simulation files), and any
|
||||
associated documentation or information are expressly subject
|
||||
to the terms and conditions of the Altera Program License
|
||||
Subscription Agreement, Altera MegaCore Function License
|
||||
Agreement, or other applicable license agreement, including,
|
||||
without limitation, that your use is for the sole purpose of
|
||||
programming logic devices manufactured by Altera and sold by
|
||||
Altera or its authorized distributors. Please refer to the
|
||||
applicable agreement for further details.
|
||||
*/
|
||||
(header "symbol" (version "1.1"))
|
||||
(symbol
|
||||
(rect 16 16 344 160)
|
||||
(text "RAM9X8_LedController" (rect 5 0 104 12)(font "Arial" ))
|
||||
(text "inst" (rect 8 128 20 140)(font "Arial" ))
|
||||
(port
|
||||
(pt 0 32)
|
||||
(input)
|
||||
(text "clk" (rect 0 0 10 12)(font "Arial" ))
|
||||
(text "clk" (rect 21 27 31 39)(font "Arial" ))
|
||||
(line (pt 0 32)(pt 16 32)(line_width 1))
|
||||
)
|
||||
(port
|
||||
(pt 0 48)
|
||||
(input)
|
||||
(text "address[address_bus_width-1..0]" (rect 0 0 129 12)(font "Arial" ))
|
||||
(text "address[address_bus_width-1..0]" (rect 21 43 150 55)(font "Arial" ))
|
||||
(line (pt 0 48)(pt 16 48)(line_width 3))
|
||||
)
|
||||
(port
|
||||
(pt 0 64)
|
||||
(input)
|
||||
(text "we" (rect 0 0 10 12)(font "Arial" ))
|
||||
(text "we" (rect 21 59 31 71)(font "Arial" ))
|
||||
(line (pt 0 64)(pt 16 64)(line_width 1))
|
||||
)
|
||||
(port
|
||||
(pt 0 80)
|
||||
(input)
|
||||
(text "oe" (rect 0 0 9 12)(font "Arial" ))
|
||||
(text "oe" (rect 21 75 30 87)(font "Arial" ))
|
||||
(line (pt 0 80)(pt 16 80)(line_width 1))
|
||||
)
|
||||
(port
|
||||
(pt 0 96)
|
||||
(input)
|
||||
(text "ce" (rect 0 0 9 12)(font "Arial" ))
|
||||
(text "ce" (rect 21 91 30 103)(font "Arial" ))
|
||||
(line (pt 0 96)(pt 16 96)(line_width 1))
|
||||
)
|
||||
(port
|
||||
(pt 0 112)
|
||||
(input)
|
||||
(text "error" (rect 0 0 20 12)(font "Arial" ))
|
||||
(text "error" (rect 21 107 41 119)(font "Arial" ))
|
||||
(line (pt 0 112)(pt 16 112)(line_width 1))
|
||||
)
|
||||
(port
|
||||
(pt 328 48)
|
||||
(output)
|
||||
(text "asyncline" (rect 0 0 36 12)(font "Arial" ))
|
||||
(text "asyncline" (rect 271 43 307 55)(font "Arial" ))
|
||||
(line (pt 328 48)(pt 312 48)(line_width 1))
|
||||
)
|
||||
(port
|
||||
(pt 328 64)
|
||||
(output)
|
||||
(text "divclk" (rect 0 0 22 12)(font "Arial" ))
|
||||
(text "divclk" (rect 285 59 307 71)(font "Arial" ))
|
||||
(line (pt 328 64)(pt 312 64)(line_width 1))
|
||||
)
|
||||
(port
|
||||
(pt 328 80)
|
||||
(output)
|
||||
(text "init" (rect 0 0 9 12)(font "Arial" ))
|
||||
(text "init" (rect 298 75 307 87)(font "Arial" ))
|
||||
(line (pt 328 80)(pt 312 80)(line_width 1))
|
||||
)
|
||||
(port
|
||||
(pt 328 32)
|
||||
(bidir)
|
||||
(text "data[data_bus_width-1..0]" (rect 0 0 99 12)(font "Arial" ))
|
||||
(text "data[data_bus_width-1..0]" (rect 208 27 307 39)(font "Arial" ))
|
||||
(line (pt 328 32)(pt 312 32)(line_width 3))
|
||||
)
|
||||
(parameter
|
||||
"REG_ADDR_ACTIVE_DEVICE_UPPER_BYTE"
|
||||
"38"
|
||||
""
|
||||
(type "PARAMETER_SIGNED_DEC") )
|
||||
(parameter
|
||||
"REG_ADDR_ACTIVE_DEVICE_LOWER_BYTE"
|
||||
"39"
|
||||
""
|
||||
(type "PARAMETER_SIGNED_DEC") )
|
||||
(parameter
|
||||
"REG_ADDR_TEST_UPPER_BYTE"
|
||||
"40"
|
||||
""
|
||||
(type "PARAMETER_SIGNED_DEC") )
|
||||
(parameter
|
||||
"REG_ADDR_TEST_LOWER_BYTE"
|
||||
"41"
|
||||
""
|
||||
(type "PARAMETER_SIGNED_DEC") )
|
||||
(parameter
|
||||
"DATA_BUS_WIDTH"
|
||||
"8"
|
||||
""
|
||||
(type "PARAMETER_SIGNED_DEC") )
|
||||
(parameter
|
||||
"ADDRESS_BUS_WIDTH"
|
||||
"9"
|
||||
""
|
||||
(type "PARAMETER_SIGNED_DEC") )
|
||||
(drawing
|
||||
(rectangle (rect 16 16 312 128)(line_width 1))
|
||||
)
|
||||
(annotation_block (parameter)(rect 344 -64 444 16))
|
||||
)
|
291
MainController/RAM9X8_LedController.vhd
Normal file
291
MainController/RAM9X8_LedController.vhd
Normal file
@ -0,0 +1,291 @@
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.std_logic_arith.all;
|
||||
use ieee.std_logic_unsigned.all;
|
||||
|
||||
entity RAM9X8_LedController is
|
||||
generic(
|
||||
REG_ADDR_ACTIVE_DEVICE_UPPER_BYTE : integer := 38;
|
||||
REG_ADDR_ACTIVE_DEVICE_LOWER_BYTE : integer := 39;
|
||||
REG_ADDR_TEST_UPPER_BYTE : integer := 40;
|
||||
REG_ADDR_TEST_LOWER_BYTE : integer := 41;
|
||||
|
||||
DATA_BUS_WIDTH : integer := 8;
|
||||
ADDRESS_BUS_WIDTH : integer := 9
|
||||
);
|
||||
|
||||
port(
|
||||
clk : in std_logic;
|
||||
|
||||
data : inout std_logic_vector(DATA_BUS_WIDTH - 1 downto 0);
|
||||
address : in std_logic_vector(ADDRESS_BUS_WIDTH - 1 downto 0);
|
||||
we : in std_logic;
|
||||
oe : in std_logic;
|
||||
ce : in std_logic;
|
||||
|
||||
asyncline : out std_logic := '1';
|
||||
divclk : out std_logic := '1';
|
||||
error : in std_logic;
|
||||
init : out std_logic := '0'
|
||||
);
|
||||
end entity;
|
||||
|
||||
architecture behavorial of RAM9X8_LedController is
|
||||
|
||||
signal activeDeviceBuf : std_logic_vector(15 downto 0) := (others => '0');
|
||||
signal testBuf : std_logic_vector(15 downto 0) := (others => '0');
|
||||
|
||||
signal initBuf : std_logic := '0';
|
||||
signal divClkBuf : std_logic := '0';
|
||||
signal divClkBufPWM : std_logic := '0';
|
||||
|
||||
signal addrBuf : std_logic_vector(3 downto 0) := (others => '0');
|
||||
signal ledBuf : std_logic := '0';
|
||||
|
||||
signal LedState : std_logic_vector(1 downto 0) := (others => '0');
|
||||
|
||||
type BusSt is (Waiting, A3, A2, A1, A0, Dt, Finish);
|
||||
signal BusState : BusSt := Waiting;
|
||||
|
||||
signal countBuf : std_logic_vector(3 downto 0) := (others => '0');
|
||||
signal countBufPWM : std_logic_vector(3 downto 0) := (others => '0');
|
||||
|
||||
begin
|
||||
|
||||
process (we, oe, ce)
|
||||
variable addr : integer range 0 to 2**ADDRESS_BUS_WIDTH - 1 := 0;
|
||||
begin
|
||||
if (ce = '0') then -- Если микросхема выбрана
|
||||
addr := conv_integer(address);
|
||||
if (addr = REG_ADDR_ACTIVE_DEVICE_UPPER_BYTE or addr = REG_ADDR_ACTIVE_DEVICE_LOWER_BYTE
|
||||
or addr = REG_ADDR_TEST_UPPER_BYTE or addr = REG_ADDR_TEST_LOWER_BYTE) then
|
||||
if (oe = '0' and we = '1') then -- Если сигнал чтения активен, а записи нет
|
||||
case addr is
|
||||
when REG_ADDR_ACTIVE_DEVICE_UPPER_BYTE =>
|
||||
data <= activeDeviceBuf(15 downto 8);
|
||||
when REG_ADDR_ACTIVE_DEVICE_LOWER_BYTE =>
|
||||
data <= activeDeviceBuf(7 downto 0);
|
||||
when REG_ADDR_TEST_UPPER_BYTE =>
|
||||
data <= not testBuf(15 downto 8);
|
||||
when REG_ADDR_TEST_LOWER_BYTE =>
|
||||
data <= not testBuf(7 downto 0);
|
||||
when others =>
|
||||
data <= (others => 'Z'); -- Запретить запись на шину
|
||||
end case;
|
||||
elsif (oe = '1' and we = '0') then -- Если сигнал записи активен, а чтения нет
|
||||
case addr is
|
||||
when REG_ADDR_ACTIVE_DEVICE_UPPER_BYTE =>
|
||||
activeDeviceBuf(15 downto 8) <= data;
|
||||
when REG_ADDR_ACTIVE_DEVICE_LOWER_BYTE =>
|
||||
activeDeviceBuf(7 downto 0) <= data;
|
||||
when REG_ADDR_TEST_UPPER_BYTE =>
|
||||
testBuf(15 downto 8) <= data;
|
||||
when REG_ADDR_TEST_LOWER_BYTE =>
|
||||
testBuf(7 downto 0) <= data;
|
||||
when others =>
|
||||
data <= (others => 'Z'); -- Запретить запись на шину
|
||||
end case;
|
||||
else
|
||||
data <= (others => 'Z'); -- Запретить запись на шину
|
||||
end if;
|
||||
else
|
||||
data <= (others => 'Z'); -- Запретить запись на шину
|
||||
end if;
|
||||
else
|
||||
data <= (others => 'Z'); -- Запретить запись на шину
|
||||
end if;
|
||||
end process;
|
||||
|
||||
process(clk) is
|
||||
begin
|
||||
if rising_edge(clk) then
|
||||
if testBuf = x"5AA5" then
|
||||
initBuf <= '1';
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
init <= initBuf;
|
||||
|
||||
process(clk) is
|
||||
variable count50000 : integer range 0 to 50000 := 0;
|
||||
variable count50 : integer range 0 to 50 := 0;
|
||||
begin
|
||||
if rising_edge(clk) then
|
||||
if count50000 < 50000 then
|
||||
count50000 := count50000 + 1;
|
||||
else
|
||||
divClkBufPWM <= not divClkBufPWM;
|
||||
count50000 := 0;
|
||||
if count50 < 50 then
|
||||
count50 := count50 + 1;
|
||||
else
|
||||
count50 := 0;
|
||||
divClkBuf <= not divClkBuf;
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
process(divClkBufPWM) is
|
||||
begin
|
||||
if conv_integer(countBufPWM) < 15 then
|
||||
countBufPWM <= conv_std_logic_vector(conv_integer(countBufPWM) + 1, 4);
|
||||
else
|
||||
countBufPWM <= (others => '0');
|
||||
end if;
|
||||
end process;
|
||||
|
||||
process(divClkBuf) is
|
||||
variable direction : integer range 0 to 1 := 0;
|
||||
begin
|
||||
if direction = 0 then
|
||||
if conv_integer(countBuf) < 15 then
|
||||
countBuf <= conv_std_logic_vector(conv_integer(countBuf) + 1, 4);
|
||||
else
|
||||
direction := 1;
|
||||
end if;
|
||||
else
|
||||
if conv_integer(countBuf) > 0 then
|
||||
countBuf <= conv_std_logic_vector(conv_integer(countBuf) - 1, 4);
|
||||
else
|
||||
direction := 0;
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
process(divClkBuf) is
|
||||
variable count15 : integer range 0 to 15 := 0;
|
||||
begin
|
||||
case LedState is
|
||||
when b"00" =>
|
||||
if count15 < 15 then
|
||||
count15 := count15 + 1;
|
||||
else
|
||||
count15 := 0;
|
||||
LedState <= b"01";
|
||||
end if;
|
||||
divclk <= '0';
|
||||
when b"01" =>
|
||||
if count15 < 7 then
|
||||
count15 := count15 + 1;
|
||||
else
|
||||
count15 := 0;
|
||||
LedState <= b"10";
|
||||
end if;
|
||||
divclk <= '1';
|
||||
when b"10" =>
|
||||
if count15 < 15 then
|
||||
count15 := count15 + 1;
|
||||
else
|
||||
count15 := 0;
|
||||
LedState <= b"11";
|
||||
end if;
|
||||
divclk <= '0';
|
||||
when b"11" =>
|
||||
if count15 < 4 then
|
||||
count15 := count15 + 1;
|
||||
else
|
||||
count15 := 0;
|
||||
LedState <= b"00";
|
||||
end if;
|
||||
divclk <= '1';
|
||||
when others =>
|
||||
LedState <= b"00";
|
||||
end case;
|
||||
end process;
|
||||
|
||||
process(clk) is
|
||||
variable count50 : integer range 0 to 50 := 0;
|
||||
variable count15 : integer range 0 to 15 := 15;
|
||||
begin
|
||||
if rising_edge(clk) then
|
||||
if initBuf = '0' then
|
||||
case BusState is
|
||||
when Waiting =>
|
||||
if count50 < 38 then
|
||||
count50 := count50 + 1;
|
||||
else
|
||||
if count15 < 15 then
|
||||
count15 := count15 + 1;
|
||||
else
|
||||
count15 := 0;
|
||||
end if;
|
||||
if activeDeviceBuf(count15) = '1' then
|
||||
addrBuf <= conv_std_logic_vector(count15, 4);
|
||||
asyncline <= '0';
|
||||
count50 := 0;
|
||||
BusState <= A3;
|
||||
end if;
|
||||
end if;
|
||||
when A3 =>
|
||||
if count50 < 18 then
|
||||
count50 := count50 + 1;
|
||||
else
|
||||
count50 := 0;
|
||||
asyncline <= addrBuf(3);
|
||||
BusState <= A2;
|
||||
end if;
|
||||
when A2 =>
|
||||
if count50 < 38 then
|
||||
count50 := count50 + 1;
|
||||
else
|
||||
count50 := 0;
|
||||
asyncline <= addrBuf(2);
|
||||
BusState <= A1;
|
||||
end if;
|
||||
when A1 =>
|
||||
if count50 < 38 then
|
||||
count50 := count50 + 1;
|
||||
else
|
||||
count50 := 0;
|
||||
asyncline <= addrBuf(1);
|
||||
BusState <= A0;
|
||||
end if;
|
||||
when A0 =>
|
||||
if count50 < 38 then
|
||||
count50 := count50 + 1;
|
||||
else
|
||||
count50 := 0;
|
||||
asyncline <= addrBuf(0);
|
||||
BusState <= Dt;
|
||||
end if;
|
||||
when Dt =>
|
||||
if count50 < 38 then
|
||||
count50 := count50 + 1;
|
||||
else
|
||||
count50 := 0;
|
||||
asyncline <= divClkBuf;
|
||||
BusState <= Finish;
|
||||
end if;
|
||||
when Finish =>
|
||||
if count50 < 38 then
|
||||
count50 := count50 + 1;
|
||||
else
|
||||
count50 := 0;
|
||||
asyncline <= '1';
|
||||
BusState <= Finish;
|
||||
end if;
|
||||
when others =>
|
||||
BusState <= Waiting;
|
||||
count50 := 0;
|
||||
count15 :=15;
|
||||
end case;
|
||||
else
|
||||
BusState <= Waiting;
|
||||
count50 := 0;
|
||||
count15 := 15;
|
||||
if error = '0' then
|
||||
if countBuf < countBufPWM then
|
||||
asyncline <= '1';
|
||||
else
|
||||
asyncline <= '0';
|
||||
end if;
|
||||
else
|
||||
asyncline <= '1';
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
end behavorial;
|
Loading…
Reference in New Issue
Block a user