这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » holdmyhand 进程贴 → 按键篇

共13条 1/2 1 2 跳转至

holdmyhand 进程贴 → 按键篇

工程师
2012-10-01 11:09:44     打赏



关键词: holdmyhand     进程     按键    

工程师
2012-10-01 11:27:13     打赏
2楼

9月30日收到包裹,黑色沉金的板子分外引人注目。FPGA学习进程开始。先上图:


工程师
2012-10-02 21:13:28     打赏
3楼

完成核心板及接口板的焊接。 核心板FPGA芯片焊接过程中,有引脚发生错位,好一番折腾才得以扭正,还不知是否影响接下来的实验...


工程师
2012-10-09 08:31:20     打赏
4楼
之前了解FPGA时,看过一个视频教程,在此分享一下
特权同学《****玩转FPGA》
http://u.youku.com/user_video/id_UMTgxODg5NjEy.html

工程师
2012-10-10 09:56:02     打赏
5楼
Altera USB Blaster的驱动在这里

安装Quartus II 12.0之后,在安装路径下便有了Altera USB Blaster的驱动文件,其文件夹路径为:XXX\12.0\quartus\drivers...

插上USB Blaster线,若提示驱动安装失败,可采取以下措施:
管理→设备管理器→双击usb blaster→更新驱动程序→浏览计算机以查找驱动文件→在上述路径下搜索→下一步...等待安装成功

工程师
2012-10-12 11:54:12     打赏
6楼
点亮LED,使得间隔的4个LED点亮。
1)建立工程,新建Verilog HDL文件;
2)写代码→保存→Start Analysis&Synthesis;
3)器件选型、设置→分配引脚→Start Compilation;
4)Programmer.

板子现象,截图如下:

工程师
2012-10-21 15:20:25     打赏
7楼

工程师
2012-10-21 15:36:52     打赏
8楼

是不影响调试使用,但焊接确实失误了,焊盘焊掉了一个...


工程师
2012-10-28 08:42:39     打赏
9楼
1)LED闪烁灯实验.
效果如下,8个LED周期性闪烁(亮→灭1秒,灭→亮1秒,如此循环往复)


2)流水灯实验中,控制实现流水灯效果的赋值语句   led <= led << 1;  //左移
对应的实验效果是“向右”流水灯;
      跑马灯实验中,控制实现跑马灯效果的赋值语句  
              led <= {led[6:0], led[7]};  //移位寄存器中完成数据左移一位操作,即(led[7]->led[0], led[0]->led[1], led[1]->led[2], led[2]->led[3], ---, led[6]->led[7])
对应的实验效果是“向右”跑马灯;
      问题就是,程序中“左”操作,对应效果是向“右”,个人感觉有些别扭,为了程序中“左”操作,实际效果也是向“左”流水灯或跑马灯,在配置FPGA引脚(Pin Planner)时,可将原理图中 LED1~LED8 所连接的引脚位置倒序,体现在接口板上 D8当作D1,D7当作D2- - - D1当作D8。仅个人观点。


工程师
2012-10-29 10:41:59     打赏
10楼
1)LED花样彩灯实验功能完成.
8个LED闪烁两次→向右流水灯→向左跑马灯→两边向内流水→如此循环往复...
2)实际效果如视频所示:

3)程序代码如下,还未进一步精简:
//LED花样彩灯
//holdmyhand 10月28日 16:09:43
module led_hy(sys_clk, sys_rstn, led);
    input sys_clk;
    input sys_rstn;
    output [7:0] led;
    reg [7:0] led;
    reg [31:0] delay_cnt;  //延时计数器
    reg [31:0] counter;  //计数变量
    reg [1:0] current_state, next_state;  //LED当前状态,下一状态
    reg [3:0] led_h, led_l;
    parameter ALL_ON=8'b00000000, ALL_OFF=8'b11111111;  //参数定义 符号常量
    parameter S0=2'b00, S1=2'b01, S2=2'b10, S3=2'b11;
   
    always @(posedge sys_clk or negedge sys_rstn)
        begin
            if(!sys_rstn)
                delay_cnt <= 32'd0;
            else
                begin
                    if(delay_cnt==32'd24999999)
                        delay_cnt <= 32'd0;
                    else
                        delay_cnt <= delay_cnt + 1'b1;
                end
        end
    always @(posedge sys_clk or negedge sys_rstn)
        begin
            if(!sys_rstn)
                begin
                    led <= ALL_OFF;
                    counter <= 32'd0;
                    current_state <= S0;
                    led_h <= 4'b0111;
                    led_l <= 4'b1110;
                end
            else
                begin
                    if(delay_cnt==32'd24999999)
                        begin
                            case(current_state)
                                S0:begin
                                        counter <= counter + 1'b1;
                                        if(counter<32'd3)
                                            led <= ~led;
                                        else
                                            begin
                                                counter <= 32'd0;
                                                led <= 8'b01111111;
                                                next_state <= S1;
                                            end                                           
                                    end
                                S1:begin
                                        led <= led >> 1;  //右移
                                        if(led==ALL_ON)
                                            begin
                                                led <= 8'b11111110;
                                                next_state <= S2;
                                            end                                           
                                    end
                                S2:begin
                                        led <= {led[6:0], led[7]};  //移位寄存器左移一位操作
                                        if(led==8'b01111111)
                                            begin
                                                led <= {led_h, led_l};
                                                next_state <= S3;
                                            end
                                    end
                                S3:begin
                                        led_h <= led_h >> 1;
                                        led_l <= led_l << 1;
                                        led <= {led_h, led_l};
                                        if(led==ALL_ON)
                                            begin
                                                led_h <= 4'b0111;
                                                led_l <= 4'b1110;
                                                led <= ALL_OFF;
                                                next_state <= S0;
                                            end
                                    end
                                default:led <= led;
                            endcase
                        end
                    else
                        led <= led;
                    current_state <= next_state;
                end
        end
endmodule  

共13条 1/2 1 2 跳转至

回复

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