半定制设计——VGA驱动电路_第1页
半定制设计——VGA驱动电路_第2页
半定制设计——VGA驱动电路_第3页
半定制设计——VGA驱动电路_第4页
半定制设计——VGA驱动电路_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实践教学要求与任务:输入24bitRGB信号存放于片外SRAM,输出VGA驱动信号(1)显示数据24bit构成MSB为R,LSB为B;(2)构造SRAM访问电路,设计输出驱动时序电路;(3)屏幕800*600;刷新时间33ms;时钟40MHz;(4)使用SMIC工艺库smic18_IP6M完成设计;(5)完成全部流程:设计规范文档、模块设计、代码输入、功能仿真、约束与综合、布局布线、物理验证。工作计划与进度安排:本设计持续 15 天,其中最后一天(周五)为答辩时间。第 1-2 天:讲解题目,准备参考资料,检查、调试实验软硬件,进入设计环境,开始设计方案和验证方案的准备;第 3-5 天:完成设计

2、与验证方案,经指导老师验收后进入模块电路设计(验收设计文档);第 6-9 天:完成模块电路设计,进行代码输入,并完成代码的仿真(验收代码与仿真结果);第 9-10 天:约束设计,综合(验收约束与综合结果);第 11-12 天:布局布线,完成版图(验收版图结果);第 13-14 天:物理验证、后仿真,修改设计(验收物理验证结果和时序仿真结果);第 15 天:整理设计资料,验收合格后进行答辩。摘 要VGA是IBM在1987年随PS/2机一起推出的一种视频传输标准,具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的应用。虽然在现如今的计算机领域,VGA显示器接口以略显过时,但因其

3、仍然是最多制造商所共同支持的一个标准。所以个人电脑在加载自己独特的驱动之前,都必须支持VGA的标准,被也说明了VGA在显示标准中的重要性与兼容性。在本课设中,设计完成了一个支持分辨率为800*600,刷新频率为60Hz的VGA驱动电路。并完成全部流程:设计规范文档、模块设计、代码输入、功能仿真、约束与综合、布局布线、物理验证。关键字:VGA驱动电路;Verilog HDL;半定制IV目 录引 言1 VGA显示驱动电路设计21. 电路设计21.1 设计要求21.1.1 设计功能21.1.2 设计环境21.2 VGA电路基本原理及参数21.3 设计规范41.3.1 接口规范41.3.2 功能规范4

4、1.3.3 性能规范41.4 电路模块设计52. 电路仿真与分析62.1 代码输入62.2 功能仿真62.3 FPGA验证73. 电路逻辑综合93.1 约束脚本93.2 时序报告93.3 面积报告104. 电路版图设计114.1 布局114.2 时钟线优化115. 物理验证13总 结14参考文献15附录一:设计代码16附录二:测试平台20附录三:约束脚本22附录四:管脚文件25引 言本文采用Verilog 硬件描述语言描述VGA显示电路,VGA作为一种标准的显示接口得到广泛的应用。利用EDA设计方法,可以因地制宜,根据用户的特定需要,设计出针对性强的VGA显示控制器,不仅能够大大的降

5、低成本,还可以满足生产实践中不断变化的用户需要。它将大量的电路功能集成到一个芯片中,并且可以由用户自行设计逻辑功能,提高了系统的易用性、集成度和可靠性。26VGA显示驱动电路设计1. 电路设计1.1 设计要求1.1.1 设计功能输入24bitRGB信号存放于片外SRAM,输出VGA驱动信号(1)显示数据24bit构成MSB为R,LSB为B;(2)构造SRAM访问电路,设计输出驱动时序电路;(3)屏幕800*600;刷新时间33ms;时钟40MHz;(4)使用SMIC工艺库smic18_IP6M完成设计;(5)完成全部流程:设计规范文档、模块设计、代码输入、功能仿真、约束与综合、布局布线、物理验

6、证。1.1.2 设计环境 在Linux环境下,使用Mentor Graphics公司的Modelsim进行功能仿真,使用Synopsys公司的Design Compiler进行综合,使用Cadence公司的SOC Encounter进行布局布线。1.2 VGA电路基本原理及参数工业标准的VGA显示。常见的彩色显示器,一般由CRT (阴极射线管)构成,彩色是由R、G、B(红、绿、蓝)三基色组成,CRT用逐行扫描或隔行扫描的方式实现图像显示,由VGA控制模块产生的水平同步信号和垂直同步信号控制阴极射线枪产生的电子束,打在涂有荧光粉的荧光屏上,产生R、G、B三基色,合成一个彩色像素。扫描从

7、屏幕的左上方开始,由左至右,由上到下,逐行进行扫描,每扫完一行,电子束回到屏幕下一行的起始位置,在回扫期间,CRT对电子束进行消隐,每行结束是用行同步信号HS进行行同步;扫描完所有行,再由场同步信号VS进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,预备下一场的扫描。行同步信号HS 和场同步信号VS是两个重要的信号。显示过程中,HS 和VS的极性可正可负,显示器内可自动转换为正极性逻辑。VGA行同步信号HS和场同步信号VS的时序图如图1.1所示, T1为行同步消隐;T2为行显示时间;T3为场同步消隐;T4为场显示时间。 图1.1 行消隐信号显示器每

8、扫描完一行,再扫描一下行时会花一定时间来准备,因此要满足时序要求,见图1.2。图1.2 场消隐信号行场信号之间的时序关系见下表表1.1。表1.1 行场信号数量关系电路工作时钟计算如下:列信号1056;场信号628每一帧共1056*628=663168个数据信号刷新频率60Hz即每秒共663168*60=39790080个数据信号工作时钟为1/39790080=40MHz1.3 设计规范1.3.1 接口规范clk_sys信号为系统时钟,为40MHz;,所以rst_n_in信号为复位信号,保持高电平,低电平有效;sram_addr为sram地址信号线;sram_data为sram的数据信号线;sy

9、nc与vga为VGA接口的驱动信号线。可见表1.2。表1.2 端口信号表端口方向备注clk_sysinput系统时钟rst_n_ininput复位信号sram_data23:0input数据输入信号线sram_addr18:0output地址输出信号线h_syncoutput行消隐信号v_syncoutput场消隐信号vga_r7:0output红色信号输出vga_g7:0output绿色信号输出vga_b7:0output蓝色信号输出1.3.2 功能规范1.电路为同步电路,有且仅有一个时钟信号。2.复位信号采用低电平有效,全局异步复位、同步释放。3.输入信号均由时钟上升沿控制的触发器同步后方

10、可向后传递。4.输出信号均由时钟上升沿控制的触发器送出。1.3.3 性能规范电路工作在40MHz时钟下工作,输入输出端口预留输入输出延时,SRAM地址信号输出到SRAM数据信号采集预留至少8ns;使用SMIC的smic18_IP6M 工艺库,考虑到兼容新机功耗采用3.3V电压设计,工作温度在0-60摄氏度。1.4 电路模块设计模块主体由两个计数器构成,分别对行场坐标进行计数,行场消隐信号由计数值译码产生,将计数值译码并超前加1,得到SRAM地址,将SRAM数据对应到信号输出。电路框图如下图1.3。图1.3 电路框图2. 电路仿真与分析2.1 代码输入 本次设计采用Verilog HDL语言,遵

11、循设计规范。使用文本编辑器UltraEdit、Notepad+进行编辑。在此不再做详细说明。设计文本见附录一。2.2 功能仿真功能仿真分析采用Mentor Graphics公司的Modelsim进行功能仿真。仿真时将SRAM地址信号延时后作为数据信号回传。仿真脚本见附录二。仿真结果如下。行消隐信号仿真结果如图2.1。图2.1 行消隐信号仿真场消隐信号仿真结果如图2.2。图2.2 场消隐信号仿真数据信号仿真结果如图2.3。图2.3 数据信号仿真2.3 FPGA验证使用Altera公司的FPGA器件进行FPGA验证,测试设计正确性与可靠性。将设计的文件导入Quartus II中,进行编译、约束及综

12、合,映射为电路。在FPGA中进行验证。测试结果如下图。图2.4 FPGA验证竖向彩条图2.5 FPGA验证横向彩条图2.6 FPGA验证黑白棋盘格图2.7 FPGA验证彩色棋盘格图2.8 FPGA验证分辨率及刷新率3. 电路逻辑综合 用designCompiler软件对电路代码进行约束、综合,生成网表文件。输入文件为电路代码和管脚约束文件,用top文件将两个设计进行例化。选择需要的库文件,并添加约束,最后完成综合。生成网表、约束文件、时序报告和面积报告。设置配置文件。为配置文件添加工程路径、工艺库路径等;设定全局时钟;为输入、输出管脚添加延时,若有多个时钟应注意管脚所对应的时钟是哪个;设定驱动

13、和负载;完成后进行电路的综合约束;最后可以打印时序、面积等报告。3.1 约束脚本 约束文件使用TCL命令编写,生成con文件。设定全局时钟;为输入、输出管脚添加延时。设定驱动和负载;完成后进行电路的综合约束;最后可以打印时序、面积等报告。在此不再详细说明。约束脚本见附录三。3.2 时序报告时序报告如下图3.1。图3.1 时序报告3.3 面积报告时序报告如下图3.2。图3.2 面积约束报告4. 电路版图设计 cadence公司工具SoC encounter(以后简写soce)是一完整的设计平台,可以完成从RTL输入到GDS输出的所有半定制IC设计流程。我们在设计中主要采用其版图规划(Floorp

14、lan)、布局(placement)、布线(route)、时钟树综合(CTS)、信号完整性分析(SI),以及RC提取等功能,也就是完成后端设计。 用SoCEncounter软件进行版图设计。其输入为综合约束是生成的网表文件和约束文件。另外还要编写一个管脚文件用于确定各个管脚的位置。.conf文件为配置文件,包括添加的库和其它的一些配置信息。最后做DRC检验,并生成版图。 输入文件准备完毕后,将设计文件导入;设定空间尺寸;进行全局连线(Global Nets)设定之后进行电源综合,将电源设置在最高层金属上(即M5),再对电源线进行布线,完成电源设置;设计摆放(Place)与布线(Trial Ro

15、ute)规则;进行RC提取和时序分析,若对结果不满意可重新进行设定,再次做时序分析知道满意为止;下一步是做时钟树综合CTS;细节优化布线NanoRoute;最后检查版图,DRC检验。4.1 布局 布局主要针对管脚进行布局。在布局时首先考虑电源管脚的布局。因芯片总功耗较大,为了使电源线在芯片内部压降均匀,电源特性较好。将电源管脚均匀分布在芯片四周,以提高芯片内部的电源特性。并使VDD与VSS管脚相邻,以便在器件级上加入去耦电容时,获得更好的电源特性。在其他管脚布局时,考虑到外部的易用性,将对VGA信号输出的管脚按顺序相邻排布,将对SRAM的地址线及数据线相邻排列。以便于外部器件的布局布线。共79

16、个管脚,加入一个空置管脚,共80脚,采用四周,每边20管脚布局。管脚文件详见附录四。4.2 时钟线优化 因个人水平原因,暂不具备对时钟线优化的能力。故此,将时钟线的优化工作交由软件自动完成。4.3 布局布线各项优化完成后有软件完成布局布线。初步布局布线版图见下图4.1。图4.1 初步布局布线精细布局布线版图见下图4.2。图4.2 精细布局布线5. 物理验证物理验证结果见下图5.1。图5.1 物理验证总 结 这次专业方向综合课程设计就是完成一次半定制的集成电路设计。VGA接口一个应用非常广泛的视频接口。通过这次设计既练习了专业软件的应用、复习专业方面的知识,还对VGA接口有了一定的认识,知识得到

17、了扩展。由于时间的关系,这次设计并没有完成VGA接口的全部功能,比较遗憾。以后若是有机会便将它做的更全面些。 通过这次设计我对半定制的集成电路设计有了更深刻的认识。从一开始的查阅资料,对将要设计的电路多了解;确定电路的端口、寄存器及其主要功能;用verilog语言描述电路;用仿真工具检验代码是否实现功能;用综合工具对代码进行约束综合,得到约束文件和网表;再用自动布局布线工具生成版图,并做DRC检验;最后做LVS检验。设计中我了解到有良好的代码书写风格是十分重要的,它将直接影响到网表,甚至是最后的版图。 最后还是要感谢老师和同学的大力相助,在交流中学到了更多,互相帮助、团结的精神也得到了体现。总

18、的来说这次设计还是很圆满、很成功的。参考文献1 自动版图工具 SoCE 使用教程. 沈阳理工大学信息学院. 2010 年6 月2 逻辑综合工具Design Compiler使用教程. 沈阳理工大学信息学院. 2010 年6 月3 Verilog HDL数字系统设计 王金明 电子科技大学出版社 2003附录一:设计代码/-/Major Functions:VGA drive circuit,800*600,60Hz,RGB 24bin./主要功能:VGA驱动电路,800*600,60Hz,RGB 24bin。/-module vga_ic(clk_sys,rst_n_in,sram_data,s

19、ram_addr,h_sync,v_sync,vga_r,vga_g,vga_b);/-/I/O interface definition/输入输出接口定义/-input clk_sys;input rst_n_in;input23:0sram_data;output18:0sram_addr;output h_sync;output v_sync;output 7:0vga_r;output 7:0vga_g;output 7:0vga_b;/-/-/Interface data type definition/接口数据类型定义/-wireclk_sys;wirerst_n_in;wire2

20、3:0sram_data;reg18:0sram_addr;reg h_sync;reg v_sync;reg7:0vga_r;reg7:0vga_g;reg7:0vga_b;/-/-/Internal signal data type definition /内部信号数据类型定义 /-reg15:0x_cnt;reg15:0y_cnt;regvga_en;regaddr_cnt_en;regrst_n;regrst_n_b;/-/-/Logic design/逻辑设计/-always(posedge clk_sys or negedge rst_n_in) if(!rst_n_in) beg

21、in rst_n_b<=0; rst_n<=0; end else begin rst_n_b<=1'b1; rst_n<=rst_n_b; endalways(posedge clk_sys or negedge rst_n)/行计数if(!rst_n) x_cnt <= 0;else if(x_cnt=1055) x_cnt <= 0; else x_cnt <= x_cnt+1;always(posedge clk_sys or negedge rst_n)/场计数if(!rst_n) y_cnt <= 0;else if(y_cn

22、t=627) && (x_cnt=1016) y_cnt <= 0; else if(x_cnt=1016) y_cnt <= y_cnt+1; else y_cnt <= y_cnt;always(posedge clk_sys or negedge rst_n)/行同步信号if(!rst_n) h_sync <= 1;else if(x_cnt<128) h_sync <= 0; else h_sync <= 1;always(posedge clk_sys or negedge rst_n)/场同步信号if(!rst_n) v_s

23、ync <= 1;else if(x_cnt=1016) if(y_cnt<4) v_sync <= 0; else v_sync <= 1; else v_sync <= v_sync; always(posedge clk_sys or negedge rst_n)if(!rst_n) vga_en <= 0;else vga_en <= (x_cnt>=215 && x_cnt<1015) && (y_cnt>27 && y_cnt<628);/显示信号使能always(po

24、sedge clk_sys or negedge rst_n)/显示信号if(!rst_n) begin vga_r <= 8'b0000_0000; vga_g <= 8'b0000_0000; vga_b <= 8'b0000_0000; endelseif(vga_en) begin vga_r <= sram_data23:16; vga_g <= sram_data15:8; vga_b <= sram_data7:0; endelse begin vga_r <= 8'b0000_0000; vga_g &l

25、t;= 8'b0000_0000; vga_b <= 8'b0000_0000; endalways(posedge clk_sys or negedge rst_n)if(!rst_n) addr_cnt_en <= 0;else addr_cnt_en <= (x_cnt>=214 && x_cnt<1014) && (y_cnt>27 && y_cnt<628);/地址计数使能always(posedge clk_sys or negedge rst_n)/SRAM地址if(!rst

26、_n) sram_addr <= 0;else if(addr_cnt_en) sram_addr <= (y_cnt-27-1)*800)+(x_cnt-216)+1); else sram_addr <= sram_addr;/-endmodule/-附录二:测试平台timescale 1ns/1nsmodule vga_ic_tb;reg clk_sys;reg rst_n_in;reg23:0sram_data;wire18:0sram_addr; wire h_sync; wire v_sync; wire 7:0vga_r; wire 7:0vga_g; wire

27、 7:0vga_b; vga_ic I_vga_ic(.clk_sys (clk_sys ),.rst_n_in (rst_n_in ),.sram_data(sram_data),.sram_addr(sram_addr),.h_sync (h_sync ),.v_sync (v_sync ),.vga_r (vga_r ),.vga_g (vga_g ),.vga_b (vga_b );initial begin clk_sys= 0; rst_n_in= 1; sram_data= 0; endalways #10 clk_sys=clk_sys;initial begin#100 rs

28、t_n_in= 0; #20rst_n_in= 1; endalways sram_data = #8 sram_addr;initial #30000000 $stop; endmodule附录三:约束脚本#vga_ic#read_verilog vga_ic_top.v vga_ic.v vga_ic_pad.vcurrent_design vga_ic_toplinkcheck_design#time constraint#create_clock-nameclk_sys-period25get_pins vga_ic_pad/clk_sys/Cset_clock_uncertainty

29、-setup0.4get_clocks clk_sysset_clock_latency-source-max0.6 get_clocks clk_sysset_clock_latency-max0.2get_clocks clk_sysset_clock_transition-max0.4get_clocks clk_sysset_input_delay-max15-clockclk_sysget_pins "vga_ic_pad/sram_data*/C"set_input_delay-min8-clockclk_sysget_pins "vga_ic_pad

30、/sram_data*/C"set_output_delay-max15-clockclk_sysget_pins "vga_ic_pad/sram_addr*/PAD vga_ic_pad/h_sync/PAD vga_ic_pad/v_sync/PAD vga_ic_pad/vga_r_*/PAD vga_ic_pad/vga_g_*/PAD vga_ic_pad/vga_b_*/PAD"set_output_delay-min8-clockclk_sysget_pins "vga_ic_pad/sram_addr*/PAD vga_ic_pad/h

31、_sync/PAD vga_ic_pad/v_sync/PAD vga_ic_pad/vga_r_*/PAD vga_ic_pad/vga_g_*/PAD vga_ic_pad/vga_b_*/PAD"#dont modify code below#set_dont_touch_networkget_ports clk_sysset_ideal_networkget_ports clk_sysset_dont_touch_networkget_ports rst_n_inset_ideal_networkget_ports rst_n_incheck_timing#pvt#set_o

32、perating_conditions -min fast -max slow -min_library fast -max_library slowset_wire_load_mode enclosedset_wire_load_model -name tsmc18_wl10 -library slowset_local_link_library slow.db fast.dbset_max_area 0 #drc#set_load -min -pin_load 1 get_ports "sram_addr h_sync v_sync vga_r vga_g vga_b"

33、set_driving_cell -lib_cell PDIDGZ -pin C -library tpz973gwc get_ports "clk_sys rst_n_in sram_data"set_drive 0 get_ports "clk_sys res_n_in"set_drive 2.0 get_ports "sram_data"set_max_fanout 20 vga_ic_top#change_names -hierarchy -rules name_rule set verilogout_no_tri trues

34、et_fix_multiple_port_nets -all -buffer_constantscompile -map high#导出文件#rc >./output/tim.logwrite-fverilog-hier-o./netlst/vga_ic_rtl.vwrite-fverilog-hier-o./netlst/vga_ic.svwrite-fddc-hier-o./netlst/vga_ic.ddcwrite_sdc./output/vga_ic.sdcwrite_sdf-version 2.1./output/vga_ic.sdf report_timing>./o

35、utput/vga_ic_timing.logreport_area>./output/vga_ic_area.log#附录四:管脚文件Version:Pad: vga_ic_pad/CORNER1 NWPad: vga_ic_pad/CORNER2 NEPad: vga_ic_pad/CORNER3 SEPad: vga_ic_pad/CORNER4 SW Pad: vga_ic_pad/sram_data_15 WPad: vga_ic_pad/sram_data_14 WPad: vga_ic_pad/sram_data_13 WPad: vga_ic_pad/sram_data_

36、12 WPad: vga_ic_pad/sram_data_11 WPad: vga_ic_pad/sram_data_10 WPad: vga_ic_pad/sram_data_09 WPad: vga_ic_pad/sram_data_08 WPad: vga_ic_pad/sram_data_07 WPad: vga_ic_pad/PAD_VDD1 WPad: vga_ic_pad/PAD_VSS1 WPad: vga_ic_pad/sram_data_06 WPad: vga_ic_pad/sram_data_05 WPad: vga_ic_pad/sram_data_04 WPad:

37、 vga_ic_pad/sram_data_03 WPad: vga_ic_pad/sram_data_02 WPad: vga_ic_pad/sram_data_01 WPad: vga_ic_pad/sram_data_00 WPad: vga_ic_pad/rst_n_in WPad: vga_ic_pad/clk_sys WPad: vga_ic_pad/sram_data_16 SPad: vga_ic_pad/sram_data_17 SPad: vga_ic_pad/sram_data_18 SPad: vga_ic_pad/sram_data_19 SPad: vga_ic_pad/sram_data_20 SPad: vga_ic_pad/sram_data_21 SPad: vga_ic_pad/sram_data_22 SPad: vga_ic_pad/sram_data_23 SPad: vga_ic_pad/h_sync SPad: vga_ic_pad/PAD_VSS2 SPad: vga_ic_pad/PAD_VDD2 SPad: vga_ic_pad/v_sync SPad: vga_ic_pad/vga_r_00 SPad: vga_ic_pad/vga_r_01 SPad: vga

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论