Saturday, 10 March 2018

Grant me the serenity to accept the things I cannot change, courage to change the things I can, and wisdom to know the difference.

"Briefly stated, the Gell-Mann Amnesia effect is as follows. You open the newspaper to an article on some subject you know well. In Murray’s case, physics. In mine, show business. You read the article and see the journalist has absolutely no understanding of either the facts or the issues. Often, the article is so wrong it actually presents the story backward—reversing cause and effect. I call these the 'wet streets cause rain' stories. Paper’s full of them. In any case, you read with exasperation or amusement the multiple errors in a story, and then turn the page to national or international affairs, and read as if the rest of the newspaper was somehow more accurate about Palestine than the baloney you just read. You turn the page, and forget what you know." - Michael Crichton
--

Single resistor VGA output from an FPGA. VGA pins 13 and 14, vertical and horizontal sync are connected directly to the FPGA (Altera Cyclone II), pins 1-3 are RGB and connected all parallel and through a 100 ohm resistor to the FPGA. Pins 6-8 are ground.

PLL is running at 25 MHz giving monochrome VGA output. Adding color would be relatively trivial.

magick convert -fuzz 40% -colors 8 -layers Optimize -delay 5 output.gif out.gif

module vga(input clock, output VGA_HS, output VGA_VS, output B);

reg vga_HS, vga_VS;
reg [9:0] CounterX;
reg [8:0] CounterY;
reg [9:0] temporary;
reg [9:0] cntx;
reg [9:0] cnty;
reg pixvalue;

reg [7:0] fnt[6399:0];
initial $readmemh("fnt.hex", fnt);

always
@(posedge pll_clock)
begin
  CounterX <= CounterX + 1;
  if(CounterX==800)
  begin
    CounterX <= 0;
    CounterY <= CounterY + 1;
  end
  if(CounterY==449)
  begin
    CounterY <= 0;
    temporary <= temporary + 1;
  end
  vga_HS <= (CounterX>640+16 & CounterX<800-48);
  vga_VS <= (CounterY>400+12 & CounterY<449-35);
  cntx <= CounterX + temporary;
  cnty <= CounterY + (temporary >> 2);
  if(CounterY>8)
    pixvalue <= ((CounterX<640 & CounterY<400) & (CounterX[2] & CounterY[2])) | ((CounterX>128 & CounterX<512 & CounterY>64 & CounterY<300) & (cntx[4] & cnty[4]));
  else
  if(CounterX<640)
    pixvalue <= (fnt[CounterX+CounterY*760]>1);
end

assign VGA_HS = ~vga_HS;
assign VGA_VS = ~vga_VS;
assign B = pixvalue;

altpll0 altpll0(.inclk0(clock), .c0(pll_clock));


endmodule

Output from a 1k resistor ladder DAC (3 resistors) with Cyclone II.
Driven by LVDS serializers at 500 MHz.

--

I think the concept of "culture" as used today should be clearly separated from the concept of religion. Religions are for the most part dogmas, quite different from culture which consists of temporary trends and behavioral models. Pretty much everyone knows the difference, but for some reason it is often ignored. We can judge the historical mistakes without holding anyone responsible for the sins of their fathers, but it is only natural and practical to judge the ideas and behaviors we now clearly see as inferior.
--

Simulation of quadrature signals from parametrically amplified quantum noise in a superconducting tunnel junction.
--

Stability through slavery.