FPGA读取OV5640摄像头数据并通过VGA或LCD屏显示输出的Verilog逻辑源码Quartus工程文件+文档说明,FPGA型号Cyclone4E系列中的EP4CE6F17C8,Quartus版本17.1。 module top( input clk, input rst_n, output cmos_scl, //cmos i2c clock inout cmos_sda, //cmos i2c data input cmos_vsync, //cmos vsync input cmos_href, //cmos hsync refrence,data valid input cmos_pclk, //cmos pxiel clock output cmos_xclk, //cmos externl clock input [7:0] cmos_db, //cmos data output cmos_rst_n, //cmos reset output cmos_pwdn, //cmos power down 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 output sdram_clk, //sdram clock output sdram_cke, //sdram clock enable output sdram_cs_n, //sdram chip select output sdram_we_n, //sdram write enable output sdram_cas_n, //sdram column address strobe output sdram_ras_n, //sdram row address strobe output[1:0] sdram_dqm, //sdram data enable output[1:0] sdram_ba, //sdram bank address output[12:0] sdram_addr, //sdram address inout[15:0] sdram_dq //sdram data ); parameter MEM_DATA_BITS = 16; //external memory user interface data width parameter ADDR_BITS = 24; //external memory user interface address width p
FPGA读取AD芯片AD9238数据并波形显示例程Verilog逻辑源码Quartus工程文件+文档说明,FPGA型号Cyclone4E系列中的EP4CE6F17C8,Quartus版本17.1。 module top( input clk, input rst_n, output ad9238_clk_ch0, output ad9238_clk_ch1, input[11:0] ad9238_data_ch0, input[11:0] ad9238_data_ch1, //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 wave1_hs; wire wave1_vs; wire wave1_de; wire[7:0] wave1_r; wire[7:0] wave1_g; wire[7:0] wave1_b; wire adc_clk; wire adc0_buf_wr; wire[10:0] adc0_buf_addr; wire[7:0] adc0_buf_data; wire adc1_buf_wr; wir
FPGA读取模数转换芯片AD7606数据并波形显示例程Verilog逻辑源码Quartus工程文件+文档说明,FPGA型号Cyclone4E系列中的EP4CE6F17C8,Quartus版本17.1。 module top( input clk, input rst_n, input[15:0] ad7606_data, //ad7606 data input ad7606_busy, //ad7606 busy input ad7606_first_data, //ad7606 first data output[2:0] ad7606_os, //ad7606 output ad7606_cs, //ad7606 AD cs output ad7606_rd, //ad7606 AD data read output ad7606_reset, //ad7606 AD reset output ad7606_convstab, //ad7606 AD convert start //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 wave1_hs; wire wave1_vs; wire
FPGA 读写rtc_ds1302实时时钟的Verilog逻辑源码Quartus工程文件+文档说明,RTC芯片型号ds1302,FPGA型号Cyclone4E系列中的EP4CE6F17C8,Quartus版本17.1。 module top( //sys input clk, input rst_n, output rtc_sclk, output rtc_ce, inout rtc_data, output [5:0] seg_sel, output [7:0] seg_data ); wire[7:0] read_second; wire[7:0] read_minute; wire[7:0] read_hour; wire[7:0] read_date; wire[7:0] read_month; wire[7:0] read_week; wire[7:0] read_year; seg_bcd seg_bcd_m0( .clk (clk), .rst_n (rst_n), .seg_sel (seg_sel), .seg_data (seg_data), .seg_bcd ({read_hour,read_minute,read_second}) ); ds1302_test ds1302_test_m0( .rst (~rst_n), .clk (clk), .ds1302_ce (rtc_ce), .ds1302_sclk (rtc_sclk), .ds1302_io (rtc_data), .read_second (read_second), .read_minute (read_minute), .read_hour (read_hour), .read_date (read_date), .read_month (read_month), .read_week (read_week), .read_year (read_year) ); endmodule
基于FPGA的数码管扫描实验Verilog逻辑源码Quartus工程文件+文档说明,6个共阳数码管,FPGA型号Cyclone4E系列中的EP4CE6F17C8,Quartus版本17.1。 介绍共阳极数码管扫描的原理,使用 6 位模 10 计数器组成 6 位十进制计数器,将计数器的 值送到数码管扫描模块显示。 module seg_test( input clk, input rst_n, output[5:0]seg_sel, output[7:0]seg_data ); reg[31:0] timer_cnt; reg en_1hz; //1 second , 1 counter enable always@(posedge clk or negedge rst_n) begin if(rst_n == 1'b0) begin en_1hz <= 1'b0; timer_cnt = 32'd49_999_999) begin en_1hz <= 1'b1; timer_cnt <= 32'd0; end else begin en_1hz <= 1'b0; timer_cnt <= timer_cnt + 32'd1; end end wire[3:0] count0; wire t0; count_m10 count10_m0( .clk (clk), .rst_n (rst_n), .en (en_1hz), .clr (1'b0), .data (count0), .t (t0) ); wire[3:0] count1; wire t1; count_m10 count10_m1( .clk (clk), .rst_n (rst_n), .en (t0), .clr (1'b0), .data (count1), .t (t1) ); wire[3:0] count2; wire t2; count_m10 count10_m2( .clk (clk), .rst_n (rst_n), .en (t1), .clr (1'b0), .data (count2), .t (t2) ); wire[3:0] count3; wire t3; count_m10 count10_m3( .clk (clk), .rst_n (rst_n), .en (t2), .clr (1'b0), .data (count3), .t (t3) ); wire[3:0] count4; wire t4; count_m10 count10_m4( .clk (clk), .rst_n (rst_n), .en (t3), .clr (1'b0), .data (count4), .t (t4) ); wire[3:0] count5; wire t5; count_m10 count10_m5( .clk (clk), .rst_n (rst_n), .en (t4), .clr (1'b0), .data (count5), .t (t5) ); wire[6:0] seg_data_0; seg_decoder seg_decoder_m0( .bin_data (count5), .seg_data (seg_data_0) ); wire[6:0] seg_data_1; seg_decoder seg_decoder_m1( .bin_data (count4), .seg_data (seg_data_1) ); wire[6:0] se
8段数码管静态显示Verilog设计逻辑Quartus工程源码文件,FPGA型号Cyclone4E系列中的EP4CE10F17C8,Quartus版本18.0。 module seg_led_static_top ( input sys_clk , // 系统时钟 input sys_rst_n, // 系统复位信号(低有效) output [5:0] sel , // 数码管位选 output [7:0] seg_led // 数码管段选 ); //parameter define parameter TIME_SHOW = 25'd25000_000; // 数码管变化的时间间隔0.5s //wire define wire add_flag; // 数码管变化的通知信号 //***************************************************** //** main code //***************************************************** //每隔0.5s产生一个时钟周期的脉冲信号 time_count #(.MAX_NUM(TIME_SHOW) ) u_time_count( .clk (sys_clk ), .rst_n (sys_rst_n), .flag (add_flag ) ); //每当脉冲信号到达时,使数码管显示的数值加1 seg_led_static u_seg_led_static ( .clk (sys_clk ), .rst_n (sys_rst_n), .add_flag (add_flag ), .sel (sel ), .seg_led (seg_led ) ); endmodule
高速双路DAC AD9708 FPGA读写实验 Verilog设计源码Quartus工程文件,DAC芯片选用AD9708,FPGA型号Cyclone4E系列中的EP4CE10F17C8,Quartus版本18.0。 module hs_dual_da( input sys_clk , //系统时钟 input sys_rst_n , //系统复位,低电平有效 //DA芯片接口 output da_clk , //DA(AD9708)驱动时钟,最大支持125Mhz时钟 output [9:0] da_data , //输出给DA的数据 //DA芯片接口 output da_clk1 , //DA(AD9708)驱动时钟,最大支持125Mhz时钟 output [9:0] da_data1 //输出给DA的数据 ); //wire define wire [9:0] rd_addr; //ROM读地址 wire [9:0] rd_data; //ROM读出的数据 //***************************************************** //** main code //***************************************************** //assign ad_clk2 = ad_clk ; assign da_clk1 = da_clk; assign da_data1 = da_data; pll u_pll( .inclk0 (sys_clk), .c0 (clk)); //DA数据发送 da_wave_send u_da_wave_send( .clk (clk), .rst_n (sys_rst_n), .rd_data (rd_data), .rd_addr (rd_addr), .da_clk (da_clk), .da_data (da_data) ); //ROM存储波形 rom_1024x10b u_rom_1024x10b( .address (rd_addr), .clock (clk), .q (rd_data) ); endmodule
FPGA读写 SDRAM Verilog设计源码Quartus工程文件,SDRAM型号FW9825G6KH-6,SDRAM读写测试: 向SDRAM中写入数据,然后将数据读出,并判断读出的数据是否正确,FPGA型号Cyclone4E系列中的EP4CE10F17C8,Quartus版本18.0。 module sdram_rw_test( input clk, //FPGA外部时钟,50M input rst_n, //按键复位,低电平有效 //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 [12:0] sdram_addr, //SDRAM 行/列地址 inout [15:0] sdram_data, //SDRAM 数据 output [ 1:0] sdram_dqm, //SDRAM 数据掩码 //LED output led //状态指示灯 ); //wire define wire clk_50m; //SDRAM 读写测试时钟 wire clk_100m; //SDRAM 控制器时钟 wire clk_100m_shift; //相位偏移时钟 wire wr_en; //SDRAM 写端口:写使能 wire [15:0] wr_data; //SDRAM 写端口:写入的数据 wire rd_en; //SDRAM 读端口:读使能 wire [15:0] rd_data; //SDRAM 读端口:读出的数据 wire sdram_init_done; //SDRAM 初始化完成信号 wire locked; //PLL输出有效标志 wire sys_rst_n; //系统复位信号 wire error_flag; //读写测试错误标志 //***************************************************** //** main code //***************************************************** //待PLL输出稳定之后,停止系统复位 assign sys_rst_n = rst_n & locked; //例化PLL, 产生各模块所需要的时钟 pll_clk u_pll_clk( .inclk0 (clk), .areset (~rst_n), .c0 (clk_50m), .c1 (clk_100m), .c2
AD(AD9280)和DA(AD9708) FPGA读写Verilog设计源码Quartus工程文件,AD芯片选用AD9280,DA芯片选用AD9708,,FPGA型号Cyclone4E系列中的EP4CE10F17C8,Quartus版本18.0。 module hs_ad_da( input sys_clk , //系统时钟 input sys_rst_n , //系统复位,低电平有效 //DA芯片接口 output da_clk , //DA(AD9708)驱动时钟,最大支持125Mhz时钟 output [7:0] da_data , //输出给DA的数据 //AD芯片接口 input [7:0] ad_data , //AD输入数据 //模拟输入电压超出量程标志(本次试验未用到) input ad_otr , //0:在量程范围 1:超出量程 output ad_clk //AD(AD9280)驱动时钟,最大支持32Mhz时钟 ); //wire define wire [7:0] rd_addr; //ROM读地址 wire [7:0] rd_data; //ROM读出的数据 //***************************************************** //** main code //***************************************************** //DA数据发送 da_wave_send u_da_wave_send( .clk (sys_clk), .rst_n (sys_rst_n), .rd_data (rd_data), .rd_addr (rd_addr), .da_clk (da_clk), .da_data (da_data) ); //ROM存储波形 rom_256x8b u_rom_256x8b( .address (rd_addr), .clock (sys_clk), .q (rd_data) ); //AD数据接收 ad_wave_rec u_ad_wave_rec( .clk (sys_clk), .rst_n (sys_rst_n), .ad_data (ad_data), .ad_otr (ad_otr), .ad_clk (ad_clk) ); endmodule
温度传感器ds18b20读写Verilog驱动源码Quartus工程文件,FPGA型号Cyclone4E系列中的EP4CE10F17C8,Quartus版本18.0。 module temp_disp( input sys_clk , //输入的系统时钟 input sys_rst_n , //输入的复位信号 inout dq , //ds18b20温度传感器单总线 output [5:0] sel , //输出数码管位选信号 output [7:0] seg_led //输出数码管段选信号 ); //parameter define parameter POINT = 6'b000100; // 数码管小数点的位置 //wire define wire [19:0] temp_data; // 温度数值 wire sign; // 符号位 //***************************************************** //** main code //***************************************************** //例化动态数码管驱动模块 seg_led u_seg_led( //module clock .clk (sys_clk ), // 时钟信号 .rst_n (sys_rst_n), // 复位信号 //seg_led interface .seg_sel (sel ), // 位选 .seg_led (seg_led ), // 段选 //user interface .data (temp_data), // 显示的数值 .point (POINT ), // 小数点具体显示的位置,从高到低,高电平有效 .en (1'b1 ), // 数码管使能信号 .sign (sign ) // 符号位(高电平显示“-”号) ); //例化DS18B20驱动模块 ds18b20_dri u1_ds18b20_dri( //module clock .clk (sys_clk ), // 时钟信号(50MHz) .rst_n (sys_rst_n), // 复位信号 //user interface .dq (dq ), // DS18B20的DQ引脚数据 .temp_data (temp_data), // 转换后得到的温度值 .sign (sign ) // 符号位 ); endmodule