Add CDTV Build

This commit is contained in:
Matt Harlum 2025-01-02 17:42:28 +13:00
parent 3e3750b2c6
commit 55bb5a8c75
7 changed files with 4282 additions and 2584 deletions

1714
Binary/RIDE-CDTV.jed Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -52,9 +52,15 @@ Alternatively you can add the `bootrom` module to a custom kickstart so that thi
## Programming
Program the CPLD using this [jed file](https://github.com/LIV2/RIDE/raw/master/Binary/RIDE.jed) - You can find instructions on how to do that [here](https://linuxjedi.co.uk/2020/12/01/programming-xilinx-jtag-from-a-raspberry-pi/)
Program the CPLD using the relevant .jed file below (Right-click, Save as)
|Model|File|
|-----|----|
|A500(+)<br />A1000<br />A2000|[RIDE.jed](https://github.com/LIV2/RIDE/raw/master/Binary/RIDE.jed)|
|CDTV|[RIDE-CDTV.jed](https://github.com/LIV2/RIDE/raw/master/Binary/RIDE-CDTV.jed)|
IDE ROM can be programmed by booting from the latest lide-update.adf [here](https://github.com/LIV2/LIDE.device/releases/latest).
You can find instructions on how to do that [here](https://linuxjedi.co.uk/2020/12/01/programming-xilinx-jtag-from-a-raspberry-pi/)
The IDE ROM can be programmed by booting from the latest lide-update.adf [here](https://github.com/LIV2/LIDE.device/releases/latest).
## Ordering PCBs

View File

@ -9,7 +9,7 @@ CPLDFITFLAGS=-loc on -slew slow -init low -terminate keeper -optimize density -k
.PHONY: all clean timing
all: $(PROJECT).jed timing
all: $(PROJECT).jed $(PROJECT)-CDTV.jed timing
$(PROJECT).prj: *.v
-$(shell rm -f $@)
@ -20,12 +20,20 @@ $(WORKDIR)/$(PROJECT).ngc: *.v $(PROJECT).prj
@sed -r "s#^(-ofn).*#\1 ..\/$@#g;s#^(-ifn).*#\1 ../$(PROJECT).prj#g;s#^(-define).*#\1 {$(DEFINES)}#g" template.xst > $@.xst
cd $(WORKDIR) && xst -ifn ../$@.xst -ofn $(PROJECT)-xst.log
$(WORKDIR)/$(PROJECT)-CDTV.ngc: *.v $(PROJECT).prj
-@mkdir $(WORKDIR)
@sed -r "s#^(-ofn).*#\1 ..\/$@#g;s#^(-ifn).*#\1 ../$(PROJECT).prj#g;s#^(-define).*#\1 {$(DEFINES) CDTV}#g" template.xst > $@.xst
cd $(WORKDIR) && xst -ifn ../$@.xst -ofn $(PROJECT)-xst.log
$(WORKDIR)/%.ngd: $(WORKDIR)/%.ngc $(PROJECT).ucf
cd $(WORKDIR) && ngdbuild -p $(PART) -uc ../$(PROJECT).ucf ../$< ../$@
$(WORKDIR)/%.rpt $(WORKDIR)/%.vm6: $(WORKDIR)/%.ngd $(PROJECT).ucf
$(WORKDIR)/%.vm6: $(WORKDIR)/%.ngd $(PROJECT).ucf
cd $(WORKDIR) && cpldfit $(CPLDFITFLAGS) -p $(PART) ../$< | egrep -v "^CS: block|^$$"
cp $(WORKDIR)/$(PROJECT).rpt .
$(WORKDIR)/%.rpt: $(WORKDIR)/%.ngd $(PROJECT).ucf
cd $(WORKDIR) && cpldfit $(CPLDFITFLAGS) -p $(PART) ../$< | egrep -v "^CS: block|^$$"
cp $(WORKDIR)/$@.rpt .
%.jed: $(WORKDIR)/%.vm6
hprep6 -i $<
@ -53,3 +61,12 @@ flash: $(PROJECT).jed
"erase -p 1\n"\
"program -p 1\n"\
"verify -p 1" | LD_PRELOAD=/opt/Xilinx/usb-driver/libusb-driver.so impact -batch
flash-cdtv: $(PROJECT)-CDTV.jed
@echo "setMode -bs\n"\
"setCable -p $(CABLE)\n"\
"identify\n"\
"assignfile -p 1 -file $<\n"\
"erase -p 1\n"\
"program -p 1\n"\
"verify -p 1" | LD_PRELOAD=/opt/Xilinx/usb-driver/libusb-driver.so impact -batch

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -47,7 +47,6 @@ reg ram_configured;
reg ide_configured;
reg [2:0] ide_base;
reg cdtv;
reg cdtv_configured;
reg cfgin;
reg cfgout;
@ -83,15 +82,11 @@ assign cfgout_n = ~cfgout;
// So we wait until it's configured before we talk
always @(posedge clk or negedge reset_n) begin
if (!reset_n) begin
cdtv <= 0;
cdtv_configured <= 0;
end else begin
if (addr[23:16] == 8'hE8 && addr[8:1] == 8'h24 && !as_n && !rw) begin
cdtv_configured <= 1'b1;
end
if (addr[23:16] == 8'hE1 && !as_n && rw) begin // Read from CDTV NVRAM (won't work if CDTV switched to A500 mode...)
cdtv <= 1;
end
end
end
@ -104,7 +99,7 @@ always @(posedge as_n or negedge reset_n) begin
`ifdef CDTV
cfgin <= ~cfgin_n && cdtv_configured;
`else
cfgin <= ~cfgin_n && (!cdtv || cdtv_configured);
cfgin <= ~cfgin_n;
`endif
cfgout <= (ac_state == ac_done);
end