8线-3线编码器 优先编码器+八选一数据选择器 FPGA设计Verilog逻辑源码Quartus工程文件, Quartus软件版本11.0, FPGA型号为CYCLONE4E系列中的EP4CE6E22C8,可以做为你的学习设计参考。 module yxbm_83(y,eo,gs,i,ei); input [7:0] i; //8位输入i input ei; //使能输入端ei output eo,gs; //使能输出端eo,优先标志端gs output[2:0] y; //3位输出y reg[2:0] y; //3位输出寄存器y reg eo,gs; //使能输出寄存器, always@(i,ei) //电平触发方式,当i跟ei有改变的时候,执行以下操作 begin if(ei==1'b1) //当ei为1的时候 begin y<=3'b111; gs<=1'b1; eo<=1'b1; end else begin if(i[7]==1'b0) //当i的第8为0时候 begin y<=3'b000; gs<=1'b0; eo<=1'b1; end else if(i[6]==1'b0) //当i的第七位为0时候 begin y<=3'b001; gs<=1'b0; eo<=1'b1; end else if(i[5]==1'b0) //当i的第6位为0时候 begin y<=3'b010; gs<=1'b0; eo<=1'b1; end else if(i[4]==1'b0) //当i的第5位为0时候 begin y<=3'b011; gs<=1'b0; eo<=1'b1; end else if(i[3]==1'b0) //当i的第4位为0时候 begin y<=3'b100; gs<=1'b0; eo<=1'b1; end else if(i[2]==1'b0) //当i的第3位为0时候 begin y<=3'b101; gs<=1'b0; eo<=1'b1; end else if(i[1]==1'b0) //当i的第2位为0时候 begin y<=3'b110; gs<=1'b0; eo<=1'b1; end
半整数分频1.5小数分频的功能 FPGA设计Verilog逻辑源码Quartus工程文件, Quartus软件版本11.0, FPGA型号为CYCLONE4E系列中的EP4CE6E22C8,可以做为你的学习设计参考。 module div_1_5(clk,div); input clk; //输入时钟信号 output div; //输出分频信号 reg count; //计数寄存器 reg div; //输出分频寄存器 reg clk_temp2,clk_temp3; //脉冲控制端2寄存器,脉冲控制端3寄存器 assign clk_temp1=clk^clk_temp2; //脉冲控制端1寄存器,等于clk与clk_temp2取异或运算 always@(posedge clk_temp1) //脉冲控制端的上升沿触发 begin if(count==1'b0) //判断count是否为0,是的话执行以下操作 begin count<=1'b1; //count置1 clk_temp3<=1'b1; //clk_temp3置1 div<=1'b1; //div置1 end else //否的话执行以下操作 begin count<=count-1'b1; //count自减1 clk_temp3<=1'b0; //clk_temp3置0 div<=1'b0; //div置0 end end
串行加法器4位全加器 FPGA设计Verilog逻辑源码Quartus工程文件, Quartus软件版本11.0, FPGA型号为CYCLONE4E系列中的EP4CE6E22C8,可以做为你的学习设计参考。 module add4(a,b,ci,s,co); input [3:0] a,b; //输入四位数据a,b input ci; //输入进位ci output [3:0] s; //输出四位数据 s output co; //输出进位co assign {co,s}=a+b+ci; //把a、b、ci相加后的结果赋予co、s,其中co放最高位,s放低三位
FPGA控制LCD12864显示屏显示图片实验Verilog逻辑源码Quartus11.0工程文件, FPGA型号为CYCLONE4E系列中的EP4CE6E22C8,可以做为你的学习设计参考。 ​ module LCD12864(clk,rst,lcd12864_rs,lcd12864_rw,lcd12864_en,lcd12864_data,psb); input clk; //系统时钟 input rst; //复位信号 output lcd12864_rs; //1:数据模式;0:指令模式 output lcd12864_rw; //1:读操作;0:写操作 output lcd12864_en; //使能信号,写操作时在下降沿将数据送出;读操作时保持高电平 output psb; output[7:0] lcd12864_data; //LCD数据总线 reg lcd12864_rs; reg lcd12864_en; reg[7:0] lcd12864_data; reg[3:0] state; //状态机 reg[3:0] next_state; reg[14:0] div_cnt; //分频计数器 reg[9:0] cnt; //写操作计数器 reg cnt_rst; //写操作计数器复位信号 wire[7:0] data; //要显示的数据 reg clk_div; //分频时钟 /********************状态机参数*********************/ parameter idle = 4'b0000, setbase_1 = 4'b0001, setmode_1 = 4'b0010, setcurs_1 = 4'b0111, setexte_1 = 4'b0100, setexte_2 = 4'b1100, wr_y_addr_1 = 4'b1101, wr_y_addr_2 = 4'b1111, wr_x_addr_1 = 4'b1110, wr_x_addr_2 = 4'b1010, wr_data_1 = 4'b1011, wr_data_2 = 4'b1001; assign lcd12864_rw = 1'b0; //对LCD始终为写操作 assign psb=1'b1; //开背光灯 /******************时钟分频**********************/ always @(posedge clk or negedge rst) begin if(!rst) div_cnt <= 15'd0; else if(div_cnt==15'h4000) begin div_cnt <= 15'd0; clk_div<=~clk_div; end else div_cnt <= div_cnt+ 1'b1; end /**************状态机转向*********/ always @(posedge clk_div or negedge rst) begin if(!rst) state <= idle; else state <= next_state; end /***************************************************************/
Cyclone4E FPGA设计4位串入串出移位寄存器Verilog逻辑源码Quartus工程文件, Quartus软件版本11.0, FPGA型号为CYCLONE4E系列中的EP4CE6E22C8,可以做为你的学习设计参考。 module yw_reg(clk,dout,din); input clk; //输入时钟 input din; //输入数据 output dout; //输出数据 reg dout; //输出数据寄存器 reg[3:0] q; //四位寄存器 always@(posedge clk) //clk的上升沿触发 begin q[0]<=din; //把输入放入q寄存器的第一位 q[3:1]<=q[2:0]; //把q寄存器的1到3位赋予2到4位 dout<=q[3]; //把q的第四位赋予输出寄存器
Cyclone4E FPGA设计5位串入并出移位寄存器Verilog逻辑源码Quartus工程文件, Quartus软件版本11.0, FPGA型号为CYCLONE4E系列中的EP4CE6E22C8,可以做为你的学习设计参考。 module reg_cb(clk,din,clr,dout); input clk,din,clr; output[4:0] dout; reg[4:0] dout; always@(posedge clk) begin if(clr) begin dout<=0; end else begin dout<={dout,din}; end
模为60的BCD码加法计数器FPGA设计Verilog逻辑源码Quartus工程文件, Quartus软件版本11.0, FPGA型号为CYCLONE4E系列中的EP4CE6E22C8,可以做为你的学习设计参考。 module cnt_60(clk,reset,cin,load,data,cout,qout); input clk,reset,cin,load; //输入时钟,复位,计数端,置数端 input[7:0] data; //预置数输入端 output cout; //输出进位信号端 output[7:0] qout; //计数输出端 reg[7:0] qout; //计数输出端寄存器 always@(posedge clk) //时钟上升沿触发 begin if(reset) //判断是否复位信号端为1 qout<=0; //计数输出端置0 else if(load) //判断置数端是否有效 qout<=data; //将预置数输入端数据赋予计数输出寄存器 else if(cin) //判断计数端是否有效 begin if(qout[3:0]==9) //判断qout的低位是否为9 begin qout[3:0]<=0; //qout低位清0 if(qout[7:4]==5) //判断qout高位是否为5 qout[7:4]<=0; //qout高位清0 else qout[7:4]<=qout[7:4]+4'b1; //高位自加1 end
FPGA控制LCD12864显示屏显示4行字符实验Verilog逻辑源码Quartus11.0工程文件,, FPGA型号为CYCLONE4E系列中的EP4CE6E22C8,可以做为你的学习设计参考。 module lcd12864(clk,rs,rw,en,dat,psb); input clk; //系统时钟输入50M output [7:0] dat; //LCD的8位数据口 output rs,rw,en,psb; //LCD的控制脚 reg e; reg [7:0] dat; reg rs; reg [15:0] counter; reg [6:0] current,next; reg clkr; reg [1:0] cnt; ///////////////////////////////////////////// assign psb=1'b1; assign rw=0; always @(posedge clk) //da de shi zhong pinlv begin counter=counter+1; if(counter==16'h000f) clkr=~clkr; end //////////////////////////////////////////////// always @(posedge clkr) begin current=next; case(current) 7'd0: begin rs<=0; dat<=8'h31; next<=next+1'b1;end //*设置8位格式,* 7'd1: begin rs<=0; dat<=8'h0C; next<=next+1'b1;end //*整体显示,关光标,不闪烁*/ 7'd2: begin rs<=0; dat<=8'h06; next<=next+1'b1; end //*设定输入方式,增量不移位*/ 7'd3: begin rs<=0; dat<=8'h01; next<=next+1'b1; end //*清除显示*/ 7'd4: begin rs<=1; dat<=8'hB4; next<=next+1'b1; end //显示第一行 7'd5: begin rs<=1; dat<=8'hF3; next<=next+1'b1; end 7'd6: begin rs<=1; dat<=8'hCE; next<=next+1'b1; end 7'd7: begin rs<=1; dat<=8'hF7;next<=next+1'b1; end 7'd8: begin rs<=1; dat<=8'hB9; next<=next+1'b1; end 7'd9: begin rs<=1; dat<=8'hCF; next<=next+1'b1; end 7'd10: begin rs<=1; dat<="-"; next<=next+1'b1; end 7'd11: begin rs<=1; dat<="F";next<=next+1'b1; end 7'd12: begin rs<=1; dat<="P"; next<=next+1'b1; end 7'd13: begin rs<=1; dat<="G";next<=next+1'b1; end 7'd14: begin rs<=1; dat<="A"; next<=next+1'b1; end 7'd15: begin rs<=1; dat<="!"; next<=next+1'b1; end 7'd16: begin
2021-08-23 13:13:59 3.33MB
LCD1602显示屏显示字符实验FPGA设计Verilog逻辑源码Quartus11.0工程文件,FPGA型号为CYCLONE4E系列中的EP4CE6E22C8,可以做为你的学习设计参考。 module my1602(clk,RS,RW,E,Data,back_light); input clk; //50MHZ时钟的输入 output RS,RW,E; //1602的控制信号使能,数据/命令,读/写 output [7:0]Data; //数据端 output back_light; //背光 reg RS; reg [7:0]Data; parameter address=8'h80; //第一行 parameter address2=8'hc0; //第二行 assign RW=1'b0; //只用显示时,一直是写的状态 assign back_light=1'b1; //背光灯打开 reg clk_e; reg [15:0]count; always @(posedge clk) begin count=count+1'b1; if(count==16'hf000) begin clk_e=~clk_e; //作为使能端 count=16'd0; end end reg [1:0]jishu; reg [4:0]zhuangtai; //状态机状态 reg temp; always @(posedge clk_e) begin case(zhuangtai) 5'b00000:begin temp<=1'b0; RS<=1'b0; Data<=8'h38;//显示模式设置 zhuangtai<=zhuangtai+1'b1; end 5'b00001:begin RS<=1'b0; Data<=8'h0c;//显示开及光标设置 zhuangtai<=zhuangtai+1'b1; end 5'b00010:begin RS<=1'b0; Data<=8'h06;//显示光标移动设置 zhuangtai<=zhuangtai+1'b1; end 5'b00011:begin RS<=1'b0; Data<=8'h01;//显示
同步十位减法计数器Cyclone4E FPGA设计Verilog逻辑源码Quartus工程文件, Quartus软件版本11.0, FPGA型号为CYCLONE4E系列中的EP4CE6E22C8,可以做为你的学习设计参考。 module cnt_jf(clk,rst,q); input clk; //输入时钟 input rst; //输入复位信号,高电平有效 output[3:0] q; //输出计数端 reg[3:0] q; //输出计数端寄存器 always@(posedge clk) //时钟上升沿触发 begin if(rst) //判断rst是否有效 begin q<=0; //q清零 end else if(q==4'b0000) //q是否等于0 begin q<=4'b1001; //q置9 end else begin q<=q-4'b1; //q自减1