论坛» DIY与开源设计» 电子DIY

Jacklxd的进程贴

助工
2012-11-01 21:28 1楼
时间 内容 链接
2012-9-25 申请帖 forum.eepw.com.cn/thread/221205/1
2012-10-24 收到器件 2楼
2012-10-31 焊接完毕 4楼
2012-11-1 点亮LED 5楼
2012-11-2 点亮LED灯源代码 6楼
2012-11-7 流水灯源代码 7楼
2012-11-7 跑马灯源代码 8楼
2012-11-9 流水灯视频 9楼
2012-11-11 闪烁灯视频 10楼
2012-11-12 跑马灯 11楼
2012-11-14 数码管动态显示 12楼
2012-11-14 拨码开关控制LED 13楼
2012-11-15 花样彩灯,8个LED 14楼
2012-11-15 PWM波控制按键暗亮程度 15楼



助工
2012-11-01 21:34 2楼
此为收到的快递
助工
2012-11-01 21:36 3楼
看了一下,看来我的手机像素太低,得换像素高点手机
助工
2012-11-01 22:01 4楼


这是核心板,黑色的,挺好看的

这是接口板,由于TLC5620没整好,改接的时候不小心弄断了一个引脚,等有时间再把它整好

这是整个FPGA DIY的板子,来个集体亮相,呵呵

助工
2012-11-01 22:24 5楼

点亮LED,做完这一步总算放心了,之前焊接时以为没焊好,会出什么大的故障,看到这里,感到略有小成
助工
2012-11-01 22:25 6楼

明天接着写作业,赶进度呀

助工
2012-11-02 15:38 7楼

板子焊完后,测试一下板子,首先做了一个点亮LED
---库函数
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
---实体
entity LED_test is
port(LED:out std_logic_vector(8 downto 1));
end LED_test;
---结构体描述
architecture behave of LED_test is
begin
LED<="10101010";
end behave;

助工
2012-11-07 22:04 8楼

-----流水灯,一共11个LED灯

module water_led(
input CLOCK_50,
input Q_KEY, // 板载按键RST
output [11:1] LED // LED[1] ~ LED[11]
);

//++++++++++++++++++++++++++++++++++++++
// 分频部分 开始
//++++++++++++++++++++++++++++++++++++++
reg [23:0] cnt; // 计数子
always @ (posedge CLOCK_50, negedge Q_KEY)
if (!Q_KEY)
cnt <= 0;
else
cnt <= cnt + 1'b1;

wire led_clk = cnt[23]; // 每(2^24/50M = 0.3355)sec取一次

//++++++++++++++++++++++++++++++++++++++
// 流水灯部分 开始
//++++++++++++++++++++++++++++++++++++++
reg [11:1] led_r;
reg dir;

always @ (posedge led_clk, negedge Q_KEY)
if (!Q_KEY)
dir <= 0;
else
if(led_r == 12'h3FF && dir == 0)
dir <= 1;
else if(led_r == 12'h001 && dir == 1)
dir <= 0;

always @ (posedge led_clk, negedge Q_KEY)
if (!Q_KEY)
led_r <= 12'h001;
else
if(!dir)
led_r <= (led_r << 1) + 1'b1;
else
led_r <= (led_r >> 1);
assign LED = ~led_r;
endmodule

助工
2012-11-07 22:27 9楼

------跑马灯,11个LED灯从左至右依次点亮

module rider_led(
input CLOCK_50,
input Q_KEY, // 板载按键RST
output [11:1] LED // LED[1] ~ LED[1]
);


reg [23:0] cnt;
always @ (posedge CLOCK_50, negedge Q_KEY)
if (!Q_KEY)
cnt <= 0;
else
cnt <= cnt + 1'b1;

wire led_clk = cnt[23]; // 每(2^24/50M = 0.3355)sec取一次

reg [11:1] led_r;
reg dir;

always @ (posedge led_clk, negedge Q_KEY)
if (!Q_KEY) // 复位后右移
dir <= 0;
else

if(led_r[10])
dir <= 1;
else if(led_r[2])
dir <= 0;

always @ (posedge led_clk, negedge Q_KEY)
if (!Q_KEY) // 复位后右移
led_r <= 12'h001;
else
if(!dir)
led_r <= led_r << 1; // LED右移
else
led_r <= led_r >> 1; // LED左移

assign LED = ~led_r; // 寄存器输出
endmodule

共19条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]