2017春FPGA阶段二作业
来源:互联网 发布:知乎的问题怎么删除 编辑:程序博客网 时间:2024/05/24 23:14
题目2-1:多周期-恒最大值计数-显示电路
设计思路:电路应由3部分构成
第一部分,秒脉冲生成器,输出秒脉冲信号,每秒输出1个CLK周期的高电平,用于后级电路的工作使能。
第二部分,0-9多周期计数器,每个工作使能有效的CLK周期,进行一次计数动作。
第三部分,4-7译码器,把0-9计数器的计数值,译码成HEX LED 的显示逻辑值
设计原理图
秒脉冲生成器RTL图
Verilog HDL代码
module clk_sec( CLK , CNTVAL, OV ); input CLK;output [32-1:0] CNTVAL;output OV;parameter MAX_VAL = 50_00_0000;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-9计数器RTL图
Verilog HDL代码
module cnt0to9( 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 >= 9) CNTVAL <= 0; else CNTVAL <= CNTVAL + 1'b1; end else CNTVAL <= CNTVAL ; endalways @ (CNTVAL) begin if(CNTVAL == 9) OV = 1'b1; else OV = 1'b0;endendmodule
4-7译码器RTL图
Verilog HDL代码
module dec47 (data_in ,data_out );input [3:0] data_in ;output [6:0] data_out ;reg [6:0] data_out ;always @(data_in )begindata_out = 7'b1111111;case (data_in )4'b0000: data_out = 7'b1000000; // 04'b0001: data_out = 7'b1111001; // 14'b0010: data_out = 7'b0100100; // 24'b0011: data_out = 7'b0110000; // 34'b0100: data_out = 7'b0011001; // 44'b0101: data_out = 7'b0010010; // 54'b0110: data_out = 7'b0000011; // 64'b0111: data_out = 7'b1111000; // 74'b1000: data_out = 7'b0000000; // 84'b1001: data_out = 7'b0011000; // 94'b1010: data_out = 7'b0001000; // A4'b1011: data_out = 7'b0000011; // b4'b1100: data_out = 7'b0100111; // c4'b1101: data_out = 7'b0100001; // d4'b1110: data_out = 7'b0000110; // E4'b1111: data_out = 7'b0001110; // Fdefault: data_out = 7'b1111111;endcaseendendmodule
Signaltap的分段触发捕获
题目2-2 :LED 亮度调节
设计思路:电路应由两部分构成
第一部分,1600Hz的脉冲发生器,10ms内有16个高电平脉冲,便于调节方波占空比
第二部分,四个不同占空比的方波发生器,根据对输入脉冲的计数,调节输出的正负,控制占空比
设计原理图
1600Hz的脉冲发生器RTL图
Verilog HDL代码
module clk_f1600( CLK , // clock CNTVAL, // counter value OV ); // overflowinput CLK;output [32-1:0] CNTVAL;output OV;parameter MAX_VAL = 31250;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
方波发生器RTL图
Verilog HDL代码
module squWave4(input clk,output reg wave);reg [3:0] count;always @ (posedge clk)begin if(count == 15) begin count <= 0; end else if(count <= 3) begin count <=count + 1'b1; wave <= 1'b1; end else if(count < 15) begin count <=count + 1'b1; wave <= 0; end end endmodule
Signaltap的分段触发捕获
Sample depth选256,选32 8 Sample segments
题目2-3 :PWM的创意发挥
一个计数器从0-9循环计数,不同的数值的亮度不同,0最暗,9最亮
设计思路:电路应由4部分构成
第一部分,秒脉冲生成器,输出秒脉冲信号,每秒输出1个CLK周期的高电平,用于后级电路的工作使能。
第二部分,0-9多周期计数器,每个工作使能有效的CLK周期,进行一次计数动作。
第三部分,可控制占空比的方波发生器,根据计数值,调节输出波形的占空比
第四部分,带使能的4-7译码器,不同占空比的方波作为使能信号,把0-9计数器的计数值,译码成HEX LED 的显示逻辑值
设计原理图
秒脉冲生成器和0-9多周期计数器与题目2-1原理相同。
可控制占空比的方波发生器RTL图
Verilog HDL代码
module squWave(input clk,input [3:0] max,output reg wave);reg [3:0] count;always @ (posedge clk)begin if(count == 9) begin count <= 0; end else if(count <= max) begin count <=count + 1'b1; wave <= 1'b1; end else if(count < 9) begin count <=count + 1'b1; wave <= 0; end end endmodule
带使能的4-7译码器RTL图
Verilog HDL代码
module dec47 (data_in ,data_out ,en);input [3:0] data_in ;input en;output [6:0] data_out ;reg [6:0] data_out ;always @(data_in or en)begindata_out = 7'b1111111;if(en)begincase (data_in )4'b0000: data_out = 7'b1000000; // 04'b0001: data_out = 7'b1111001; // 14'b0010: data_out = 7'b0100100; // 24'b0011: data_out = 7'b0110000; // 34'b0100: data_out = 7'b0011001; // 44'b0101: data_out = 7'b0010010; // 54'b0110: data_out = 7'b0000011; // 64'b0111: data_out = 7'b1111000; // 74'b1000: data_out = 7'b0000000; // 84'b1001: data_out = 7'b0011000; // 94'b1010: data_out = 7'b0001000; // A4'b1011: data_out = 7'b0000011; // b4'b1100: data_out = 7'b0100111; // c4'b1101: data_out = 7'b0100001; // d4'b1110: data_out = 7'b0000110; // E4'b1111: data_out = 7'b0001110; // Fdefault: data_out = 7'b1111111;endcaseendelse data_out = 7'b1111111;endendmodule
1 0
- 2017春FPGA阶段二作业
- FPGA作业_阶段一
- FPGA阶段一作业提交
- FPGA作业二
- 2017春FPGA计数器作业
- FPGA作业二——verilog设计
- FPGA 作业一
- FPGA作业一
- 计数器 FPGA 电路实验 作业
- 计数器 FPGA 电路实验 作业
- 计数器 FPGA 电路实验 作业
- 计数器 FPGA 电路实验 作业
- Altera FPGA(二)
- FPGA 入门 (二)
- FPGA笔记(二)
- FPGA学习记录二
- 保研阶段二
- 阶段自考之二
- 58到家数据库30条军规解读
- 『 Python笔记』 lambda表达式和函数式编程
- 《深入理解Java虚拟机》个人读书总结——JAVA虚拟机内存
- vs2008 a problem has been encountered while loading the setup components
- PHP isset()与empty()的使用区别详解
- 2017春FPGA阶段二作业
- 关于systemback
- java程序中控制程序跳转的语句有哪些?在程序中有何作用?
- 检测属性
- LSTM入门
- 安装theano
- 88. Merge Sorted Array
- Hadoop installation Local (Standalone) Mode
- linux 用户、用户组的使用及ssh连接