FPGA实验4: 时间基准电路和带使能的多周期计数器
来源:互联网 发布:linux系统iso镜像下载 编辑:程序博客网 时间:2024/05/23 15:29
说明:
- 实验一:设计时间基准电路和带使能的多周期计数器,要求后级计数器的计数范围改为0-15,再将计数器的0-15计数值经过译码,在DE0 的 HEX LED上显示成0-9-A-F的十六 进制数
1、 例化的子模块代码
// 时间基准计数器 module cnt_sync( CLK , // clock CNTVAL, // counter value OV ); // overflowinput CLK;output [32-1:0] CNTVAL;output OV;parameter MAX_VAL = 25_000_000;reg [32-1:0] CNTVAL;reg OV;always @ (posedge CLK) begin if(CNTVAL >= MAX_VAL) CNTVAL <= 0; else CNTVAL <= CNTVAL + 1'b1;endalways @ (CNTVAL) begin if(CNTVAL == MAX_VAL) OV = 1'b1; else OV = 1'b0;endendmodule // 0-15计数器module cnt_en_0to15( CLK , // clock CNTVAL, // counter value EN , OV ); // overflowinput CLK;input EN;output [4-1:0] CNTVAL;output OV;reg [4-1:0] CNTVAL;reg OV;always @ (posedge CLK) begin if(EN) begin // work enable if(CNTVAL >= 15) CNTVAL <= 0; else CNTVAL <= CNTVAL + 1'b1; end else CNTVAL <= CNTVAL ; // hold same valueendalways @ (CNTVAL) begin if(CNTVAL == 15) OV = 1'b1; else OV = 1'b0;endendmodule // 7段译码器module bcd7seg (Y,A); input [3:0] A ; wire [3:0] A ; output [6:0] Y ; wire [6:0] Y ; assign Y =~Y_r; reg [6:0] Y_r; always @(A)begin Y_r = 7'b1111111; case (A ) 4'b0000: Y_r = 7'b0111111; // 0 4'b0001: Y_r = 7'b0000110; // 1 4'b0010: Y_r = 7'b1011011; // 2 4'b0011: Y_r = 7'b1001111; // 3 4'b0100: Y_r = 7'b1100110; // 4 4'b0101: Y_r = 7'b1101101; // 5 4'b0110: Y_r = 7'b1111101; // 6 4'b0111: Y_r = 7'b0000111; // 7 4'b1000: Y_r = 7'b1111111; // 8 4'b1001: Y_r = 7'b1101111; // 9 4'b1010: Y_r = 7'b1110111; // A 4'b1011: Y_r = 7'b1111100; // b 4'b1100: Y_r = 7'b0111001; // c 4'b1101: Y_r = 7'b1011110; // d 4'b1110: Y_r = 7'b1111001; // E 4'b1111: Y_r = 7'b1110001; // F default: Y_r = 7'b0000000; endcase end endmodule // bcd7seg (Y,A)
2、原理图
3、RTL图
4、DE0开发板结果显示
链接:0-15计数器——7段译码管显示
http://v.youku.com/v_show/id_XMzE3Njk4NDI4NA==.html?spm=a2hzp.8244740.0.0
- 实验二:修改时间基准发生器,设计一个使用2个HEX LED,精度为0.1秒,范围为0-9.9秒的计时秒表,再在上面计时器的附加控制功能(清零、暂停)
1、 例化的子模块代码
//生成0.1S时钟module cnt_sync_1( CLK , // clock CNTVAL, // counter value OV ); // overflowinput CLK;output [32-1:0] CNTVAL;output OV;parameter MAX_VAL = 5_000_000;reg [32-1:0] CNTVAL;reg OV;always @ (posedge CLK) begin if(CNTVAL >= MAX_VAL) CNTVAL <= 0; else CNTVAL <= CNTVAL + 1'b1;endalways @ (CNTVAL) begin if(CNTVAL == MAX_VAL) OV = 1'b1; else OV = 1'b0;endendmodule //生成1S时钟module cnt_sync_2( CLK , // clock CNTVAL, // counter value OV ); // overflowinput CLK;output [32-1:0] CNTVAL;output OV;parameter MAX_VAL = 50_000_000;reg [32-1:0] CNTVAL;reg OV;always @ (posedge CLK) begin if(CNTVAL >= MAX_VAL) CNTVAL <= 0; else CNTVAL <= CNTVAL + 1'b1;endalways @ (CNTVAL) begin if(CNTVAL == MAX_VAL) OV = 1'b1; else OV = 1'b0;endendmodule // module cnt_en_0to9计数器module cnt_en_0to9( CLK , // clock CNTVAL, // counter value reset, //清零 EN , //使能(暂停) OV ); // overflowinput CLK,reset;input EN;output [4-1:0] CNTVAL;output OV;reg [4-1:0] CNTVAL;reg OV;always @ (posedge CLK) begin if(reset) CNTVAL <= 0; else begin if(EN==0) begin // work enable if(CNTVAL >= 9) CNTVAL <= 0; else CNTVAL <= CNTVAL + 1'b1; end else CNTVAL <= CNTVAL ; // hold same valueendendalways @ (CNTVAL) begin if(CNTVAL == 9) OV = 1'b1; else OV = 1'b0;endendmodule // module cnt_en_0to9//显示7段译码器(带小数点)module bcd7seg (Y,A); input [3:0] A ; wire [3:0] A ; output [7:0] Y ; wire [7:0] Y ; assign Y =~Y_r; reg [7:0] Y_r; always @(A)begin Y_r = 8'b1111111; case (A ) 4'b0000: Y_r = 8'b10111111; // 0 4'b0001: Y_r = 8'b10000110; // 1 4'b0010: Y_r = 8'b11011011; // 2 4'b0011: Y_r = 8'b11001111; // 3 4'b0100: Y_r = 8'b11100110; // 4 4'b0101: Y_r = 8'b11101101; // 5 4'b0110: Y_r = 8'b11111101; // 6 4'b0111: Y_r = 8'b10000111; // 7 4'b1000: Y_r = 8'b11111111; // 8 4'b1001: Y_r = 8'b11101111; // 9 4'b1010: Y_r = 8'b11110111; // A 4'b1011: Y_r = 8'b11111100; // b 4'b1100: Y_r = 8'b10111001; // c 4'b1101: Y_r = 8'b11011110; // d 4'b1110: Y_r = 8'b11111001; // E 4'b1111: Y_r = 8'b11110001; // F default: Y_r = 8'b10000000; endcase end endmodule // bcd7seg (Y,A)
2、原理图
3、RTL图
4、DE0开发板结果显示
链接:0-9.9秒表计时器
http://v.youku.com/v_show/id_XMzE3NzAwMTA0MA==.html?spm=a2hzp.8244740.0.0
阅读全文
0 0
- FPGA实验4: 时间基准电路和带使能的多周期计数器
- FPGA入门实验四:时间基准电路 和 带使能的多周期计数器
- FPGA实验四——时间基准电路和带使能的多周期计数器
- FPGA基础实验:时间基准电路和带使能的多周期计数器
- FPGA设计时间基准电路和带使能的多周期计数器
- 实验四:时间基准电路 和 带使能的多周期计数器
- 计数器 FPGA 电路实验 作业
- 计数器 FPGA 电路实验 作业
- 计数器 FPGA 电路实验 作业
- 计数器 FPGA 电路实验 作业
- 计数器 FPGA电路实验 作业2
- 2016秋《高速电路EDA设计》计数器FPGA电路实验
- FPGA实验6:计数器、ROM和DDS
- FPGA实验5:多周期移位寄存器
- FPGA入门实验五:多周期移位寄存器
- FPGA基础实验:多周期移位寄存器
- FPGA入门实验六:计数器、ROM和DDS
- FPGA实验六——计数器、ROM和DDS
- 回溯法大成!以回溯法实现栈的出栈情况的遍历为例子,轻松帮你深刻领悟回溯法
- 支持向量机SVM
- C#-变量和常量
- Oracle之在线重定义功能
- Openmeetings4.0.0二次开发日志(一)
- FPGA实验4: 时间基准电路和带使能的多周期计数器
- 数据分析之《菜鸟侦探挑战数据分析》-1-R语言-均值方差t检验
- 递归
- 基于遗传算法的最优化仿真(Java)
- 算法分析
- 实验二 词法分析器的实现
- 静态方法中调用非静态方法
- codeforces888e(折半枚举+二分搜索)
- 阿D下载效验