FPGA设计读取SD卡中的图片并通过VGA屏显示输出的Verilog设计Quartus工程源码文件,FPGA型号Cyclone4E系列中的EP4CE10F17C8,Quartus版本18.0。 module top_sd_photo_vga( input sys_clk , //系统时钟 input sys_rst_n , //系统复位,低电平有效 //SD卡接口 input sd_miso , //SD卡SPI串行输入数据信号 output sd_clk , //SD卡SPI时钟信号 output sd_cs , //SD卡SPI片选信号 output sd_mosi , //SD卡SPI串行输出数据信号 //SDRAM接口 output sdram_clk , //SDRAM 时钟 output sdram_cke , //SDRAM 时钟有效 output sdram_cs_n , //SDRAM 片选 output sdram_ras_n , //SDRAM 行有效 output sdram_cas_n , //SDRAM 列有效 output sdram_we_n , //SDRAM 写有效 output [1:0] sdram_ba , //SDRAM Bank地址 output [1:0] sdram_dqm , //SDRAM 数据掩码 output [12:0] sdram_addr , //SDRAM 地址 inout [15:0] sdram_data , //SDRAM 数据 //VGA接口 output vga_hs , //行同步信号 output vga_vs , //场同步信号 output [15:0] vga_rgb //红绿蓝三原色输出 ); //parameter define parameter PHOTO_H_PIXEL = 24'd640 ; //设置SDRAM缓存大小 parameter PHOTO_V_PIXEL = 24'd480 ; //设置SDRAM缓存大小 //wire define wire clk_100m ; //100mhz时钟,SDRAM操作时钟 wire clk_100m_shift ; //100mhz时钟,SDRAM相位偏移时钟 wire clk_50m ; wire clk_50m_180deg ; wire clk_25m ; wire rst_n ; wire locked ; wire sys_init_done ; //系统初始化完成 wire sd_rd_start_en ; //开始写SD卡数据信号 wire [31:0] sd_rd_sec_addr ; //读数据扇区地址 wire sd_rd_busy ; //读忙信号 wire sd_rd_v
cyclone4 FPGA EP4CE10F17C8N设计数字时钟quartus工程源码+WORD说明文档, 本设计采用FPGA,实现核心控制。利用独立按键当作输入,利用六位一体的共阳极数码管作为显示设备。具体要求如下: 1. 数字钟要求显示时间、日期、闹钟时间。本设计采用verilog,芯片为50MHZ的EP4CE10F17C8N,实现核心控制。 2. 显示时利用小数点将所显示内容分开。(例:19.12.55) 3. 外部输入的按键有,切换按键,调整按键,加按键,减按键。具体功能如下: 数字钟要求显示时间、日期、闹钟设定时间。利用切换按键进行年月日、时间、闹钟定时操作,三种状态均可用增减两个按键进行调整,对于选中的数码管调整位,通过闪烁表示已经选中,例如:首先切换至日期,选中表示“年”的数码管,那么选中的位进行0.5秒的闪烁表示选中,其次可通过增减按键进行数字的增减。另外在按键消抖后,每次按键按下,蜂鸣器响表示已经按下;设定的闹钟到时候,按下任何按键均停止蜂鸣器,若没有按键按下,蜂鸣器长响至1min时长后,自动停止。 module digital_clock (clk,rst_n,key_add,key_sub,key_adjust,key_switch,beep, seven_tube_sel,seven_tube_seg); input clk; input rst_n; input key_add; input key_sub; input key_switch; input key_adjust; output beep; output [7:0] seven_tube_seg; output [2:0] seven_tube_sel; wire flag_add; wire flag_sub; wire flag_adjust; wire flag_switch; wire [23:0] show_data; wire flag_alarm; wire [5:0] dp_en; key_processor key_processor_inst( .clk (clk), .rst_n (rst_n), .key_add (key_add), .key_sub (key_sub), .key_adjust (key_adjust), .key_switch (key_switch), .flag_add (flag_add), .flag_sub (flag_sub), .flag_adjust (flag_adjust), .flag_switch (flag_switch) ); digital_clock_ctrl digital_clock_ctrl_inst( .clk (clk), .rst_n (rst_n), .flag_add (flag_add), .flag_sub (flag_sub), .flag_adjust (flag_adjust), .flag_switch (flag_switch), .show_data (show_data), .flag_alarm (flag_alarm) ); seven_tube_drive seven_tube_drive_inst( .clk (clk), .rst_n (rst_n), .show_data (show_data), .dp_en (6'b010100), .seven_tube_seg (seven_tube_seg), .seven_tube_sel (seven_tube_sel) ); beep_drive beep_drive_inst( .clk (clk), .rst_n (rst_n), .flag_alarm (flag_alarm), .flag_add (flag_add), .flag_sub (flag_sub), .flag_adjust (flag_adjust), .flag_switch (flag_switch), .beep (beep) ); endmodule
基于VHDL设计用PGA实现一款简易电子密码锁QUARTUS工程源码+文档说明 library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; use IEEE.std_logic_arith.all; entity time_counter is port( clk:in std_logic; --50M时钟输入 reset_n:in std_logic; --复位信号输入 password1_in:in std_logic_vector(3 downto 0); -- password2_in:in std_logic_vector(3 downto 0); -- password3_in:in std_logic_vector(3 downto 0); -- password4_in:in std_logic_vector(3 downto 0); -- ok_signal_counter_in:in std_logic_vector(2 downto 0); seg_duan:out std_logic_vector(7 downto 0); --数码管段信号输出 seg_wei:out std_logic_vector(7 downto 0) --数码管位信号输出 ); end time_counter; architecture time_counter_behave of time_counter is signal clk_1hz: std_logic; signal count: std_logic_vector(24 downto 0); signal clk_scan: std_logic; signal seg_select: std_logic_vector(2 downto 0); signal scan_count: std_logic_vector(13 downto 0); begin -- //**************************************************************************************************** -- // 模块名称:50M时钟分频至1HZ模块 -- // 功能描述: -- //**************************************************************************************************** process(clk,reset_n) begin if(reset_n = '0')then clk_1hz <= '0'; count <= "0000000000000000000000000"; elsif(clk'event and clk = '1')then--上升沿触发 if(count = "1011111010111100001000000")then-- count <= "0000000000000000000000000"; clk_1hz <= not clk_1hz; else count <= count + '1'; end if; end if; end process; -- //**************************************************************************************************** -- // 模块名称:数码管扫描时钟产生模块 -- // 功能描述: -- //************************************************************************************
基于CYCLOEN FPGA设计的fir_dac数字滤波器quartus工程源码+文档说明 // ******************************************************************************* // 顶层文件模块 // *******************************************************************************/ module fir_dac( clk, reset_n, key_in, sclk, //TLC5615 sclk时钟脚 din, //TLC5615 din数据脚 cs //TLC5615 cs片选 ); input clk; input reset_n; input key_in; output sclk; output din; output cs; wire [9:0]data_line; wire [9:0]fir_data; wire [9:0]data_in; wire [9:0]fir_data_20; fir fir_top( .clk(clk), .reset_n(reset_n), .data_in(data_in), //谐波信号 .fir_data(fir_data), //8滤波之后的信号 .fir_data_20(fir_data_20)//21滤波之后的信号 ); TLC5615 tlc5615_top( .clk(clk),//内部时钟 .sclk(sclk),//TLC5615 sclk时钟脚 .din(din),//TLC5615 din数据脚 .cs(cs),//TLC5615 cs片选 .din_in(data_line));//十位数据输入 key key_top( .key_in(key_in), .data_out(data_line), .data1(fir_data), .data2(fir_data_20) ); endmodule
基于verilog的FPGA数字秒表设计实验QUARTUS工程源码+文档说明资料 module time_clock( clk, reset_n, hour_select_key, second_counter_key, second_countdown_key, pause_key, duan, wei ); input clk; //clk:50MHZ时钟输入; input reset_n; //复位信号输入,低电平有效; input hour_select_key; //12、24小时可以调节按键,当为‘1’时为24,‘0’时为12小时; input second_counter_key; //当该按键为‘1’时为秒表计时功能,‘0’时为正常功能; input second_countdown_key; //当该按键为‘1’时为倒计时功能,‘0’时为正常功能; input pause_key; //暂停功能按键,进行秒表计时和倒计时时可以通过该按键进行暂停,‘1’暂停,‘0’继续 output [7:0] duan; //duan:数码管段码; output [7:0] wei; //wei:数码管位码; reg [7:0] duan; //duan:数码管段码; reg [7:0] wei; //wei:数码管位码; reg [24:0] count; //1HZ时钟计数器 reg [13:0] count2; //扫描时钟计数器 reg clk_1hz; //1HZ时钟信号 reg [3:0] miao_ge; //秒个位数BCD码 reg [2:0] miao_shi; //秒十位BCD二进制码 reg [3:0] fen_ge; //分钟个位数 reg [2:0] fen_shi; //分钟十位数 reg [1:0] shi_ge; //时钟个位数 reg [1:0] shi_shi; //时钟十位数 reg [1:0] shi_select_ge; //时钟选择个位数,用于调节时制 reg [1:0] shi_select_shi; //时钟选择十位数,用于调节时制 reg clk_scan; //数码管扫描时钟 reg [2:0] select; //用于扫描时选择显示位码 //**************************************************************************************************** // 模块名称:秒时钟分频模块 // 功能描述: //*******************************************************************
vhdl设计FPGA读写DS18B20温度传感器quartus工程源码+文档说明 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity ds18B20 is port( clk : in std_logic;---50MHz rst_n: in std_logic; --复位信号输入 one_wire : inout std_logic; --DS18B20数据线 ---------------- dataout : out std_logic_vector(7 downto 0); --数码管数据输出 en : out std_logic_vector(3 downto 0)); --数码管位选信号 end ds18B20; architecture Behavioral of ds18B20 is signal dataout_buf:std_logic_vector(3 downto 0); signal count:std_logic_vector(17 downto 0); --分频计数器 signal cnt_scan:std_logic_vector(17 downto 0); --数码管的扫描显示计数器 signal clk_1us:std_logic;-- 1MHz 时钟 signal cnt_1us:integer range 0 to 750002;-- 1us延时计数子 signal cnt_1us_clear:std_logic;-- 请1us延时计数子 TYPE STATE_TYPE is (S00,S0,S1,S2,S3,S4,S5,S6,S7, WRITE0,WRITE1,WRITE00,WRITE01,READ0,READ1,READ2,READ3); --状态机 signal state: STATE_TYPE; --初始状态设置为复位状态 signal one_wire_buf:std_logic;-- One-Wire总线 缓存寄存器 signal temperature_buf:std_logic_vector(15 downto 0);-- 采集到的温度值缓存器(未处理) signal DS18B20_DATA_buf:std_logic_vector(15 downto 0);-- 采集到的温度值缓存器(未处理) signal DS18B20_DATA_buf_temp:std_logic_vector(15 downto 0);-- 采集到的温度值缓存器(未处理) signal step:integer range 0 to 50;--子状态寄存器 0~50 signal bit_valid:integer range 0 to 15;--有效位 signal one_wire_in:std_logic; signal t_buf:std_logic_vector(15 downto 0); signal t_buf_temp:std_logic_vector(15 downto 0); signal cnt:integer range 0 to 50;-- 计数子 -- //++++++++++++++++++++++++++++++++++++++ -- // 分频器50MHz->1MHz 开始 -- //++++++++++++++++++++++++++++++++++++++ begin -- process (clk,rst_n) -- begin -- if rising_edge(clk) then -- if(rst_n='0') then -- cnt <= 0; -- else -- if(cnt = 49)then -- cnt <= 0; -- else -- cnt <= cnt + 1; -- end if; -- end if; -- end if; -- end Process;
飓风cyclone FPGA开发板verilog逻辑例程Quartus工程源码文件(16例): low_cost_lcd S1_38yima S2_div S3_WAVE S4_LCD_V S4_LCD_VHDL S5_UART S6_VGA S6_VGA_change S7_PS2_LCD S7_PS2_RS232 S8_test T1_SW_PB T2_USB_IN T3_USB_OUT T4_LED_RUN 1。源文件保存在src目录,QII的工程文件保存在Proj目录; 2。程序可以在VGA显示器上以800x600分辨率显示方波示例和字母示例 3。具体设计参考代码。 `timescale 1ns/1ns module UART_tb; wire tbre; wire tsre; wire sdo ; wire rxd; reg [7:0] din; reg rst ; reg clk16x ; reg wrn; reg rdn; wire [7:0] dout; wire data_ready; wire framing_error ; wire parity_error ; uart PC (.dout(dout), .data_ready(data_ready), .framing_error(framing_error), .parity_error(parity_error), .rxd(rxd), .clk16x(clk16x), .rst(rst), .rdn(rdn), .din(din), .tbre(tbre), .tsre(tsre), .wrn(wrn), .sdo(sdo) ) ; uart_if FPGA (.clk(clk16x), .rst_n(~rst), .txd(rxd), .rxd(sdo) ); // Enter fixture code here initial begin din = 0; rst = 0; clk16x = 0; wrn = 1; rdn = 1; end always #10 clk16x = ~clk16x ; initial begin #3 rst = 1'b1 ; din ="R";// 8'b11110000 ; #5000 rst = 1'b0 ; #30 wrn = 1'b0 ; #150 wrn = 1'b1 ; //#4000 din ="r"; // 8'b10101010 ; //#870 wrn = 1'b0 ; //#200 wrn = 1'b1 ; #104000 din ="r"; // 8'b10101010 ; #870 wrn = 1'b0 ; #200 wrn = 1'b1 ; #104000 $stop; end always @(posedge data_ready) begin #100 rdn=0; #500 rdn=1; end endmodule // Uart_tb
基于CYCLONE fpga设计的会议发言限时器quartus工程源码+说明文档资料 module time_clock( clk, reset_n, hour_select_key, second_counter_key, second_countdown_key, pause_key, duan, wei ); input clk; //clk:50MHZ时钟输入; input reset_n; //复位信号输入,低电平有效; input hour_select_key; //12、24小时可以调节按键,当为‘1’时为24,‘0’时为12小时; input second_counter_key; //当该按键为‘1’时为秒表计时功能,‘0’时为正常功能; input second_countdown_key; //当该按键为‘1’时为倒计时功能,‘0’时为正常功能; input pause_key; //暂停功能按键,进行秒表计时和倒计时时可以通过该按键进行暂停,‘1’暂停,‘0’继续 output [7:0] duan; //duan:数码管段码; output [7:0] wei; //wei:数码管位码; reg [7:0] duan; //duan:数码管段码; reg [7:0] wei; //wei:数码管位码; reg [24:0] count; //1HZ时钟计数器 reg [13:0] count2; //扫描时钟计数器 reg clk_1hz; //1HZ时钟信号 reg [3:0] miao_ge; //秒个位数BCD码 reg [2:0] miao_shi; //秒十位BCD二进制码 reg [3:0] fen_ge; //分钟个位数 reg [2:0] fen_shi; //分钟十位数 reg [1:0] shi_ge; //时钟个位数 reg [1:0] shi_shi; //时钟十位数 reg [1:0] shi_select_ge; //时钟选择个位数,用于调节时制 reg [1:0] shi_select_shi; //时钟选择十位数,用于调节时制 reg clk_scan; //数码管扫描时钟 reg [2:0] select; //用于扫描时选择显示位码 //**************************************************************************************************** // 模块名称:秒时钟分频模块 // 功能描述: //*****************************************************************
FPGA读写 AD9708+ AD9280 ADDA实验Verilog逻辑源码Quartus工程源码文件+文档说明,FPGA型号Cyclone4E系列中的EP4CE6F17C8,Quartus版本17.1。 //2017/7/20 1.0 Original //*******************************************************************************/ module top( input clk, input rst_n, //adc input[7:0] ad9280_data, output ad9280_clk, //dac output[7:0] ad9708_data, output ad9708_clk, //vga output output vga_out_hs, //vga horizontal synchronization output vga_out_vs, //vga vertical synchronization output[4:0] vga_out_r, //vga red output[5:0] vga_out_g, //vga green output[4:0] vga_out_b //vga blue ); wire video_clk; wire video_hs; wire video_vs; wire video_de; wire[7:0] video_r; wire[7:0] video_g; wire[7:0] video_b; wire grid_hs; wire grid_vs; wire grid_de; wire[7:0] grid_r; wire[7:0] grid_g; wire[7:0] grid_b; wire wave0_hs; wire wave0_vs; wire wave0_de; wire[7:0] wave0_r; wire[7:0] wave0_g; wire[7:0] wave0_b; wire adc_clk; wire adc0_buf_wr; wire[10:0] adc0_buf_addr; wire[7:0] adc0_buf_data; wire dac_clk; wire[7:0] dac_data; reg[8:0] rom_addr; assign vga_out_hs = wave0_hs; assign vga_out_vs = wave0_vs; assign vga_out_r = wave
FPGA设计读取SD卡中的图片并通过TFT-LCD屏显示输出的Verilog设计Quartus工程源码文件,FPGA型号Cyclone4E系列中的EP4CE10F17C8,Quartus版本18.0。 module top_sd_photo_lcd( input sys_clk , //系统时钟 input sys_rst_n , //系统复位,低电平有效 //SD卡接口 input sd_miso , //SD卡SPI串行输入数据信号 output sd_clk , //SD卡SPI时钟信号 output sd_cs , //SD卡SPI片选信号 output sd_mosi , //SD卡SPI串行输出数据信号 //SDRAM接口 output sdram_clk , //SDRAM 时钟 output sdram_cke , //SDRAM 时钟有效 output sdram_cs_n , //SDRAM 片选 output sdram_ras_n , //SDRAM 行有效 output sdram_cas_n , //SDRAM 列有效 output sdram_we_n , //SDRAM 写有效 output [1:0] sdram_ba , //SDRAM Bank地址 output [1:0] sdram_dqm , //SDRAM 数据掩码 output [12:0] sdram_addr , //SDRAM 地址 inout [15:0] sdram_data , //SDRAM 数据 //lcd接口 output lcd_hs , //LCD 行同步信号 output lcd_vs , //LCD 场同步信号 output lcd_de , //LCD 数据输入使能 output [15:0] lcd_rgb , //LCD RGB565颜色数据 output lcd_bl , //LCD 背光控制信号 output lcd_rst , //LCD 复位信号 output lcd_pclk //LCD 采样时钟 ); //parameter define parameter PHOTO_H_PIXEL = 24'd800 ; //设置SDRAM缓存大小 parameter PHOTO_V_PIXEL = 24'd480 ; //设置SDRAM缓存大小 //wire define wire clk_100m ; //100mhz时钟,SDRAM操作时钟 wire clk_100m_shift ; //100mhz时钟,SDRAM相位偏移时钟 wire clk_50m ; wire clk_50m_180deg ; wire clk_33_3m ; wire rst_n ; wire locked ; wire sys_init_done ; //系统初始化