基于fpga方向的大型屏幕显示系统设计毕业设计(编辑修改稿)内容摘要:

74HC595中。 当完成一行的扫描输出一个脉冲信号 isdone。 由于人眼的 暂留时间,只有当画面刷新频率大于 50Hz时才不会出现闪烁现象。 更新行数据最大周期Tmax=1/50/16=。 程序中利用计数器 t作为行移位标志,当计数器计数到 19999时移位一次, T=(19999+1)/20xx0000=1ms,(系统使用 20MHz晶振 ),所以本设计刷新周期为 1ms。 以下代码为 LED显示 驱动 模块的 源 程序: module displ_led( input clk, input rst, input [15:0] row_data, input [31:0] data, output rclk, output sclk, output ser, output AB, output s_clk, output isdone )。 reg rAB。 reg rs_clk。 reg rrclk。 reg rsclk。 reg rser。 reg risdone。 湖南工业大学本科毕业设计(论文) 11 reg [14:0] t。 reg [3:0] C。 always @(posedge clk or negedge rst) if(!rst) begin t=1539。 d0。 C=439。 d0。 end else if(t==1539。 d19_999) begin C=C+139。 b1。 t=1539。 d0。 end else t=t+139。 b1。 reg [5:0] i。 always @ (posedge clk or negedge rst) if(!rst) begin rAB=139。 b1。 rs_clk=139。 b0。 rrclk=139。 b0。 rsclk=139。 b0。 rser=139。 b0。 i=639。 d0。 risdone=139。 b0。 end else case(i) 0: begin risdone=139。 b0。 rAB=row_data[C]。 rs_clk=139。 b0。 rrclk=139。 b0。 rsclk=139。 b0。 i=i+139。 b1。 end 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32: if(t[2:0]==339。 d5) begin rsclk=139。 b1。 i=i+139。 b1。 end else begin rser=~data[i1]。 rsclk=139。 b0。 end 33: begin rrclk=139。 b1。 rs_clk=139。 b1。 i=i+139。 b1。 湖南工业大学本科毕业设计(论文) 12 end 34: begin if(t==1539。 d0) begin risdone=139。 b1。 i=639。 d0。 end else begin rrclk=139。 b0。 rsclk=139。 b0。 rs_clk=139。 b0。 end end endcase assign rclk=rrclk。 assign sclk=rsclk。 assign ser=rser。 assign AB=rAB。 assign s_clk=rs_clk。 assign isdone=risdone。 endmodule AB,s_clk 用于驱动 74HC164 ; ser , sclk , rclk 用于驱动 74HC595。 当输入 data=3239。 h55_55_F0_0A、 row_data=1639。 b1111_1111_1111_1110时功能仿真波形如图 ,相隔 8个时钟周期 ser更新一次数据,并且 sclk产生一脉冲将列数据移位一次。 移完所有 64位数据时, rclk产生一脉冲信号将列数据锁存。 同时 isdone产生一脉冲用于与其他模块进行交互。 行数据控制模块 行数据控制模块主要实现控制显示的上下移位功能。 以下程序为此模块的 源 程序: module row_control( input clk, input rst, input key_up, input key_down, input key_stop, //input [15:0] rdata, output [15:0] row_data )。 reg up_en。 reg down_en。 reg [15:0] rrow。 图 点阵显示驱动仿真波形 湖南工业大学本科毕业设计(论文) 13 always @ (posedge clk or negedge rst) if(!rst) begin up_en=139。 b0。 down_en=139。 b0。 end else if(key_up) begin up_en=139。 b1。 down_en=139。 b0。 end else if(key_down) begin down_en=139。 b1。 up_en=139。 b0。 end else if(key_stop) begin up_en=139。 b0。 down_en=139。 b0。 end reg [23:0] t0。 reg [3:0] k。 always @ (posedge clk or negedge rst) if(!rst) begin t0=2439。 d0。 k=439。 d0。 rrow=1639。 b1111_1111_1111_1110。 end else if(down_en) begin if(t0==2439。 d9_999_999) begin k=k+139。 b1。 t0=2439。 d0。 end else begin t0=t0+139。 b1。 case(k) 0: rrow=1639。 b1111_1111_1111_1110。 1: rrow=1639。 b1111_1111_1111_1101。 2: rrow=1639。 b1111_1111_1111_1011。 3: rrow=1639。 b1111_1111_1111_0111。 4: rrow=1639。 b1111_1111_1110_1111。 5: rrow=1639。 b1111_1111_1101_1111。 6: rrow=1639。 b1111_1111_1011_1111。 7: rrow=1639。 b1111_1111_0111_1111。 8: rrow=1639。 b1111_1110_1111_1111。 湖南工业大学本科毕业设计(论文) 14 9: rrow=1639。 b1111_1101_1111_1111。 10: rrow=1639。 b1111_1011_1111_1111。 11: rrow=1639。 b1111_0111_1111_1111。 12: rrow=1639。 b1110_1111_1111_1111。 13: rrow=1639。 b1101_1111_1111_1111。 14: rrow=1639。 b1011_1111_1111_1111。 15: rrow=1639。 b0111_1111_1111_1111。 endcase end end else if(up_en) begin if(t0==2439。 d9_999_999) begin k=k+139。 b1。 t0=2439。 d0。 end else begin t0=t0+139。 b1。 case(k) 0: rrow=1639。 b1111_1111_1111_1110。 1: rrow=1639。 b0111_1111_1111_1111。 2: rrow=1639。 b1011_1111_1111_1111。 3: rrow=1639。 b1101_1111_1111_1111。 4: rrow=1639。 b1110_1111_1111_1111。 5: rrow=1639。 b1111_0111_1111_1111。 6: rrow=1639。 b1111_1011_1111_1111。 7: rrow=1639。 b1111_1101_1111_1111。 8: rrow=1639。 b1111_1110_1111_1111。 9: rrow=1639。 b1111_1111_0111_1111。 10: rrow=1639。 b1111_1111_1011_1111。 11: rrow=1639。 b1111_1111_1101_1111。 12: rrow=1639。 b1111_1111_1110_1111。 13: rrow=1639。 b1111_1111_1111_0111。 14: rrow=1639。 b1111_1111_1111_1011。 15: 湖南工业大学本科毕业设计(论文。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。