LCD1602显示英文字符实验FPGA(EP4CE6)Verilog例程quartus11.0工程源码,可以做为你的学习设计参考。 module lcd(clk, rs, rw, en,dat); input clk; output [7:0] dat; output rs,rw,en; //tri en; reg e; reg [7:0] dat; reg rs; reg [15:0] counter; reg [4:0] current,next; reg clkr; reg [1:0] cnt; parameter set0=4'h0; parameter set1=4'h1; parameter set2=4'h2; parameter set3=4'h3; parameter dat0=4'h4; parameter dat1=4'h5; parameter dat2=4'h6; parameter dat3=4'h7; parameter dat4=4'h8; parameter dat5=4'h9; parameter dat6=4'hA; parameter dat7=4'hB; parameter dat8=4'hC; parameter dat9=4'hD; parameter dat10=4'hE; parameter dat11=5'h10; parameter nul=4'hF; always @(posedge clk) begin counter=counter+1; if(counter==16'h000f) clkr=~clkr; end always @(posedge clkr) begin current=next; case(current) set0: begin rs<=0; dat<=8'h30; next<=set1; end set1: begin rs<=0; dat<=8'h0c; next<=set2; end set2: begin rs<=0; dat<=8'h6; next<=set3; end set3: begin rs<=0; dat<=8'h1; next<=dat0; end dat0: begin rs<=1; dat<="H"; next<=dat1; end dat1: begin rs<=1; dat<="E"; next<=dat2; end dat2: begin rs<=1; dat<="L"; next<=dat3; end dat3: begin rs<=1; dat<="L"; next<=dat4; end dat4: begin rs<=1; dat<="O"; next<=dat5; end dat5: begin rs<=1; dat<=" "; next<=dat6; end dat6: begin rs<=1; dat<="W"; next<=dat7; end dat7: begin rs<=1; dat<="O"; next<=dat8; end dat8: begin rs<=1; dat<="R"; next<=dat9; end dat9: begin rs<=1; dat<="L"; next<=dat10; end dat10: begin rs<=1; dat<="D"; next<=dat11; end dat11: begin rs<=1; dat<="!"; next<=nul; end nul: begin rs<=0; dat<=8'h00; //行一遍 然后 把液晶的E 脚 拉高 if(cnt!=2'h2) begin e<=0;next<=set0;cnt<=cnt+1; end else begin next<=nul; e<=1;
LCD12864显示英文字符实验cylone4e FPGA(EP4CE6)Verilog例程quartus11.0工程源码,可以做为你的学习设计参考。 //本实验是用LCD12864显示英文。(LCD带字库) module lcd (clk, rs, rw, en,dat); input clk; output [7:0] dat; output rs,rw,en; //tri en; reg e; reg [7:0] dat; reg rs; reg [15:0] counter; reg [5:0] current,next; reg clkr; reg [1:0] cnt; parameter set0=6'h0; parameter set1=6'h1; parameter set2=6'h2; parameter set3=6'h3; parameter set4=6'h4; parameter set5=6'h5; parameter set6=6'h6; parameter dat0=6'h7; parameter dat1=6'h8; parameter dat2=6'h9; parameter dat3=6'hA; parameter dat4=6'hB; parameter dat5=6'hC; parameter dat6=6'hD; parameter dat7=6'hE; parameter dat8=6'hF; parameter dat9=6'h10; parameter dat10=6'h12; parameter dat11=6'h13; parameter dat12=6'h14; parameter dat13=6'h15; parameter dat14=6'h16; parameter dat15=6'h17; parameter dat16=6'h18; parameter dat17=6'h19; parameter dat18=6'h1A; parameter dat19=6'h1B; parameter dat20=6'h1C; parameter dat21=6'h1D; parameter dat22=6'h1E; parameter dat23=6'h1F; parameter dat24=6'h20; parameter dat25=6'h21; parameter dat26=6'h22; parameter nul=6'hF1; always @(posedge clk) begin counter=counter+1; if(counter==16'h000f) clkr=~clkr; end always @(posedge clkr) begin current=next; case(current) set0: begin rs<=0; dat<=8'h30; next<=set1; end set1: begin rs<=0; dat<=8'h0c; next<=set2; end set2: begin rs<=0; dat<=8'h6; next<=set3; end set3: begin rs<=0; dat<=8'h1; next<=dat0; end dat0: begin rs<=1; dat<="L"; next<=dat1; end //显示第一行 dat1: begin rs<=1; dat<="y"; next<=dat2; end dat2: begin rs<=1; dat<="c"; next<=dat3; end dat3: begin rs<=1; dat<=" ";next<=dat4; end dat4: begin rs<=1; dat<="F"; next<=dat5; end dat5: begin rs<=1; dat<="r"; next<=dat6; end dat6: begin rs<=1; dat<="e"; next<=dat7; end dat7: begin rs<=1; dat<
8段数码管静态显示实验cylone4e FPGA(EP4CE6)Verilog例程quartus11.0工程源码 module sled(seg,dig,clock,); input clock; output [7:0] seg; //数码管段码输出 output [3:0] dig; //数码管位码输出 reg [7:0] seg; //数码管段码输出寄存器 reg [3:0] dig; //数码管位码输出寄存器 reg [3:0] disp_dat; //显示数据寄存器 reg [36:0] count; //定义计数寄存器 always @ (posedge clock ) begin count = count + 1'b1; dig= 8'b00000000;// end always @ (count[24]) begin disp_dat = {count[28:25]}; end always @ (disp_dat) begin case (disp_dat) 4'h0 : seg = 8'hc0; //显示"0" 4'h1 : seg = 8'hf9; //显示"1" 4'h2 : seg = 8'ha4; //显示"2" 4'h3 : seg = 8'hb0; //显示"3" 4'h4 : seg = 8'h99; //显示"4" 4'h5 : seg = 8'h92; //显示"5" 4'h6 : seg = 8'h82; //显示"6" 4'h7 : seg = 8'hf8; //显示"7" 4'h8 : seg = 8'h80; //显示"8" 4'h9 : seg = 8'h90; //显示"9" 4'ha : seg = 8'h88; //显示"a" 4'hb : seg = 8'h83; //显示"b" 4'hc : seg = 8'hc6; //显示"c" 4'hd : seg = 8'ha1; //显示"d" 4'he : seg = 8'h86; //显示"e" 4'hf : seg = 8'h8e; //显示"f"
LCD12864屏显示中文实验cylone4e FPGA(EP4CE6)Verilog例程quartus11.0工程源码,可以做为你的学习设计参考。 module LCD12864 (clk, rs, rw, en,dat); input clk; //系统时钟输入50M output [7:0] dat; //LCD的8位数据口 output rs,rw,en; //LCD的控制脚 reg e; reg [7:0] dat; reg rs; reg [15:0] counter; reg [6:0] current,next; reg clkr; reg [1:0] cnt; //定义的一些状态机。 parameter set0=6'h0; parameter set1=6'h1; parameter set2=6'h2; parameter set3=6'h3; parameter set4=6'h4; parameter set5=6'h5; parameter set6=6'h6; parameter dat0=6'h7; parameter dat1=6'h8; parameter dat2=6'h9; parameter dat3=6'hA; parameter dat4=6'hB; parameter dat5=6'hC; parameter dat6=6'hD; parameter dat7=6'hE; parameter dat8=6'hF; parameter dat9=6'h10; parameter dat10=6'h11; parameter dat11=6'h12; parameter dat12=6'h13; parameter dat13=6'h14; parameter dat14=6'h15; parameter dat15=6'h16; parameter dat16=6'h17; parameter dat17=6'h18; parameter dat18=6'h19; parameter dat19=6'h1A; parameter dat20=6'h1B; parameter dat21=6'h1C; parameter dat22=6'h1D; parameter dat23=6'h1E; parameter dat24=6'h1F; parameter dat25=6'h20; parameter dat26=6'h21; parameter dat27=6'h22; parameter dat28=6'h23; parameter dat29=6'h24; parameter dat30=6'h25; parameter dat31=6'h26; parameter dat32=6'h27; parameter dat33=6'h28; parameter dat34=6'h29; parameter dat35=6'h2A; parameter dat36=6'h2B; parameter dat37=6'h2C; parameter dat38=6'h2D; parameter dat39=6'h2E; parameter dat40=6'h3F; parameter nul=6'h35; always @(posedge clk) // begin counter=counter+1; if(counter==16'h000f) clkr=~clkr; end always @(posedge clkr) begin current=next; case(current) set0: begin rs<=0; dat<=8'h31; next<=set1; end //*设置8位格式,* set1: begin rs<=0; dat<=8'h0C; next<=set2; end //*整体显示,关光标,不闪烁*/ set2: begin rs<=0; dat<=8'h06; next<=set3; end //*设定输入方式,增量不移位*/ set3: begin rs<=0;
ps2键盘输入UART串口输出实验cylone4e FPGA(EP4CE6)Verilog例程quartus11.0工程源码,可以做为你的学习设计参考。 /*FPGA通过ps2接收键盘数据,然后把接收到的字母A到Z键值转换相应的ASII码,通过串口发送到PC机上。 实验时,需要接键盘,还要用调试助手,下载程序后,在键盘上按下一个键,比如A,则在PC调试助手上可看到A */ `timescale 1ns / 1ps module ps2_key(clk,rst_n,ps2k_clk,ps2k_data,rs232_tx); input clk; //50M时钟信号 input rst_n; //复位信号 input ps2k_clk; //PS2接口时钟信号 input ps2k_data; //PS2接口数据信号 output rs232_tx; // RS232发送数据信号 wire[7:0] ps2_byte; // 1byte键值 wire ps2_state; //按键状态标志位 wire bps_start; //接收到数据后,波特率时钟启动信号置位 wire clk_bps; // clk_bps的高电平为接收或者发送数据位的中间采样点 ps2scan ps2scan( .clk(clk), //按键扫描模块 .rst_n(rst_n), .ps2k_clk(ps2k_clk), .ps2k_data(ps2k_data), .ps2_byte(ps2_byte), .ps2_state(ps2_state) ); speed_select speed_select( .clk(clk), .rst_n(rst_n), .bps_start(bps_start), .clk_bps(clk_bps) ); my_uart_tx my_uart_tx( .clk(clk), .rst_n(rst_n), .clk_bps(clk_bps), .rx_data(ps2_byte), .rx_int(ps2_state), .rs232_tx(rs232_tx), .bps_start(bps_start) ); endmodule
1.包含FPGA原理图 PCB源文件 测试程序 2.FPGA型号为CYCLONE IV EP4CE1022C8N 3.使用JTAG方式下载程序 4.程序存储芯片是EPCS16 5.IO使用排针引出,方便使用 6.增加扩展方案,可以随时进行扩展
2021-11-17 19:40:10 3.7MB 最小系统板 epcs16 ep4ce6 电路方案
1
FPGA SPI IP核设计, 基于Cyclone IV EP4CE6E22C8平台, 供参考!
2021-08-25 22:40:00 3.49MB FPGA SPI IP EP4CE6
1
七段数码管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;