verilog经典例程
2023-05-22 12:00:23 148KB verilog例程
1
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] ),
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
内有数百个FPGA经典例程,由浅入深,适合初学者的好教程啊
2021-05-26 00:06:34 111KB FPGA verilog 例程 经典
1
cyclone III -DDR2-USB3.0(CYUSB3014) Fpga开发板资料程序实例f Cadence硬件原理图+PCB+Verilog例程源码+文档资料
Altera_arriaVST_5astfd5kf40es_soc FPGA开发板资料硬件原理图+PCB+VERILOG例程源码+文档资料