Cyclone10LP FPGA控制SD卡音乐播放Verilog例程源码Quartus17.1工程文件+文档资料,FPGA为CYCLONE10LP系列中的10CL025YU256C8. 完整的Quartus工程文件,可以做为你的学习设计参考。 module top( input clk, input rst_n, input key, input wm8731_bclk, //audio bit clock input wm8731_daclrc, //DAC sample rate left right clock output wm8731_dacdat, //DAC audio data output input wm8731_adclrc, //ADC sample rate left right clock input wm8731_adcdat, //ADC audio data input inout wm8731_scl, //I2C clock inout wm8731_sda, //I2C data output sd_ncs, //SD card chip select (SPI mode) output sd_dclk, //SD card clock output sd_mosi, //SD card controller data output input sd_miso, //SD card controller data input output [3:0] led ); wire[9:0] lut_index; wire[31:0] lut_data; wire[3:0] state_code; //I2C master controller i2c_config i2c_config_m0( .rst (~rst_n ), .clk (clk ), .clk_div_cnt (16'd99 ), .i2c_addr_2byte (1'b0 ), .lut_index (lut_index ), .lut_dev_addr (lut_data[31:24] ), .lut_reg_addr (lut_data[23:8] ), .lut_reg_data (lut_data[7:0] ),
基于cyclone2 fpga的任意波形发生器VHDL设计QUARTUS工程文件+文档说明: library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; use IEEE.std_logic_arith.all; entity DDS_top is port ( clk:in std_logic; --内部时钟 reset:in std_logic; --复位信号 key5 sclk:out std_logic; --TLC5615 sclk时钟脚 din:out std_logic; --TLC5615 din数据脚 cs:out std_logic; --TLC5615 cs片选 set_waveform_key_in:in std_logic; --波形设置按键 key1 set_f_key_in:in std_logic; --频率设置按键 key2 set_a_key_in:in std_logic; --幅值设置按键 key3 set_p_key_in:in std_logic; --相位设置按键 key4 sin_data:out std_logic_vector(9 downto 0) --输出的波形数据,用于测试 ); end DDS_top; architecture behave of DDS_top is signal set_waveform_line:std_logic_vector(1 downto 0); signal f_control_line:std_logic_vector(20 downto 0); signal a_control_line:std_logic_vector(3 downto 0); signal p_control_line:std_logic_vector(9 downto 0); signal dds_data_out_temp:std_logic_vector(9 downto 0); signal set_waveform_key:std_logic; signal set_f_key:std_logic; signal set_a_key:std_logic; signal set_p_key:std_logic; --DDs模块 component DDS is port( clk:in std_logic;--时钟输入 dds_data_out:out std_logic_vector(9 downto 0);--DDS数据输出 set_waveform:in std_logic_vector(1 downto 0);--设置输出的波形 set_f:in std_logic_vector(20 downto 0);--设置频率 set_a:in std_logic_vector(3 downto 0);--设置幅值 set_p:in std_logic_vector(9 downto 0)--设置频率 ); end component; -- DAC驱动模块 component TLC5615 is port( CLK:IN STD_LOGIC; SCLK:OUT STD_LOGIC; DIN:OUT STD_LOGIC; CS:OUT STD_LOGIC; DATA_IN:IN STD_LOGIC_VECTOR(9 DOWNTO 0) ); end component; -- 按键消抖模块 component key is port( clk:in std_logic; key:in std_logic; key_out:out std_logic ); end component; -- 按键编码模块 component key_coding i
压缩包里有完整的工程文件,还有配合的文档说明。这是一个倒数器的app项目,用Android studio开发的。里面能根据时分秒的设定进行倒数,倒数结束之后能够根据设定的铃声响铃,然后还有进度条的视觉模块。这是我的一份大学作业,挺靠谱的。
2021-11-18 21:42:57 50.34MB Android 倒数器 工程文件文档
1
8051单片机内核IP源码cyclone2 fpga quartu工程文件+文档说明, 可以做为你的FPGA设计学习参考。 该部分的8051内核的顶层信号引脚在8051内核的顶层便可查看到各个引脚模块的定 义。引脚的定义和普通的 8051 单片机相似,区别在于 P3 口的定义,普通的 8051 单片机的 P3 口有双重功能,在对普通的 8051 单片机编程时,特别是用 C 进行编程时所面向的是寄存 器层面的,但在硬件层面上,在定义 P3 口的两种功能时是不一致的,原因是用 C 编程时, 编译软件已经将 C 代码转变成机器代码,让机器能够辨别要用哪一个硬件模块,也就是 8051 的内核已经“解码”了机器码。普通的 8051 芯片的引脚框图和 P3 口的定义如下如下: 8051IP 核 核心本身是由定时器/计数器,ALU,串行接口,和控制单元组成。 8015 内核的原理图: Clk:时钟输入 Reset:复位输入引脚 rom_data_i:ROM 数据输入 ram_data_i :RAM 数据输入 int0_i 外部中断 0 int1_i:外部中断 1 all_t0_i:定时计数 0 all_t1_i:定时计数 1 all_rxd_i:串口接收 p0_i:IO-port0 input p1_i:IO-port1 input p2_i :IO-port2 input p3_i:IO-port3 input p0_o:IO-port0 output p1_o:IO-port1 output p2_o :IO-port2 output p3_o :IO-port3 output all_rxd_o:内部接收后直接输出,可以进入 all_rxd_i all_txd_o:串口发送 all_rxdwr_o:接收方向信号 rom_adr_o: 输出到 ROM 地址信号 ram_data_o:输出到 RAM 数据信号 ram_adr_o :输出到 RAM 地址信号 ram_wr_o :数据输出到 RAM 的使能信号 ram_en_o:RAM 的时钟使能信号 datax_i:从 RAM 的数据输入到单片机的信号 datax_o:从单片机输出数据到 RAM 的信号 adrx_o:RAM 的地址信号 wrx_o:RAM 的写使能信号
红外接收模块FPGA实验Verilog逻辑源码Quartus工程文件+文档说明资料,FPGA为CYCLONE4系列中的EP4CE6E22C8. 完整的工程文件,可以做为你的学习设计参考。 module remote_rcv ( //input input sys_clk , //系统时钟 input sys_rst_n , //系统复位信号,低电平有效 input remote_in , //红外接收信号 //output output reg [15:0] data_buf , // for not optimize output beep , // for shut beep output reg [7:0] led //指示LED ); //reg define reg [11:0] div_cnt ; //分频计数器 reg div_clk ; reg remote_in_dly ; reg [6:0] start_cnt ; reg [6:0] start_cnt1 reg [11:0] div_cnt ; //分频计数器 reg div_clk ; reg remote_in_dly ; reg [6:0] start_cnt ; reg [6:0] start_cnt1 ; reg [5:0] start_cnt2 ; reg [5:0] user_cnt ; reg [5:0] data_cnt ; reg [14:0] data_judge_cnt ; reg [14:0] noise_cnt ; reg [4:0] curr_st ; reg [4:0] next_st ; //wire define wire remote_pos ; wire remote_neg ; //fsm define parameter IDLE = 3'b000 ; parameter CHECK_START_9MS = 3'b001 ; parameter CHECK_START_4MS = 3'b010 ; parameter CHECK_USER_CODE = 3'b011 ; parameter CHECK_DATA_CODE = 3'b100 ;
七段数码管0~9循环计数显示FPGA(EP4CE6)实验Verilog逻辑源码Quartus工程文件+文档说明资料, FPGA为CYCLONE4系列中的EP4CE6E22C8. 完整的工程文件,可以做为你的学习设计参考。 1 SEG_LED七段数码管 1.1数码管简介 数码管由七个条状和一个点状发光二极管管芯制成,称为七段数码管。数码管是一类价格便宜、使用简单,通过对其不同的管脚输入相对的电流,使其发亮。从而显示出数字使其能够表示时间、温度、日期等一切可以使用数字表示的参数的器件。 数码管在电器特别是家电领域应用十分广泛,如显示屏、空调、热水器、冰箱等等。绝大多数热水器使用的都是数码管,也有的家电使用液晶屏或荧光屏。 1.2实验任务 编写逻辑使数码管从0~9循环计数,时间间隔为1秒。 module remote_rcv ( //input input sys_clk , //系统时钟 input sys_rst_n , //系统复位信号,低电平有效 input remote_in , //红外接收信号 //output output reg [15:0] data_buf , // for not optimize output beep , // for shut beep output reg [7:0] led //指示LED ); //reg define reg [11:0] div_cnt ; //分频计数器 reg div_clk ; reg remote_in_dly ; reg [6:0] start_cnt ; reg [6:0] start_cnt1 ; reg [5:0] start_cnt2 ; reg [5:0] user_cnt ; reg [5:0] data_cnt ; reg [14:0] data_judge_cnt ; reg [14:0] noise_cnt ; reg [4:0] curr_st ; reg [4:0] next_st ; //wire define wire remote_pos ; wire remote_neg ; //fsm define parameter IDLE = 3'b000 ; parameter CHECK_START_9MS = 3'b001 ; parameter CHECK_START_4MS = 3'b010 ; parameter CHECK_USER_CODE = 3'b011 ; parameter CHECK_DATA_CODE = 3'b100 ;
VGA显示一个小方块,FPGA(EP4CE6)实验Verilog逻辑源码Quartus工程文件+文档资料,FPGA为CYCLONE4系列中的EP4CE6E22C8. 完整的工程文件,可以做为你的学习设计参考。 ********************************************************************************************************/ //上电后,VGA显示一个移动的小块,碰到边框的时候被弹开。 module VGA_Moving_Block ( input sys_clk , input sys_rst_n , output wire Hs , output wire Vs , output wire VGA_G , output wire VGA_B , output wire VGA_R ); //Reg define reg sys_clk_pixel ; reg [9:0] x_count ; reg [9:0] y_count ; reg hsync ; reg vsync ; reg [17:0] clk_cnt ; reg clkout ; reg up_down_x; reg up_down_y; //上升和下降信号 reg [9:0] x_pos ; //小方块左上角坐标 reg [9:0] y_pos ; //小方块左上角坐标 //Wire define wire valid_mov; wire valid_1 ; wire valid_2 ; wire valid_3 ; wire valid_4 ; wire valid_s ; //************************************************************************************ //** Main Program //** //************************************************************************************ //像素时钟 分频产生 25Mhz 时钟 always @ (posedge sys_clk or negedge sys_rst_n) begin if (!sys_rst_n) sys_clk_pixel <= 1'b0; else sys_clk_pixel <= ~sys_clk_pixel; end //行坐标和纵坐标 always @ (posedge sys_clk_pixel) begin if (!sys_rst_n) begin x_count <= 0; y_count <= 0; end else if (x_count == 10'd799) begin x_count <= 10'd0; if (y_count == 10'd519) y_count <= 10'd0; else y_count <= y_count+1'b1; end else x_count <= x_count+1'b1; end //同步信号 always @ (posedge sys_clk_pixel) begin if (x_count <= 10'd95) hsync <= 1'b0; else hsync <= 1'b1; end always @ (posedge sys_clk_pixel) begin if (y_count <= 1'd1) vsync <= 1'b0; else vsync <= 1'b1; end assign Hs = hsync; assign
华邦w25x16 SPIFlash Read ID FPGA(EP4CE6)实验Verilog逻辑源码Quartus工程文件+文档说明资料,FPGA为CYCLONE4系列中的EP4CE6E22C8. 完整的工程文件,可以做为你的学习设计参考。 **------------------------------------------------------------------------------------------------------ ** Modified by: ** Modified date: ** Version: ** Descriptions: Read the Device ID of the W25X16 Flash ** **------------------------------------------------------------------------------------------------------ ********************************************************************************************************/ module W25X16 ( //input signal input sys_clk , input sys_rst_n , input W25X16_DO , //output signal output reg W25X16_CS , output reg W25X16_CLK , output reg W25X16_DIO , output reg [7:0] LED ); //reg define reg [5:0] counter ; reg [5:0] clk_cnt ; reg [15:0] shift_buf ; //wire define wire div_clk1 ; wire div_clk2 ; /******************************************************************************************************* ** Main Program ** ********************************************************************************************************/ //creat a clock about 1MHz always @(posedge sys_clk or negedge sys_rst_n) begin if ( sys_rst_n ==1'b0 ) clk_cnt <= 6'b0; else clk_cnt <= clk_cnt + 1'b1; end assign div_clk1 = clk_cnt[5]; assign div_clk2 = ~clk_cnt[5]; //get a counter that width is 6 bits always @(posedge div_clk1 or negedge sys_rst_n) begin if ( sys_rst_n ==1'b0 ) counter <= 6'b0; else counter = 8 && counter <= 58 ) W25X16_CS <= 1'b0;
RS485接口收发测试FPGA读写实验Verilog逻辑源码Quartus工程文件+文档说明资料,FPGA为CYCLONE4系列中的EP4CE6E22C8. 完整的工程文件,可以做为你的学习设计参考。 实验任务和现象 任务:使用两块开发板,一块用作发送,一块用作接收。通过4个按键改变数据,并用LED将发送和接收的数据显示出来。 现象:两块开发板LED显示的效果一样,并且按下不同的按键,可以改变LED的显示,同时接收的板子接到数据后改变LED显示。 •5、设计思路 我们依旧采用串口的设计思路,设计程序,但因为 MAX485是半双工器件,所以需要接收和发送状态切换,有两个时能端,我们的开发板,将两个接到一起用一个引脚控制。 我们以串口发送为例: 以波特率9600为例子说明,波特率9600接收一个bit的时间为1s/9600=104us,即每隔104us发送一个数据。 module RS485_Revc ( input sys_clk , input sys_rst_n , input RO , output wire RE_DE , output reg [7:0] LED ); /***************reg define****************/ reg [7:0] buff ; reg [7:0] data_out ; reg [15:0] counter ; reg rxd_din1 ; //uart rxd input ; reg rxd_din2 ; //uart rxd input ; reg rxd_negedge_sig_flag ; /***************wire define***************/ wire rxd_negedge_sig ; /******************************************************************************************************* ** Main Program ** ********************************************************************************************************/ assign RE_DE = 1'b0; always @ (posedge sys_clk or negedge sys_rst_n) begin if ( sys_rst_n ==1'b0 ) begin rxd_din1 <= 1'b0; rxd_din2 <= 1'b0; end else begin rxd_din1 <= RO ; rxd_din2 <= rxd_din1; end end assign rxd_negedge_sig = (~rxd_din2) &(rxd_din1); always @ (posedge sys_clk or negedge sys_rst_n) begin if ( sys_rst_n ==1'b0) rxd_negedge_sig_flag <= 1'b0; else rxd_negedge_sig_flag <= rxd_negedge_sig; end always @ (posedge s
28BYJ-48步进电机(EP4CE6)FPGA控制Verilog逻辑源码Quartus工程文件+文档资料, 28BYJ-48步进电机: 步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。您可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 2. 步进电机规格: 步进电机28BYJ48型四相八拍电机,电压为DC5V—DC12V。 3. 实现原理 当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行 module STEP_MOTO_V1_0 ( //input input sys_clk , input sys_rst_n , input [2:0] key , output reg mot_out_a , output reg mot_out_b , output reg mot_out_c , output reg mot_out_d ); //reg define //reg [8-1:0] counter ; //reg [8-1:0] count ; reg [25:0] clk_cnt ; reg [ 2:0] step_cnt ; //wire wire step_en ; //wire define //parameter define /******************************************************************************************************* ** Main Program ** ********************************************************************************************************/ // gen a time counter , 5500000 * 20ns always @(posedge sys_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0) clk_cnt <= 26'b0; else if (key[1]==1'd0 && key[2]==1'd1 && clk_cnt == 26'd250000 ) clk_cnt <= 26'b0; else if ( key[1]==1'd1 && key[2]==1'd0 && clk_cnt == 26'd600000 ) clk_cnt <= 26'b0; else if (clk_cnt == 26'd400000 ) clk_cnt <= 26'b0; else clk_cnt <= clk_cnt + 26'b1; end // step enable is active 500000 * 20ns assign step_en = ( clk_cnt == 26'b0 ) ? 1:0 ; always @(posedge step_en or negedge sys_rst_n) begin if