8x8 LED制御
( Olimex MOD-LED8x8 , Verilog , Control )
Olimex社が出しているMOD-LED8x8の制御をしてみます。
製品ページはこちら(新しいウィンドウが開きます)。
このデバイスは、点灯箇所を64ビットのシリアルで設定します。
下のようなモジュールで表示設定します。
sclk, sdat, stbはMOD8x8モジュールに接続します。
clkinに250kHz程度のクロックを入れます。
rstnにはリセット時にローパルスを入れます(ここはロジックハイにしておいてもOK)。
sel[5..0]には点灯する番号をいれます。
Verilog Code (Serial Interface):
module MOD8x8LED(clkin,rstn,sel, sclk,sdat,stb);
input clkin, rstn;
output reg sclk,sdat,stb;
input [5:0] sel;
reg [7:0] counter;
reg [7:0] ccount;
reg [2:0] index;
reg [7:0] led [8];
reg [7:0] com [8];
reg [7:0] tmp;
always@(negedge clkin or negedge rstn)
begin
if (!rstn) begin
led [0] = 8'H00;
led [1] = 8'H00;
led [2] = 8'H00;
led [3] = 8'H00;
led [4] = 8'H00;
led [5] = 8'H00;
led [6] = 8'H00;
led [7] = 8'H00;
com [0] = 8'H01;
com [1] = 8'H02;
com [2] = 8'H04;
com [3] = 8'H08;
com [4] = 8'H10;
com [5] = 8'H20;
com [6] = 8'H40;
com [7] = 8'H80;
index = 0;
counter = 0;
tmp = led[0];
stb = 0;
sclk = 0;
sdat = 0;
end
else begin
led [0] = 8'H00;
led [1] = 8'H00;
led [2] = 8'H00;
led [3] = 8'H00;
led [4] = 8'H00;
led [5] = 8'H00;
led [6] = 8'H00;
led [7] = 8'H00;
led [sel >> 3 ] = com [sel % 8];
//1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 STB
//12 34 56 78 910 1112 1314 1516 - 1718 1920 2122 2324 2526 2728 2930 3132 -3334
counter = counter + 1;
if (counter == 33 || counter == 34 || counter == 35 || counter == 36) begin
if (counter == 33 || counter == 34) begin
stb = 0;
sclk = 0;
sdat = 0;
end
else begin
if (counter & 1) begin
stb = 1;
end
else begin
stb = 0;
counter = 0;
end
end
end
else begin
if (counter & 1) begin
sclk = 0;
sdat = tmp & 1;
tmp = tmp >> 1;
end
else begin
sclk = 1;
if (counter==16) begin
tmp = com[index];
end
else if (counter==32) begin
index = index + 1;
tmp = led[index];
end
end
end
end
end
endmodule
Audio Level Matrix:
このモジュールを使用して、オーディオのステレオレベルを2次元に表示してみます。
Verilogコード(Audio Matrix):
module AudLevelMatrix(aud_r, aud_l, mat);
input [2:0] aud_r;
input [2:0] aud_l;
output reg [5:0] mat;
always@(*)
begin
mat[5:3] = aud_r;
mat[2:0] = aud_l;
end
endmodule
上記モジュールに24bitのオーディオ信号のL, Rのビット22からビット20を入れてみます。
実際には64ビットのうち1ビットしか点灯してないはずですが、残像現象によって、下記のように見えます。
下記の写真で、斜め上に一本のラインが点灯すれば、LR共に同じレベルでオーディオが出力されていることになります。
曲によって、かなり変わります。。