这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 啸风的FPGA DIY开发进程

共34条 1/4 1 2 3 4 跳转至

啸风的FPGA DIY开发进程

专家
2012-09-25 21:34:40     打赏


TCL引脚分配文件的使用教程
注: 共享的sof文件中晶振接Y1,如果接Y2的网友有需要,我可以修改重新编译后分享给您。

啸风的FPGA开发板DIY进程

时间 进程名 位置/链接
 2012-09-04  开发板的申请  http://forum.eepw.com.cn/thread/220375/1
 2012-09-25  申请通过  http://forum.eepw.com.cn/thread/221180/1
 2012-09-21  淘宝下单  
 2012-09-25 快递 信息  
 2012-09-25  贴片芯片的焊接方法(视频)  http://forum.eepw.com.cn/thread/221168/1
 2012-09-25  USB Blaster下载线驱动的安装(视频)  http://forum.eepw.com.cn/thread/221175/1
 2012-09-25  Quartus II 软件的安装(视频教程)  http://forum.eepw.com.cn/thread/221169/1
 2012-09-25  收到开发板(配图)                              2
 2012-09-25  核心板的焊接完成(配图)                              3
 2012-09-26  板子已经焊接完成(配图)                              9楼 、11
 2012-09-28  开发板脚本文件编写完成                             12
 2012-09-28  1、led闪烁、led流水灯                              14
 2012-09-28  2、8位数码管静态显示                              15
 2012-09-29  3、蜂鸣器输出报警音                              16
 2012-10-02  4、按键实验                       17
 2012-10-03  5、VGA八色显示                              18
 2012-10-10  6、硬件电子琴                               20
 2012-10-11  7、硬件乐曲自动弹奏 《两只老虎》                                22 楼
 2012-10-11  8、八位数码管动态显示 进程日期2012 10 11                               25
 2012-10-14 9、综合实验:交通灯                               32
 2012-10-14

TCL引脚分配文件的使用教程

                              35
 2012-10-20 10、综合实验:数字钟数码管显示                              52  楼
 2012-10-22  11、LCD1602显示                              57
 2012-11-04  12、串口的收发实验                             63  楼
 2012-12-23  13、PLL简单的配置实验                               76
     
     
     
     
     
     
     
     
     

NIOS II进程:




关键词: 啸风     开发     进程    

专家
2012-09-25 21:41:40     打赏
2楼
晒一晒我收到的板子


板子跟元器件:



接口板:




核心板:



核心板跟接口板:


专家
2012-09-25 21:48:06     打赏
3楼
核心板焊接完成

正面:



反面:


专家
2012-09-26 20:14:57     打赏
4楼
板子焊接完成

啥也不说,请看图!

先来一个引脚图,焊接的方法就是我发的帖子中的焊接方法。
大家可能看到有几个引脚连在一起了,其实那个是洗板子是留下的卫生纸, 拍照的时候没注意,现在已经清理掉了。






由于网速实在的差,其余的图我会尽快的贴出来。


其余的已经贴出来了 #11

专家
2012-09-26 20:42:50     打赏
5楼

其余的图

之前传的图都是手机拍的,不是很清楚。现在用相机拍的,要好很多。

核心板:



应网友要求,传一个上电图:




接下来当然是我的接口板:





上面的图是不是觉得少了点什么?那请看下图





马上展出的是核心板跟接口板的结合,一款非常完美的FPGA开发板就完成了。







一张是不是觉得看的不过瘾,再给大家多来几张。






专家
2012-09-28 11:23:55     打赏
6楼
开发板脚本文件



为了方便后续进程的进行,编写了一个开发板的脚本文件,用于定义开发板的的每个引脚的。这是仿照别人的脚本文件写的,如果有不对的地方,请大神们多多指教。

跟大家分享一下:
http://share.eepw.com.cn/share/download/id/78986




专家
2012-09-28 19:32:21     打赏
7楼
1.LED闪烁、LED流水灯演示

准备工作也做的差不多了,脚本文件编写完,每次就不用去一个一个引脚的分配了。刚下午调试了LED闪烁、LED流水灯。其实这两个实验没什么多大的区别。先看视频:


LED闪烁




LED流水灯



代码:

module led_flash(
                 clk,rst_n,
                 led
                 );
                
    input clk;          //50MHz
    input rst_n;        //复位信号,低电平有效
   
    output[7: 0] led;   //8个LED灯
   
    reg[23: 0] cnt;     //计数器,最大可以计到2^24 *20 ns ,大约320ms
   
    always @(posedge clk or negedge rst_n)
        if(!rst_n)
            cnt <= 24'b0;
        else
            cnt <= cnt + 1'b1;     //循环计数
           
    reg[7: 0] led_r;
      
    always @(posedge clk or negedge rst_n)
        if(!rst_n)
            led_r <= 8'b11111111;
        else if(cnt == 24'hffffff)   //每大约320ms led_r进行翻转
            led_r <= ~led_r;
           
    assign led = led_r;   
           
endmodule   

专家
2012-09-28 21:40:15     打赏
8楼

2、八位数码管静态显示


视频:




module smg_8bit(
   clk,rst_n,
   sm_cs,sm_db 
  );

input clk;  // 50MHz
input rst_n; // 复位信号,低有效

output[7:0] sm_cs; //数码管片选信号,低有效
output[6:0] sm_db; //7段数码管(不包括小数点)

reg[24:0] cnt; //计数器,最大可以计数到2的25次方*20ns=640ms

always @ (posedge clk or negedge rst_n)
 if(!rst_n) cnt <= 25'd0;
 else cnt <= cnt+1'b1; //循环计数
 
reg[3:0] num; //显示数值

always @ (posedge clk or negedge rst_n)
 if(!rst_n) num <= 4'd0;
 else if(cnt == 24'hffffff) num <= num+1'b1; //每640ms增一

//-------------------------------------------------------------------------------
/* 共阳极 :不带小数点
              ;0,  1,  2,  3,  4, 5,  6,  7, 
      db      0xc0,0xf9,0xa4,0xb0,0x99,0x92,7dh,07h
              ;8,  9, a,  b,   c,  d,  e,  f , 
      db      80h,90h,88h,83h,c6h,a1h,86h,8eh*/
parameter seg0 = 7'hc0,
   seg1 = 7'hf9,
   seg2 = 7'ha4,
   seg3 = 7'hb0,
   seg4 = 7'h99,
   seg5 = 7'h92,
   seg6 = 7'h82,
   seg7 = 7'hf8,
   seg8 = 7'h80,
   seg9 = 7'h90,
   sega = 7'h88,
   segb = 7'h83,
   segc = 7'hc6,
   segd = 7'ha1,
   sege = 7'h86,
   segf = 7'h8e;

reg[6:0] sm_dbr;  //7段数码管(不包括小数点)
 
always @ (num)
  case (num) //NUM值显示在两个数码管上
   4'h0: sm_dbr <= seg0;

   4'h1: sm_dbr <= seg1;
   4'h2: sm_dbr <= seg2;
   4'h3: sm_dbr <= seg3;
   4'h4: sm_dbr <= seg4;
   4'h5: sm_dbr <= seg5;
   4'h6: sm_dbr <= seg6;
   4'h7: sm_dbr <= seg7;
   4'h8: sm_dbr <= seg8;
   4'h9: sm_dbr <= seg9;
   4'ha: sm_dbr <= sega;
   4'hb: sm_dbr <= segb;
   4'hc: sm_dbr <= segc;
   4'hd: sm_dbr <= segd;
   4'he: sm_dbr <= sege;
   4'hf: sm_dbr <= segf;
   default: ;
   endcase

assign sm_db = sm_dbr;
assign sm_cs = 8'b0;  //数码管常开
endmodule


sof文件:http://share.eepw.com.cn/share/download/id/78999


专家
2012-09-29 20:08:53     打赏
9楼

3、蜂鸣器输出报警音

既然是报警音,当然有点刺耳  。  回头弄乐曲的时候声音就悦耳了



源码:

module beep(
   clk,rst_n,
   beep 
  );

input clk;  //50MHz
input rst_n; //低电平复位信号

output beep; //蜂鸣器

//---------------------------------------------------
reg[15:0] cnt; // 计数器

always @ (posedge clk or negedge rst_n) //异步复位
 if(!rst_n) cnt <= 16'd0;
 else cnt <= cnt+1'b1; //寄存器cnt 2^16 * 20 ns循环计数

//----------------------------------------------------
reg beep_r; //beep信号值寄存器

always @ (posedge clk or negedge rst_n)
 if(!rst_n) beep_r <= 1'b0;
 else if(cnt == 4'hffff) beep_r <= ~beep_r; //每2^16 * 20 ns让beep_r值翻转一次

assign beep = beep_r; 

endmodule


sof文件:http://share.eepw.com.cn/share/download/id/79006


专家
2012-10-02 20:13:33     打赏
10楼

4、按键实验

啥也不说,先上效果视频。




源码:

//当八个独立按键的某一个被按下后,相应的LED被点亮;
//  再次按下后,LED熄灭,按键控制LED亮灭

module key(
      clk,rst_n,
   key,led
      );

input   clk; //主时钟信号,50MHz
input   rst_n; //复位信号,低有效
input[7: 0] key;  
//八个独立按键,低表示按下
output[7: 0] led; //发光二极管,分别由按键控制

//---------------------------------------------------------------------------
reg[7: 0] key_rst; 

always @(posedge clk  or negedge rst_n)
    if (!rst_n) key_rst <= 8'b1111_1111;
    else key_rst <= key;

reg[7: 0] key_rst_r;       //每个时钟周期的上升沿将low_sw信号锁存到low_sw_r中

always @ ( posedge clk  or negedge rst_n )
    if (!rst_n) key_rst_r <= 8'b1111_1111;
    else key_rst_r <= key_rst;
  
//当寄存器key_rst由1变为0时,led_an的值变为高,维持一个时钟周期
wire[7: 0] key_an = key_rst_r & ( ~key_rst);

//---------------------------------------------------------------------------
reg[19:0]  cnt; //计数寄存器

always @ (posedge clk  or negedge rst_n)
    if (!rst_n) cnt <= 20'd0; //异步复位
 else if(key_an) cnt <=20'd0;
    else cnt <= cnt + 1'b1;
 
reg[7: 0] low_sw;

always @(posedge clk  or negedge rst_n)
    if (!rst_n) low_sw <= 8'b1111_1111;
    else if (cnt == 20'hfffff)  //满20ms,将按键值锁存到寄存器low_sw中  cnt == 20'hfffff
      low_sw <= key;
     
//---------------------------------------------------------------------------
reg  [7:0] low_sw_r;       //每个时钟周期的上升沿将low_sw信号锁存到low_sw_r中

always @ ( posedge clk  or negedge rst_n )
    if (!rst_n) low_sw_r <= 8'b1111_1111;
    else low_sw_r <= low_sw;
  
//当寄存器low_sw由1变为0时,led_ctrl的值变为高,维持一个时钟周期
wire[7: 0] led_ctrl = low_sw_r[7: 0] & ( ~low_sw[7: 0]);

reg[7: 0] d;

 
always @ (posedge clk or negedge rst_n)
    if (!rst_n) 
        d <= 8'b1111_1111;
    else begin  //某个按键值变化时,LED将做亮灭翻转
        if ( led_ctrl[0] ) d[0] <= ~d[0]; 
        if ( led_ctrl[1] ) d[1] <= ~d[1];
        if ( led_ctrl[2] ) d[2] <= ~d[2];
        if ( led_ctrl[3] ) d[3] <= ~d[3]; 
        if ( led_ctrl[4] ) d[4] <= ~d[4];
        if ( led_ctrl[5] ) d[5] <= ~d[5];
        if ( led_ctrl[6] ) d[6] <= ~d[6]; 
        if ( led_ctrl[7] ) d[7] <= ~d[7];
     
      end

assign led[0] = d[0] ? 1'b1 : 1'b0;  //LED翻转输出
assign led[1] = d[1] ? 1'b1 : 1'b0;
assign led[2] = d[2] ? 1'b1 : 1'b0;
assign led[3] = d[3] ? 1'b1 : 1'b0;
assign led[4] = d[4] ? 1'b1 : 1'b0;
assign led[5] = d[5] ? 1'b1 : 1'b0;
assign led[6] = d[6] ? 1'b1 : 1'b0;
assign led[7] = d[7] ? 1'b1 : 1'b0;

endmodule

sof文件:
——回复可见内容——


共34条 1/4 1 2 3 4 跳转至

回复

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