[#100]
Re: Szwedzki projekt płyty głównej w formacie Mini ITX 170x170 mm
@konrad_0x42,
post #97
Masz mnie :) VHDL, Verilog jeden pies. Do źródeł zaglądałem ale już trochę czasu temu, więc nie pamiętałem dokładnie czy VHDL czy Verilog, mogłem napisać HDL.
W każdym razie mimo tego że brzmi to jak lekkie przechwalanie się, to wiem co piszę, bo siedziałem w FPGA zawodowo przez jakieś 2 lata i zaprojektowałem trochę układów :) M.in. 2 core'owy system w którym na jednym CPU latał uClinux z Ethernetowym stosem i web serwerem, a drugi ogarniał na żywo obsługę DMA, konfigurację chipów i soft-core'ów do liniowego przetwarzania video. Wszystko to w Alterowskim Cyclonie 3 którego znamy z Vampirka :] W robocie walczyliśmy nawet z grubszymi tematami więc miałem pod ręką Stratixa 2 GX i tam dałoby się pewnie zfitować procka z fMaxem w okolicach tego co Apollo obiecuje.
Anyway, moduł jest praktycznie pin-w-pin z fizycznym Agnusem + parę switchy i oczywiście okaże się że tu czy tam trzeba to dostosować, ale PoC do zestawienia dosłownie w godzinę, bo musisz tylko wpiąć ten moduł w piny w projekcie w Quartusie czy innym ISE:
module Agnus
(
input clk, // clock
input clk28m, // 28MHz clock
input cck, // colour clock enable, active whenever hpos[0] is high (odd dma slots used by chipset)
input reset, // reset
input aen, // bus adress enable (register bank)
input rd, // bus read
input hwr, // bus high write
input lwr, // bus low write
input [15:0] data_in, // data bus in
output [15:0] data_out, // data bus out
input [8:1] address_in, // 256 words (512 bytes) adress input,
output reg [20:1] address_out, // chip address output,
output [8:1] reg_address_out, // 256 words (512 bytes) register address out,
output reg dbr, // agnus requests data bus
output reg dbwe, // agnus does a memory write cycle (only disk and blitter dma channels may do this)
output _hsync, // horizontal sync
output _vsync, // vertical sync
output _csync, // composite sync
output blank, // video blanking
output sol, // start of video line (active during last pixel of previous line)
output sof, // start of video frame (active during last pixel of previous frame)
output vbl_int, // vertical blanking interrupt request for Paula
output strhor_denise, // horizontal strobe for Denise (due to not cycle exact implementation of Denise it must be delayed by one CCK)
output strhor_paula, // horizontal strobe for Paula
output [8:1] htotal, // video line length
output int3, // blitter finished interrupt (to Paula)
input [3:0] audio_dmal, // audio dma data transfer request (from Paula)
input [3:0] audio_dmas, // audio dma location pointer restart (from Paula)
input disk_dmal, // disk dma data transfer request (from Paula)
input disk_dmas, // disk dma special request (from Paula)
input bls, // blitter slowdown
input ntsc, // chip is NTSC
input a1k, // enable A1000 OCS features
input ecs, // enable ECS features
input floppy_speed, // allocates refresh slots for disk DMA
input turbo // alows blitter to take extra DMA slots
);