This commit is contained in:
2026-06-18 23:10:59 +02:00
parent 0d4fd7957f
commit 50dbc682d9
29 changed files with 2007161 additions and 93 deletions

View File

@ -1,7 +1,57 @@
#[no_mangle(all)]
entity main(clk: clock, leds: inv [bool; 4]) {
extern entity pll(clkin: clock, init_clk: clock, clkout0: inv clock, lock: inv bool);
reg(clk) counter: uint<24> = counter +. 1;
set leds = (counter >> 20).as_bits()[0..4];
#[no_mangle(all)]
entity main(clk: clock, leds: inv [bool; 4], tmds_clk: inv clock, tmds: inv [bool; 3]) {
let (clk_pll, clk_pll_wire) = port();
let (lock_pll, lock_pll_wire) = port();
inst pll(clk, clk, clk_pll_wire, lock_pll_wire);
reg(clk_pll) counter: uint<32> = if counter == 50_000_000 { 0 } else {counter +. 1};
reg(clk_pll) on: bool = if counter == 0 {!on} else {on};
set tmds_clk = clk_pll;
set tmds = [false, false, false];
set leds = [!on, !on, !on, !lock_pll];
}
entity tdms_encoder(clk: clock, data: uint<8>) -> uint<10>
{
// Transition minimization
let popcnt = data.as_bits().fold(0u4, fn |acc, val| {acc +. if val {1} else {0}});
let xored = data.as_bits()[1..8].fold(data.as_bits(), fn |acc, val| {
acc.shift_front(acc[0] ^^ val)
}).reversed();
let xnored = data.as_bits()[1..8].fold(data.as_bits(), fn |acc, val| {
acc.shift_front(!(acc[0] ^^ val))
}).reversed();
let use_xnor = popcnt > 1 && data.as_bits()[0] == false;
let tm = [use_xnor].concat((if use_xnor {xnored} else {xored})).as_uint();
// DISPARITY
let ones = tm.as_bits()[0..8].fold(0u4, fn |acc, val| {acc +. if val {1} else {0}}).to_int();
let zeroes = 8 - ones;
reg(clk) disparity = 0i4;
let invert =
if disparity == 0 || ones == zeroes
{
if use_xor == true // This is a one, so we dont invert to add a zero
{
}
}
0
}