前言

  终于有时间折腾这块fpga开发板了,不知不觉又熬夜了。

正文

  实现一个呼吸灯的项目

  打开quartus ii 建立工程 步骤就不讲了

  新建一个pwm.v文件内容

module PWM ( 

    input sys_clk,
input sys_rst_n,
input [WIDTH-1:0] duty_cycle, //output ports
output wire pwm ); //reg define reg pwm_out;
reg [19:0] counter; // 最大值 1048575,PWM频率最低可以设置到 48HZ //parameter define
parameter WIDTH = 7; /*
设PWM频率为 f,晶振频率为F
则计数器的最大值为 counter_max = (1/f)/(1/F) = F/f = 50M / 2K = 25*10^3
*/
parameter PWM_FREQUENCY = 2_000; //2K
parameter OSC_FREQUENCY = 50_000_000; //50M
parameter COUNTER_MAX = OSC_FREQUENCY/PWM_FREQUENCY; // 主程序
always @(posedge sys_clk or negedge sys_rst_n) begin
if (sys_rst_n ==1'b0)
counter <= 20'b0;
else if (counter>=COUNTER_MAX)
counter <= 20'b0;
else
counter <= counter + 20'b1;
end always @(posedge sys_clk or negedge sys_rst_n) begin
if (sys_rst_n ==1'b0) begin
pwm_out <= 1'b0;
end
else if (counter <= COUNTER_MAX*duty_cycle/100)
pwm_out <= 1'b1;
else
pwm_out <= 1'b0;
end assign pwm = !pwm_out; endmodule

  建立LED.V设为顶层文件

module LED
(
input wire clk ,
input wire rst_n ,
output wire led
); wire [6:0] dyc; reg [6:0] dyc_value;
reg [25:0] cnt;
reg state; initial dyc_value = 0;
initial state = 0; parameter delay_ms = 50_000 * 10; always @(posedge clk or negedge rst_n)begin
if(! rst_n)begin
cnt <= 0;
dyc_value <= 0;
state <= 0;
end else begin if(cnt == delay_ms -1)begin
cnt <= 0;
if(state == 0)
dyc_value <= dyc_value + 1;
else
dyc_value <= dyc_value - 1;
end else begin
cnt <= cnt + 1;
end if(dyc_value == 100)
state <= 1;
else if(dyc_value == 0)
state <= 0;
end
end assign dyc = dyc_value; PWM U_PWM(
.sys_clk(clk),
.sys_rst_n(rst_n),
.duty_cycle(dyc),
.pwm(led)
); endmodule

FPGA学习过程(一)的更多相关文章

  1. FPGA学习过程(二)

    项目:数码管动态显示时间 首先建立一个计时一秒的模块,作为数码管显示的需要 module timer_s( input wire clk, input wire rst_n, output wire ...

  2. 学习FPGA过程中的理论知识

    学习FPGA,先要有数电知识,最好有点C语言,,学好硬件描述语言,verilog或者vhdl.在有这些基础上,做一些小的模块不断积累.这里不再赘述. 下面介绍一下关于FPGA学习过程中的一些理论知识. ...

  3. 基于Verilog的偶数、奇数、半整数分频以及任意分频器设计

    在FPGA的学习过程中,最简单最基本的实验应该就是分频器了.由于FPGA的晶振频率都是固定值,只能产生固定频率的时序信号,但是实际工程中我们需要各种各样不同频率的信号,这时候就需要对晶振产生的频率进行 ...

  4. FPGA学习之基本结构

    如何学习FPGA中提到第一步:学习.了解FPGA结构,FPGA到底是什么东西,芯片里面有什么,不要开始就拿个开发板照着别人的东西去编程.既然要开始学习FPGA,那么就应该从其基本结构开始.以下内容是我 ...

  5. FPGA学习之路——一路走来

    既然选择了远方,便不顾风雨兼程,一路走下去. —韩彬 在看bingo的书时,看到这样写到.做什么事情都不容易,学习也是,所以一个词很重要不忘初心.作为一名大二的学生,我很高兴能够将自己学习FPGA的过 ...

  6. 基于FPGA的HDMI高清显示接口驱动

    HDMI是(High Definition Multimedia Interface)的缩写,意思是高清晰度多媒体接口,是一种数字化视频/音频接口技术,适合影像传输的专用型数字化接口,可同时传送音频和 ...

  7. 基于FPGA的Cordic算法实现

    CORDIC(Coordinate Rotation Digital Computer)算法即坐标旋转数字计算方法,是J.D.Volder1于1959年首次提出,主要用于三角函数.双曲线.指数.对数的 ...

  8. 【转载】FPGA算法设计随笔

    FPGA设计算法依次需要完成MATLAB浮点仿真 MATLAB定点仿真 verilogHDL定点运算以及数据对比的流程.其中浮点到定点的转换尤为重要,需要在数据表示范围和精度之间做出权衡.另外掌握定点 ...

  9. 基于FPGA的DDS设计(一)

    最近在学习基于FPGA的DDS设计,借此机会把学习过程记录下来,当作自己的学习笔记也希望能够帮助到学习DDS的小伙伴. DDS(Direct Digital Synthesizer)直接数字合成器,这 ...

随机推荐

  1. MOS管开关电路笔记

    1.MOS管开关电路是利用MOS管栅极(g)控制MOS管源极(s)和漏极(d)通断的原理构造的电路.MOS管分为N沟道与P沟道,所以开关电路也主要分为两种.P沟道或N沟道共四种类型,但实际应用的只有增 ...

  2. 重置networker9.0密码

    一.重置Networker 9.0密码 下面所有步骤在Networker服务器上操作 1.创建"mypassword_in.txt"文件 在服务器C盘根目录下创建一个 " ...

  3. C语言:输出各位整数的数字

    #include <stdio.h> main() { int i,a,b,c,d,e; printf("请输入四位整数:\n"); scanf("%d&qu ...

  4. c语言:大纲

    C语言大纲:1.C语言程序设计知识(1)基本数据类型与简单程序设计(2)分支程序设计(3)循环程序设计(4)数组(5)函数(6)结构体(7)指针2.C语言程序设计(1)顺序结构的程序设计(2)分支结构 ...

  5. 家庭账本开发day10

    系统的增删改查基本功能完成,进行业务流程完整测试.完善相关功能,编写搜索 功能,通过日期,类型等关键字进行搜索,对搜索到的数据表格完成重载 // 监听搜索操作        form.on('subm ...

  6. 基于SSM小区物业管理系统

    随着计算机的不断发展和广泛应用,人们的工作效率得到不断的提高.互联网的发展,更是缩短了人们之间的距离.如何充分利用互联网,这是大家共同关心的问题.本文主要介绍了关于小区管理系统的实现方法,设计规划了小 ...

  7. Centos 7 配置阿里云 yum 源

    Centos 7 配置阿里云 yum 源 一. 禁用 yum 插件 fastestmirror 修改插件的配置文件 cp /etc/yum/pluginconf.d/fastestmirror.con ...

  8. RedHat7.4安装在个人电脑(笔记本)中安装遇到的问题总结

    RedHat7.4安装在个人电脑(笔记本)中安装 以下纯属个人在安装过程中遇到问题的一些总结,如果有描述不恰当的地方,还请给予指出,欢迎大家评论和交流. 物理主机的配置: 硬件配置: 华硕A456U笔 ...

  9. TCP协议与HTTP协议区别

    一.TCP协议与HTTP协议区别 1.直观认识 TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页 ...

  10. python进程间的通讯实现

    1:进程间通讯的方法:apply_async()非阻塞式通讯     apply()阻塞式通讯 2:使用Queue实现对Process创建的进程间通讯, Queue本身是一个消息队列程序,Queue常 ...