<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RESET_VECTOR &#8211; The Longhorn Engineer</title>
	<atom:link href="https://longhornengineer.com/tag/reset_vector/feed/" rel="self" type="application/rss+xml" />
	<link>https://longhornengineer.com</link>
	<description>Robotics, Pinball, Hacking, Portables</description>
	<lastBuildDate>Tue, 20 Dec 2022 20:44:15 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>New theme up and DMD driver writing.</title>
		<link>https://longhornengineer.com/2015/02/10/new-theme-up-and-dmd-driver-writing/</link>
		
		<dc:creator><![CDATA[Parker]]></dc:creator>
		<pubDate>Wed, 11 Feb 2015 05:14:24 +0000</pubDate>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[Pinball]]></category>
		<category><![CDATA[RESET_VECTOR]]></category>
		<category><![CDATA[Website Maintenance]]></category>
		<guid isPermaLink="false">https://longhornengineer.com/?p=2753</guid>

					<description><![CDATA[Fixed an old bug in some RESET VECTOR DMD display code for multiple lines and got the above demo working. I will have to port the prop code to python however to make my twitter wall thingy.]]></description>
										<content:encoded><![CDATA[<p><a href="https://longhornengineer.com/wp-content/uploads/DSC37391.jpg"><img fetchpriority="high" decoding="async" src="https://longhornengineer.com/wp-content/uploads/DSC37391-800x533.jpg" alt="SONY DSC" class="aligncenter size-medium wp-image-2757" width="800" height="533" srcset="https://longhornengineer.com/wp-content/uploads/DSC37391-800x533.jpg 800w, https://longhornengineer.com/wp-content/uploads/DSC37391-150x100.jpg 150w, https://longhornengineer.com/wp-content/uploads/DSC37391-1024x682.jpg 1024w, https://longhornengineer.com/wp-content/uploads/DSC37391.jpg 1200w" sizes="(max-width: 800px) 100vw, 800px" /></a></p>
<p>Fixed an old bug in some RESET VECTOR DMD display code for multiple lines and got the above demo working. I will have to port the prop code to python however to make my twitter wall thingy.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>16&#215;96 DMD Code for Reset Vector</title>
		<link>https://longhornengineer.com/2011/08/22/16x96-dmd-code-for-reset-vector/</link>
		
		<dc:creator><![CDATA[Parker]]></dc:creator>
		<pubDate>Tue, 23 Aug 2011 01:01:31 +0000</pubDate>
				<category><![CDATA[PCBA & ENG]]></category>
		<category><![CDATA[Pinball]]></category>
		<category><![CDATA[RESET_VECTOR]]></category>
		<guid isPermaLink="false">https://longhornengineer.com/?p=2620</guid>

					<description><![CDATA[While developing the larger 36&#215;128 DMD I ran out of registers and logic elements in the FPGA I was using. I could have switched to a larger FPGA but that would put the final product out of the price range I was aiming for. FPGAs have loads of dedicated ram so I decided to move &#8230; <a href="https://longhornengineer.com/2011/08/22/16x96-dmd-code-for-reset-vector/" class="more-link">Continue reading <span class="screen-reader-text">16&#215;96 DMD Code for Reset Vector</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>While developing the larger 36&#215;128 DMD I ran out of registers and logic elements in the FPGA I was using. I could have switched to a larger FPGA but that would put the final product out of the price range I was aiming for. FPGAs have loads of dedicated ram so I decided to move the display memory from registers to a chunk of block ram. To test to see if the RAM code works I wrote a program for the 16×96 display in RESET_VECTOR. It took a bit of tweaking as I have never used block ram before but I was able to get it working.</p>
<p><pre><code>
module LED_Matrix_16x96
(
clk,row,col,SDRAM_CS,SRAM_CS,LAT,INPUT,SCLK
);</code></pre></p>
<p><pre><code>input&nbsp;&nbsp;wire&nbsp;&nbsp;&nbsp;&nbsp;clk;
input&nbsp;&nbsp;wire&nbsp;&nbsp;&nbsp;&nbsp;LAT;
input&nbsp;&nbsp;wire&nbsp;&nbsp;&nbsp;&nbsp;INPUT;
input&nbsp;&nbsp;wire&nbsp;&nbsp;&nbsp;&nbsp;SCLK;

output&nbsp;&nbsp;reg [0:15]&nbsp;&nbsp;row;
output&nbsp;&nbsp;reg [95:0]&nbsp;&nbsp;col;
output&nbsp;&nbsp;reg [0:0]&nbsp;&nbsp; SDRAM_CS;
output&nbsp;&nbsp;reg [0:0]&nbsp;&nbsp; SRAM_CS;

reg [24:0]&nbsp;&nbsp;clk_slow;
reg [4:0]&nbsp;&nbsp;row_cnt;
reg [1535:0]&nbsp;&nbsp;col_buffer;

reg&nbsp;&nbsp;[3:0]&nbsp;&nbsp;read_addr;
reg&nbsp;&nbsp;[3:0]&nbsp;&nbsp;write_addr;
reg&nbsp;&nbsp;[95:0]&nbsp;&nbsp;disp_mem_data;
reg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren;
wire&nbsp;&nbsp;[95:0]&nbsp;&nbsp;disp_mem_q;

reg [3:0]&nbsp;&nbsp;sel;

</code></pre><pre><code>initial
begin
row &amp;lt;= 16&#039;b0000000000000001;
&nbsp;&nbsp;&nbsp;&nbsp;col &amp;lt;= 16&#039;b0000000000000000;
&nbsp;&nbsp;&nbsp;&nbsp;SDRAM_CS &amp;lt;= 1&#039;b0;
&nbsp;&nbsp;&nbsp;&nbsp;SRAM_CS &amp;lt;= 1&#039;b0;
&nbsp;&nbsp;&nbsp;&nbsp;clk_slow &amp;lt;= 16&#039;b0000000000000000;
&nbsp;&nbsp;&nbsp;&nbsp;row_cnt &amp;lt;= 5&#039;b00000;
&nbsp;&nbsp;&nbsp;&nbsp;write_addr &amp;lt;= 4&#039;b0000;
&nbsp;&nbsp;&nbsp;&nbsp;read_addr &amp;lt;= 4&#039;b0000;
&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren &amp;lt;= 0;
&nbsp;&nbsp;&nbsp;&nbsp;sel &amp;lt;= 4&#039;b0000;
&nbsp;&nbsp;end

always @(posedge clk) 
begin
&nbsp;&nbsp;clk_slow &amp;lt;= clk_slow + 1&#039;b1;

&nbsp;&nbsp;if(!LAT &amp;amp; row_cnt == 5&#039;b01111)
&nbsp;&nbsp;begin
&nbsp;&nbsp;case(sel)
&nbsp;&nbsp;&nbsp;&nbsp;4&#039;b0000:
&nbsp;&nbsp;&nbsp;&nbsp;begin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_addr &amp;lt;= sel;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren &amp;lt;= 1&#039;b1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_data &amp;lt;= col_buffer[1535:1440];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel &amp;lt;= 4&#039;b0001;
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;4&#039;b0001:
&nbsp;&nbsp;&nbsp;&nbsp;begin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_addr &amp;lt;= sel;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren &amp;lt;= 1&#039;b1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_data &amp;lt;= col_buffer[1439:1344];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel &amp;lt;= 4&#039;b0010;
&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;4&#039;b0010:
&nbsp;&nbsp;&nbsp;&nbsp;begin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_addr &amp;lt;= sel;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren &amp;lt;= 1&#039;b1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_data &amp;lt;= col_buffer[1343:1248];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel &amp;lt;= 4&#039;b0011;
&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;4&#039;b0011:
&nbsp;&nbsp;&nbsp;&nbsp;begin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_addr &amp;lt;= sel;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren &amp;lt;= 1&#039;b1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_data &amp;lt;= col_buffer[1247:1152];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel &amp;lt;= 4&#039;b0100;
&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;4&#039;b0100:
&nbsp;&nbsp;&nbsp;&nbsp;begin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_addr &amp;lt;= sel;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren &amp;lt;= 1&#039;b1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_data &amp;lt;= col_buffer[1151:1056];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel &amp;lt;= 4&#039;b0101;
&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;4&#039;b0101:
&nbsp;&nbsp;&nbsp;&nbsp;begin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_addr &amp;lt;= sel;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren &amp;lt;= 1&#039;b1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_data &amp;lt;= col_buffer[1055:960];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel &amp;lt;= 4&#039;b0110;
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;4&#039;b0110:
&nbsp;&nbsp;&nbsp;&nbsp;begin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_addr &amp;lt;= sel;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren &amp;lt;= 1&#039;b1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_data &amp;lt;= col_buffer[959:864];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel &amp;lt;= 4&#039;b0111;
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;4&#039;b0111:
&nbsp;&nbsp;&nbsp;&nbsp;begin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_addr &amp;lt;= sel;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren &amp;lt;= 1&#039;b1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_data &amp;lt;= col_buffer[863:768];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel &amp;lt;= 4&#039;b1000;
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;4&#039;b1000:
&nbsp;&nbsp;&nbsp;&nbsp;begin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_addr &amp;lt;= sel;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren &amp;lt;= 1&#039;b1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_data &amp;lt;= col_buffer[767:672];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel &amp;lt;= 4&#039;b1001;
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;4&#039;b1001:
&nbsp;&nbsp;&nbsp;&nbsp;begin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_addr &amp;lt;= sel;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren &amp;lt;= 1&#039;b1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_data &amp;lt;= col_buffer[671:576];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel &amp;lt;= 4&#039;b1010;
&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;4&#039;b1010:
&nbsp;&nbsp;&nbsp;&nbsp;begin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_addr &amp;lt;= sel;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren &amp;lt;= 1&#039;b1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_data &amp;lt;= col_buffer[575:480];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel &amp;lt;= 4&#039;b1011;
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;4&#039;b1011:
&nbsp;&nbsp;&nbsp;&nbsp;begin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_addr &amp;lt;= sel;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren &amp;lt;= 1&#039;b1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_data &amp;lt;= col_buffer[479:384];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel &amp;lt;= 4&#039;b1100;
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;4&#039;b1100:
&nbsp;&nbsp;&nbsp;&nbsp;begin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_addr &amp;lt;= sel;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren &amp;lt;= 1&#039;b1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_data &amp;lt;= col_buffer[383:288];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel &amp;lt;= 4&#039;b1101;
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;4&#039;b1101:
&nbsp;&nbsp;&nbsp;&nbsp;begin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_addr &amp;lt;= sel;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren &amp;lt;= 1&#039;b1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_data &amp;lt;= col_buffer[287:192];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel &amp;lt;= 4&#039;b1110;
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;4&#039;b1110:
&nbsp;&nbsp;&nbsp;&nbsp;begin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_addr &amp;lt;= sel;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren &amp;lt;= 1&#039;b1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_data &amp;lt;= col_buffer[191:96];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel &amp;lt;= 4&#039;b1111;
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;4&#039;b1111:
&nbsp;&nbsp;&nbsp;&nbsp;begin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_addr &amp;lt;= sel;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren &amp;lt;= 1&#039;b1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_data &amp;lt;= col_buffer[95:0];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel &amp;lt;= 4&#039;b0000;
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;default: 
&nbsp;&nbsp;&nbsp;&nbsp;begin
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel &amp;lt;= 4&#039;b0000;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_addr &amp;lt;= 4&#039;b0000;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren &amp;lt;= 1&#039;b0;
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;endcase
&nbsp;&nbsp;end
&nbsp;&nbsp;else
&nbsp;&nbsp;begin
&nbsp;&nbsp;&nbsp;&nbsp;disp_mem_wren &amp;lt;= 1&#039;b0;
&nbsp;&nbsp;&nbsp;&nbsp;sel &amp;lt;= 4&#039;b0000;
&nbsp;&nbsp;end
end

always @(posedge clk_slow[10]) 
begin
&nbsp;&nbsp;if(row_cnt &amp;gt; 5&#039;b01111)
begin
row_cnt &amp;lt;= 5&#039;b00000;
&nbsp;&nbsp;end
&nbsp;&nbsp;col &amp;lt;= disp_mem_q;&nbsp;&nbsp;
&nbsp;&nbsp;row_cnt &amp;lt;= row_cnt + 1&#039;b1;
&nbsp;&nbsp;row &amp;lt;= {row[15],row[0:14]};
&nbsp;&nbsp;read_addr &amp;lt;= read_addr + 1&#039;b1;

end

always @(posedge SCLK)
begin
&nbsp;&nbsp;if(LAT)
&nbsp;&nbsp;begin
&nbsp;&nbsp;&nbsp;&nbsp;col_buffer &amp;lt;= {col_buffer[1534:0],INPUT};
&nbsp;&nbsp;end
end

display_ram disp_mem_inst (
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.rdaddress (read_addr),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.wraddress (write_addr),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.clock&nbsp;&nbsp;(clk),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.data&nbsp;&nbsp; (disp_mem_data),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.wren&nbsp;&nbsp; (disp_mem_wren),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.q&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(disp_mem_q)
);

endmodule
</code></pre></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>LDMD 16×16 Propeller Comm Test</title>
		<link>https://longhornengineer.com/2011/07/21/ldmd-16x16-propeller-comm-test/</link>
		
		<dc:creator><![CDATA[Parker]]></dc:creator>
		<pubDate>Thu, 21 Jul 2011 19:59:04 +0000</pubDate>
				<category><![CDATA[Pinball]]></category>
		<category><![CDATA[RESET_VECTOR]]></category>
		<guid isPermaLink="false">https://longhornengineer.com/?p=463</guid>

					<description><![CDATA[Just finished the DMD (Dot Matrix Display) test for RESET_VECTOR. Since the Propeller is to slow to do the matrixing I am going to use a FPGA to do it. The propeller will send the data over a serial connection into a frame buffer on the FPGA. When all the data is on the FPGA &#8230; <a href="https://longhornengineer.com/2011/07/21/ldmd-16x16-propeller-comm-test/" class="more-link">Continue reading <span class="screen-reader-text">LDMD 16×16 Propeller Comm Test</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Just finished the DMD (Dot Matrix Display) test for RESET_VECTOR. Since the Propeller is to slow to do the matrixing I am going to use a FPGA to do it. The propeller will send the data over a serial connection into a frame buffer on the FPGA. When all the data is on the FPGA the FPGA will update its matrixing buffer.</p>
<p>I have the Propeller to FPGA communication protocol written and tested as well. The Propeller loads the Data off the SD card and sends it serially to the FPGA.</p>
<div style="text-align: center;">http://www.youtube.com/watch?v=FGHIM8qgff8</div>
<div style="text-align: center;">http://www.youtube.com/watch?v=hrf3yXOP-KM</div>
<p><a href="https://longhornengineer.com/code/Propeller/LDMD_16x16_COM_TEST.spin">Propeller Code</a><br />
<a href="https://longhornengineer.com/code/FPGA/LDMD_16x16_COM_TEST.v">FPGA Code</a><br />
<a href="https://longhornengineer.com/images/projects/Pinball_ResetVector/DMD%20TEST%20BLOCK%20DIAGRAM.jpg">Block Diagram</a> of the Dot Matrix.</p>
<p><img decoding="async" class="aligncenter" src="https://longhornengineer.com/images/projects/Pinball_ResetVector/dmdtest.jpg" alt="" width="1000" height="666" /></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
