⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 colorled32.tdf

📁 这是一个用于32位色控制的LED大屏幕的AHDL代码
💻 TDF
📖 第 1 页 / 共 2 页
字号:
		when 6 =>
			convertdff0[6][].clk = outcnt.q[5] # clk5m; 
			convertdff1[6][].clk = !outcnt.q[5] # clk5m;
		when 7 =>
			convertdff0[7][].clk = outcnt.q[5] # clk5m; 
			convertdff1[7][].clk = !outcnt.q[5] # clk5m;
		when 8 =>
			convertdff0[8][].clk = outcnt.q[5] # clk5m; 
			convertdff1[8][].clk = !outcnt.q[5] # clk5m;
		when 9 =>
			convertdff0[9][].clk = outcnt.q[5] # clk5m; 
			convertdff1[9][].clk = !outcnt.q[5] # clk5m;
		when 10 =>
			convertdff0[10][].clk = outcnt.q[5] # clk5m; 
			convertdff1[10][].clk = !outcnt.q[5] # clk5m;
		when 11 =>
			convertdff0[11][].clk = outcnt.q[5] # clk5m; 
			convertdff1[11][].clk = !outcnt.q[5] # clk5m;
		when 12 =>
			convertdff0[12][].clk = outcnt.q[5] # clk5m; 
			convertdff1[12][].clk = !outcnt.q[5] # clk5m;
		when 13 =>
			convertdff0[13][].clk = outcnt.q[5] # clk5m; 
			convertdff1[13][].clk = !outcnt.q[5] # clk5m;
		when 14 =>
			convertdff0[14][].clk = outcnt.q[5] # clk5m; 
			convertdff1[14][].clk = !outcnt.q[5] # clk5m;
		when 15 =>
			convertdff0[15][].clk = outcnt.q[5] # clk5m; 
			convertdff1[15][].clk = !outcnt.q[5] # clk5m;
		when 16 =>
			convertdff0[16][].clk = outcnt.q[5] # clk5m; 
			convertdff1[16][].clk = !outcnt.q[5] # clk5m;
		when 17 =>
			convertdff0[17][].clk = outcnt.q[5] # clk5m; 
			convertdff1[17][].clk = !outcnt.q[5] # clk5m;
		when 18 =>
			convertdff0[18][].clk = outcnt.q[5] # clk5m; 
			convertdff1[18][].clk = !outcnt.q[5] # clk5m;
		when 19 =>
			convertdff0[19][].clk = outcnt.q[5] # clk5m; 
			convertdff1[19][].clk = !outcnt.q[5] # clk5m;
		when 20 =>
			convertdff0[20][].clk = outcnt.q[5] # clk5m; 
			convertdff1[20][].clk = !outcnt.q[5] # clk5m;
		when 21 =>
			convertdff0[21][].clk = outcnt.q[5] # clk5m; 
			convertdff1[21][].clk = !outcnt.q[5] # clk5m;
		when 22 =>
			convertdff0[22][].clk = outcnt.q[5] # clk5m; 
			convertdff1[22][].clk = !outcnt.q[5] # clk5m;
		when 23 =>
			convertdff0[23][].clk = outcnt.q[5] # clk5m; 
			convertdff1[23][].clk = !outcnt.q[5] # clk5m;
		when 24 =>
			convertdff0[24][].clk = outcnt.q[5] # clk5m; 
			convertdff1[24][].clk = !outcnt.q[5] # clk5m;
		when 25 =>
			convertdff0[25][].clk = outcnt.q[5] # clk5m; 
			convertdff1[25][].clk = !outcnt.q[5] # clk5m;
		when 26 =>
			convertdff0[26][].clk = outcnt.q[5] # clk5m; 
			convertdff1[26][].clk = !outcnt.q[5] # clk5m;
		when 27 =>
			convertdff0[27][].clk = outcnt.q[5] # clk5m; 
			convertdff1[27][].clk = !outcnt.q[5] # clk5m;
		when 28 =>
			convertdff0[28][].clk = outcnt.q[5] # clk5m; 
			convertdff1[28][].clk = !outcnt.q[5] # clk5m;
		when 29 =>
			convertdff0[29][].clk = outcnt.q[5] # clk5m; 
			convertdff1[29][].clk = !outcnt.q[5] # clk5m;
		when 30 =>
			convertdff0[30][].clk = outcnt.q[5] # clk5m; 
			convertdff1[30][].clk = !outcnt.q[5] # clk5m;
		when 31 =>
			convertdff0[31][].clk = outcnt.q[5] # clk5m; 
			convertdff1[31][].clk = !outcnt.q[5] # clk5m;
	end case;
	
	case ledcnt.q[4..0] is
		when 0 =>
			lednode[] = (convertdff0[][31] & !ledcnt.q[5])
						# (convertdff1[][31] & ledcnt.q[5]);
		when 1 =>
			lednode[] = (convertdff0[][30] & !ledcnt.q[5])
						# (convertdff1[][30] & ledcnt.q[5]);
		when 2 =>
			lednode[] = (convertdff0[][29] & !ledcnt.q[5])
						# (convertdff1[][29] & ledcnt.q[5]);
		when 3 =>
			lednode[] = (convertdff0[][28] & !ledcnt.q[5])
						# (convertdff1[][28] & ledcnt.q[5]);
		when 4 =>
			lednode[] = (convertdff0[][27] & !ledcnt.q[5])
						# (convertdff1[][27] & ledcnt.q[5]);
		when 5 =>
			lednode[] = (convertdff0[][26] & !ledcnt.q[5])
						# (convertdff1[][26] & ledcnt.q[5]);
		when 6 =>
			lednode[] = (convertdff0[][25] & !ledcnt.q[5])
						# (convertdff1[][25] & ledcnt.q[5]);
		when 7 =>
			lednode[] = (convertdff0[][24] & !ledcnt.q[5])
						# (convertdff1[][24] & ledcnt.q[5]);
		when 8 =>
			lednode[] = (convertdff0[][23] & !ledcnt.q[5])
						# (convertdff1[][23] & ledcnt.q[5]);
		when 9 =>
			lednode[] = (convertdff0[][22] & !ledcnt.q[5])
						# (convertdff1[][22] & ledcnt.q[5]);
		when 10 =>
			lednode[] = (convertdff0[][21] & !ledcnt.q[5])
						# (convertdff1[][21] & ledcnt.q[5]);
		when 11 =>
			lednode[] = (convertdff0[][20] & !ledcnt.q[5])
						# (convertdff1[][20] & ledcnt.q[5]);
		when 12 =>
			lednode[] = (convertdff0[][19] & !ledcnt.q[5])
						# (convertdff1[][19] & ledcnt.q[5]);
		when 13 =>
			lednode[] = (convertdff0[][18] & !ledcnt.q[5])
						# (convertdff1[][18] & ledcnt.q[5]);
		when 14 =>
			lednode[] = (convertdff0[][17] & !ledcnt.q[5])
						# (convertdff1[][17] & ledcnt.q[5]);
		when 15 =>
			lednode[] = (convertdff0[][16] & !ledcnt.q[5])
						# (convertdff1[][16] & ledcnt.q[5]);
		when 16 =>
			lednode[] = (convertdff0[][15] & !ledcnt.q[5])
						# (convertdff1[][15] & ledcnt.q[5]);
		when 17 =>
			lednode[] = (convertdff0[][14] & !ledcnt.q[5])
						# (convertdff1[][14] & ledcnt.q[5]);
		when 18 =>
			lednode[] = (convertdff0[][13] & !ledcnt.q[5])
						# (convertdff1[][13] & ledcnt.q[5]);
		when 19 =>
			lednode[] = (convertdff0[][12] & !ledcnt.q[5])
						# (convertdff1[][12] & ledcnt.q[5]);
		when 20 =>
			lednode[] = (convertdff0[][11] & !ledcnt.q[5])
						# (convertdff1[][11] & ledcnt.q[5]);
		when 21 =>
			lednode[] = (convertdff0[][10] & !ledcnt.q[5])
						# (convertdff1[][10] & ledcnt.q[5]);
		when 22 =>
			lednode[] = (convertdff0[][9] & !ledcnt.q[5])
						# (convertdff1[][9] & ledcnt.q[5]);
		when 23 =>
			lednode[] = (convertdff0[][8] & !ledcnt.q[5])
						# (convertdff1[][8] & ledcnt.q[5]);
		when 24 =>
			lednode[] = (convertdff0[][7] & !ledcnt.q[5])
						# (convertdff1[][7] & ledcnt.q[5]);
		when 25 =>
			lednode[] = (convertdff0[][6] & !ledcnt.q[5])
						# (convertdff1[][6] & ledcnt.q[5]);
		when 26 =>
			lednode[] = (convertdff0[][5] & !ledcnt.q[5])
						# (convertdff1[][5] & ledcnt.q[5]);
		when 27 =>
			lednode[] = (convertdff0[][4] & !ledcnt.q[5])
						# (convertdff1[][4] & ledcnt.q[5]);
		when 28 =>
			lednode[] = (convertdff0[][3] & !ledcnt.q[5])
						# (convertdff1[][3] & ledcnt.q[5]);
		when 29 =>
			lednode[] = (convertdff0[][2] & !ledcnt.q[5])
						# (convertdff1[][2] & ledcnt.q[5]);
		when 30 =>
			lednode[] = (convertdff0[][1] & !ledcnt.q[5])
						# (convertdff1[][1] & ledcnt.q[5]);
		when 31 =>
			lednode[] = (convertdff0[][0] & !ledcnt.q[5])
						# (convertdff1[][0] & ledcnt.q[5]); 
	end case;		
%	for i in 0 to 31 generate
		if i == ledcnt.q[4..0] then
			lednode[] = (convertdff0[][31 - i] & !ledcnt.q[5])
						# (convertdff1[][31 - i] & ledcnt.q[5]); 
		
		end if;
	end generate;
%	
--	out2led.clk = (outcnt.q[4..0] != b"11111") # clk5m;
	out2led.d = !out2led;
	if out2led then
		out2led.clk = (ledcnt.q[] != h"400" ) # clk5m;
	else
		out2led.clk = (outcnt.q[4..0] != b"11111") # clk5m;
	end if;
	
	ledcnt.aclr = !out2led;
	ledcnt.clock = clk5m;
	clk0[] = clk5m;
--	phasea = clk5m;
--	phasea.clk = clk10m;
--	clk0[] = phasea;
	lath = (ledcnt.q[] != h"400");
	stb[] = (clk5m $ clk10m) # lath;
	
--following for 50pins connector define
	
	free1 = pclk;
	free55 = hsync;
	free56 = vsync;
	led[39..38] = clk0[];
	led[37..36] = stb[];
	led[31..0] = lednode[];
	led[35..32] = lednode[3..0];
	led[63..40] = lednode[27..4];
%	
	case framecnt.q[9..8] is
		when 0=> --b"11",b"00"  red
		--	if !ledcnt.q[5] then
		--		led[0..35] = (ledcnt.q[3]==ledcnt.q[4]) & ledcnt.q[0];
		--		led[63..40] = (ledcnt.q[3]==ledcnt.q[4]) & ledcnt.q[0];
		--	else
		--		led[0..35] = gnd;
		--		led[63..40] = gnd;
		--	end if;
			case ledcnt.q[5..3] is
				when b"100"=>
					led[0..35] = ledcnt.q[0];
					led[63..40] = ledcnt.q[0];
				when b"111"=>
					led[0..35] = h"ff";
					led[63..40] = h"ff";
				when others=>
					led[0..35] = gnd;
					led[63..40] = gnd;
				
			end case;
		when 1=> --b"11","b"01" green
		--	if !ledcnt.q[5] then
		--		led[0..35] = ledcnt.q[3] & ledcnt.q[0];
		--		led[63..40] = ledcnt.q[3] & ledcnt.q[0];
		--	else
		--		led[0..35] = gnd;
		--		led[63..40] = gnd;
		--	end if;
			case ledcnt.q[5..3] is
				when b"101"=>
					led[0..35] = ledcnt.q[0];
					led[63..40] = ledcnt.q[0];
				when b"111"=>
					led[0..35] = h"ff";
					led[63..40] = h"ff";
				when others=>
					led[0..35] = gnd;
					led[63..40] = gnd;
			end case;
		when 2=> --b"11",b"10" blue
		--	if !ledcnt.q[5] then
		--		led[0..35] = ledcnt.q[4] & ledcnt.q[0];
		--		led[63..40] = ledcnt.q[4] & ledcnt.q[0];
		--	else
		--		led[0..35] = gnd;
		--		led[63..40] = gnd;
		--	end if;
			case ledcnt.q[5..3] is
				when b"110"=>
					led[0..35] = ledcnt.q[0];
					led[63..40] = ledcnt.q[0];
				when b"111"=>
					led[0..35] = h"ff";
					led[63..40] = h"ff";
				when others=>
					led[0..35] = gnd;
					led[63..40] = gnd;
			end case;
		when 3=> --b"xx" white
		--	if !ledcnt.q[5] then
		--		led[0..35] = vcc & ledcnt.q[0];
		--		led[63..40] = vcc & ledcnt.q[0];
		--	else
		--		led[0..35] = gnd;
		--		led[63..40] = gnd;
		--	end if;
			case ledcnt.q[5..3] is
				when b"100",b"101",b"110"=>
					led[0..35] = ledcnt.q[0];
					led[63..40] = ledcnt.q[0];
				when b"111"=>
					led[0..35] = h"ff";
					led[63..40] = h"ff";
				when others=>
					led[0..35] = gnd;
					led[63..40] = gnd;
			end case;
	end case;
%
end;
	
								

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -