无置数端+有置数端可变模计数器Cyclone4E FPGA设计Verilog逻辑源码Quartus工程文件, Quartus软件版本11.0, FPGA型号为CYCLONE4E系列中的EP4CE6E22C8,可以做为你的学习设计参考。 module cnt_kb_1(clk,clr,m,q); input clk,clr; //输入时钟,清零端(1有效) input[6:0] m; //模值输入端,m只能由小到大变化,否则出错 output[6:0] q; //计数输出端 reg[6:0] q; //计数输出端寄存器 reg[6:0] md; //7位md寄存器 always@(posedge clk) //时钟上升沿触发 begin md<=m-7'b1; //将m减1赋予md if(clr) //判断clr是否有效 begin q<=0; //q清零 end else //当清零端无效时候 if(q==md) //判断q是否等于
占空比1:4的5分频奇数分频Cyclone4E FPGA设计Verilog逻辑源码Quartus工程文件, Quartus软件版本11.0, FPGA型号为CYCLONE4E系列中的EP4CE6E22C8,可以做为你的学习设计参考。 module f_14(clk_50M,f_14); input clk_50M; //输入时钟,50M,20ns output f_14; //输出5分频,占空比为1:4 reg f_14; //分频寄存器 reg[2:0] cnt; //计数寄存器 always@(posedge clk_50M) //在每个时钟的上升沿触发 begin if(cnt==3'b100) //当cnt为4的时候,执行以下程序 begin f_14<=1'b1; //f_14置1 cnt<=3'b0; //cnt清0 end else begin cnt<=cnt+3'b1; //cnt自加1 f_14<=1'b0; //f_14置0
同步4位可逆计数器Cyclone4E FPGA设计Verilog逻辑源码Quartus工程文件, Quartus软件版本11.0, FPGA型号为CYCLONE4E系列中的EP4CE6E22C8,可以做为你的学习设计参考。 module cnt_kn(clk,clr,s,en,updn,d,co,q); input clk,clr,s,en,updn; //输入时钟、清零端(高电平有效)、置数端(高电平有效)、使能端、计数器方向控制端 input[3:0] d; //预置数据端 output[3:0] q; //计数输出端 output co; //进位端 reg[3:0] q; //计数输出寄存器 reg co; //进位输出寄存器 always@(posedge clk) //时钟上升沿触发 begin if(clr) //判断清零端是否有效 begin q<=0; //q置0 end else begin if(s) //判断置数端是否有效 begin q<=d; //q置d中的数据 end else if(en) //判断使能端是否有效 begin if(updn) //判断方向寄存器是否为1 begin if(q==4'b1111) //判断q是否为15 begin q<=4'b0000; //q清0 co<=1; //co置1 end else //q还没到15 begin q<=q+1; //q自加1 co<=0; //co置0
同步24进制计数器FPGA设计Verilog逻辑源码Quartus工程文件, Quartus软件版本11.0, FPGA型号为CYCLONE4E系列中的EP4CE6E22C8,可以做为你的学习设计参考。 module cnt_24(ten,one,co,clk,clr); input clk; //输入时钟 input clr; //清零输入端 output co; //进位输出端 output[3:0] ten,one; //十位输出,个位输出 reg co; //进位输出端寄存器 reg[3:0] ten,one; //十位输出寄存器,个位输出寄存器 always@(posedge clk) //时钟上升沿触发 begin if(clr) //判断清零信号是否有效,即为1 begin ten<=0; //十位清零 one<=0; //个位清零 end else begin if({ten,one}==8'b00100011) //判断是否计数到23 begin ten<=0; //十位清零 one<=0; //个位清零 co<=1; //进位置1 end else if(one==4'b1001) //判断各位是否为9 begin one<=0; //是的话个位置0 ten<=ten+4'b1; //十位自加1 co<=0; //进位置0 end else
AD9851扫描仪FPGA设计方案Verilog逻辑源码Quartus工程文件+设计说明文档资料 硬件需求: 1、 AD9851模块。 2、 扩展板2号一个。 3、 可以插AD9851模块和块展板2号的FPGA核心板一个。 设计规格: 4、 可以选择扫频输出,固定频率输出。 5、 固定频率输出要求输入频率固定。 6、 扫频输出要求输入扫频范围、频率步进值。 7、 固定频率最大输出为40Mhz,步进为100KHZ,要求频率输入位宽为12bit,最大输入为0Xfff,代表40Mhz。 8、 扫描时间要求<=2S。 AD9851特性: 1、 2、 相位通过W0的高5bit控制,精度为360/32=11.25度。 3、 频率通过频率控制字控制,32bit数值。 100Khz 控制字为 0.1Mhz*2的32次方/180Mhz = 2,386,092(16进制 24 68AC) 1Mhz 控制字为 1Mhz*2的32次方/180Mhz =23,860,929(16进制16C 16C1) 40Mhz 控制字为 40Mhz*2的32次方/180Mhz = 954,437,176(16进制 38E3 8E38) 4、 AD9851复位时序: module FREQ_SCAN ( //input input sys_clk , input sys_rst_n , input [3:0] key_row , output wire [3:0] key_col , input scan_mod , // use switch 0 , 0 is input freq, 1 is scan freq input scan_freq_step_set , // use switch 1 , 1 is set freq step input scan_freq_bound_set , // use switch 1 , 1 is set scan freq input scan_freq_bound_sel , // use switch 2 , 0 is min freq, 1 is max freq input key_is_done , // use key is ok, 0 is active input key_rst_req , // use key clear, 0 is active //output output reg ad9851_w_clk , output reg ad9851_fq_up , output reg ad9851_reset , output reg [7:0] ad9851_data ); //reg define reg [25:0] clk_cnt ; reg key_is_done_dly1 ; reg scan_freq_step_set_dly1 ; reg scan_freq_bound_set_dly1 ; reg scan_freq_bound_sel_dly1 ; reg [7:0] reset_cnt0 ; reg [7:0] write_cnt ; reg [31:0] key_input_lock ; reg [31:0] ctrl_word ; reg [31:0] scan_freq_ctrl_word ; reg [31:0] scan_freq_mi
红外接收模块FPGA实验Verilog逻辑源码Quartus工程文件+文档说明资料,FPGA为CYCLONE4系列中的EP4CE6E22C8. 完整的工程文件,可以做为你的学习设计参考。 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 [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 ;
七段数码管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;
RS485接口收发测试FPGA读写实验Verilog逻辑源码Quartus工程文件+文档说明资料,FPGA为CYCLONE4系列中的EP4CE6E22C8. 完整的工程文件,可以做为你的学习设计参考。 实验任务和现象 任务:使用两块开发板,一块用作发送,一块用作接收。通过4个按键改变数据,并用LED将发送和接收的数据显示出来。 现象:两块开发板LED显示的效果一样,并且按下不同的按键,可以改变LED的显示,同时接收的板子接到数据后改变LED显示。 •5、设计思路 我们依旧采用串口的设计思路,设计程序,但因为 MAX485是半双工器件,所以需要接收和发送状态切换,有两个时能端,我们的开发板,将两个接到一起用一个引脚控制。 我们以串口发送为例: 以波特率9600为例子说明,波特率9600接收一个bit的时间为1s/9600=104us,即每隔104us发送一个数据。 module RS485_Revc ( input sys_clk , input sys_rst_n , input RO , output wire RE_DE , output reg [7:0] LED ); /***************reg define****************/ reg [7:0] buff ; reg [7:0] data_out ; reg [15:0] counter ; reg rxd_din1 ; //uart rxd input ; reg rxd_din2 ; //uart rxd input ; reg rxd_negedge_sig_flag ; /***************wire define***************/ wire rxd_negedge_sig ; /******************************************************************************************************* ** Main Program ** ********************************************************************************************************/ assign RE_DE = 1'b0; always @ (posedge sys_clk or negedge sys_rst_n) begin if ( sys_rst_n ==1'b0 ) begin rxd_din1 <= 1'b0; rxd_din2 <= 1'b0; end else begin rxd_din1 <= RO ; rxd_din2 <= rxd_din1; end end assign rxd_negedge_sig = (~rxd_din2) &(rxd_din1); always @ (posedge sys_clk or negedge sys_rst_n) begin if ( sys_rst_n ==1'b0) rxd_negedge_sig_flag <= 1'b0; else rxd_negedge_sig_flag <= rxd_negedge_sig; end always @ (posedge s