专栏中心

EEPW首页 > 专栏 > FPGA开发板DIY过程(十)

FPGA开发板DIY过程(十)

发布人:mmqm 时间:2012-10-20 来源:工程师 发布文章
继续学习Nios II。需要设计自己的IP,研究了些资料,先制作数码管的IP核。


修改之前seg.v的代码。思路是通过avalon总线发送32bits数据,每4bits代表一个数码管,可以显示0~F。8个数码管动态刷新。


代码:

// SEG数码管模块
module seg_ip(
input clk, // 系统时钟输入,50MHz
input reset_n, // 系统复位输入
input write,
input [31:0]writedata,

output[7:0] seg, // seg输出
output[7:0] dig // dig输出
);

reg[6:0] seg_r;
reg[7:0] dig_r;

assign seg = { 1'b1, seg_r };
assign dig = dig_r;

reg[15:0] scan; //扫描
reg[31:0] seg_data;

//扫描时钟
always @(posedge clk or negedge reset_n)
begin
if(!reset_n)
scan = 16'd0;
else
scan = scan + 1'b1;
end

always @(posedge clk or negedge reset_n)
begin
if(!reset_n)
seg_data[31:0] <= 31'd0;
else if(write)
seg_data[31:0] <= writedata[31:0];
end

//片选
always @(scan[15:13])
begin
case(scan[15:13])
3'd0: begin dig_r <= ~8'h01; seg_r <= trans(seg_data[3:0]); end
3'd1: begin dig_r <= ~8'h02; seg_r <= trans(seg_data[7:4]); end
3'd2: begin dig_r <= ~8'h04; seg_r <= trans(seg_data[11:8]); end
3'd3: begin dig_r <= ~8'h08; seg_r <= trans(seg_data[15:12]); end
3'd4: begin dig_r <= ~8'h10; seg_r <= trans(seg_data[19:16]); end
3'd5: begin dig_r <= ~8'h20; seg_r <= trans(seg_data[23:20]); end
3'd6: begin dig_r <= ~8'h40; seg_r <= trans(seg_data[27:24]); end
3'd7: begin dig_r <= ~8'h80; seg_r <= trans(seg_data[31:28]); end
endcase
end

//译码任务
function [6:0] trans;
input [3:0] in_data;
begin
case(in_data[3:0])
0: trans = 7'b100_0000; // 0
1: trans = 7'b111_1001; // 1
2: trans = 7'b010_0100; // 2
3: trans = 7'b011_0000; // 3
4: trans = 7'b001_1001; // 4
5: trans = 7'b001_0010; // 5
6: trans = 7'b000_0010; // 6
7: trans = 7'b101_1000; // 7
8: trans = 7'b000_0000; // 8
9: trans = 7'b001_1000; // 9
10: trans = 7'b000_1000; // A
11: trans = 7'b000_0011; // b
12: trans = 7'b100_0110; // c
13: trans = 7'b010_0001; // d
14: trans = 7'b000_0110; // E
15: trans = 7'b000_1110; // F
default: trans = 7'b111_1111;
endcase
end
endfunction

endmodule



在IDE端,测试程序修改为:

#define seg *(volatile unsigned int *) NIXIETUBE_BASE

seg = data++;

按键一次,数据+1



视频:
http://v.qq.com/boke/page/p/d/h/p0106ogi4dh.html

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

LED照明驱动解决方案

视频 2010-01-14

现代通信系统原理

研调上修本季DRAM涨幅 上看23%

到2026年全球IT支出将超过6万亿美元

线路板基础教材

波士顿动力公司和Analog在阿联酋部署物理智能

温度传感器类型与温度测量技术

英伟达估值突破5万亿美元,人工智能热潮推动迅速崛起

LatticeECP3 FPGA低功耗视频

视频 2010-01-13

光传感器技术:光电池与光敏电阻

如何设置单板RIO系统

视频 2010-01-14

快速开发基于Blackfin处理器的视频应用

视频 2010-01-13

无速度传感器矢量控制原理与实践

显示器适用行管性能表(日本厂商部分)

无铅制程教程三篇

三星3纳米以下制程中DTCO将成关键

EDA/PCB 2025-10-30

MachXO迷你开发套件视频

视频 2010-01-14

OpenAI 计划 2026-2027 年首次公开募股,估值高达 1T 美元

从系统设计到源代码:Tobias Kästner 谈 Zephyr

NVIDIA GTC DC加映演出 解析黄仁勋「一石三鸟」大计

智能计算 2025-10-30
更多 培训课堂
更多 焦点
更多 视频

技术专区