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
高速双路ADC AD9280 FPGA读写实验 Verilog设计源码Quartus工程文件,ADC芯片选用AD9280 ,FPGA型号Cyclone4E系列中的EP4CE10F17C8,Quartus版本18.0。 module hs_dual_ad( input sys_clk , //AD0 input [9:0] ad0_data , //AD0数据 input ad0_otr , //输入电压超过量程标志 output ad0_clk , //AD0(AD9280)采样时钟 output ad0_oe , //AD1 input [9:0] ad1_data , //AD0数据 input ad1_otr , //输入电压超过量程标志 output ad1_clk , //AD1(AD9280)采样时钟 output ad1_oe ); //***************************************************** //** main code //***************************************************** // ad0_oe=0,正常模式;ad0_oe=1,高阻 wire clk_50m; assign ad0_oe = 1'b0; assign ad1_oe = 1'b0; assign ad0_clk = ~clk_50m; assign ad1_clk = ~clk_50m; pll u_pll( .inclk0 (sys_clk), .c0 (clk_50m) ); endmodule
1
基于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; //用于扫描时选择显示位码 //**************************************************************************************************** // 模块名称:秒时钟分频模块 // 功能描述: //*****************************************************************
基于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