欢迎来到第壹文秘! | 帮助中心 分享价值,成长自我!
第壹文秘
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 第壹文秘 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    FPGA杂记之基础篇(FPGA设计重要知识点).docx

    • 资源ID:902637       资源大小:321.19KB        全文页数:18页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    FPGA杂记之基础篇(FPGA设计重要知识点).docx

    Verilog基础语法组合逻辑1.1 可综合模块以module为单元,具体实现如下:11*声明模块:module模块名(输入输出);endmodule-*/1.1.1时序逻辑以异步触发的D触发器为例,时序逻辑在always块里实现。moduleex_seodule(IWUtwiresys-cllc,声明模块时.输入变量一定是类型InPUtWir«rt-nrinputwire(':.Jd,OQtPntreg:二q输出变量可以是w£ra,也可以是工ag,rg变量只能在lxay3块中赋迫1.);always(POSedgCays-clkfnogedgeNSJn)敏S?列表既可以是边沿帆发,也可以是电平核发if(rst_n=1'bC)q<«ib;elseq<三d;沿烛发的逻辑里.一定采用的是非阻塞电冽endnodle主要注意点:1 .声明模块时,输入变量一定是Wire类型。2 .声明模块时,输出变量可以是Wire,也可以是reg,reg变量只能在always块中赋值。3 .敏感列表既可以是边沿触发,也可以是电平触发。4 .沿触发的逻辑里,一定采用的是非阻塞触发<=。1.1.2组合逻辑以数据选择器为例,组合逻辑通常使用assign语句赋值。modulesei(inputwiresei,inputwirea,inputwirebroutputwirec);assignc=(SeI=1,b)?a:b;endmodule主要注意点:1.Sel=O时,c=a;SeI=I时,c=b,即二选一数据选择器。四选一则有两个选择端,四个输入端,八选一则是三个选择端,八个输入端。2 .wire变量一定要用连续赋值语句赋值,而且必须用阻塞赋值。3 .2仿真模块仿真模块和可综合模块的区别:可综合模块最终生成的bit文件会烧录进芯片运行,而仿真模块编译过后是在仿真软件(例如modelsim)上运行的。仿真模块是基于可综合模块进行例化,并通过仿真软件的模拟,可以初步验证我们写的可综合模块的实现现象。以计数器为例,可综合模块如下:mmoduleex_cnt(inputwiresys_clk,inputwirerst_nroutputwire9:0ent);reg?:cnt_r;由于要在always里面操作赋值,因此要定义一个reg变量always(posedgesys_clk,negedgerst_n)if(rst_n三三1,bC)cnt_r<=10,b;elseIcnt_r<=cnt_r+_'bl;endmodle基于以上可综合模块的仿真模块如下:zincscle/时葬卫位是ns褶堂是IOoP3,BP100.1是有效效僚,为100.1ns,而】0。.】先是遍别为100.1-octaletb_ex_cns仿M的矮块声明不需委输入列表regtb-ays-clk;regZtTrstja:wire9:3zbjcnz:initial上电初始化,只在上电时执行一次!可以认为整个程序中只会执行一次begintb_sys_clk<三0;/块只能对【寄存器】量进行赋值cbrscn<0;2001*/200.1»之后8_“jn<-1:endalways一tb_ays_clk<-tb_3y3_clk;宸55循环周期为20113.sys-clk(tbsys-clk),X9ZJJarcnc(tbent);例化模境时,如果朦始模块时输出交量则括号内必须是【wire变量】endmoduld1 .仿真的模块声明不需要输入列表。2 .initial块只能对【寄存器】量进行赋值。3 .例化模块时,如果原始模块是输出变量,则括号内必须【wire变量工HDL常见例子2.1 译码器2.1.1 可综合模块(CaSe语句)此模块用case实现了一个数据选择的功能,先产生了一个8位计数器,通过判断计数器的值来输出不同的取值,当计数器计数到1时,o_data和。_dv分别输出5和1,当计数器为2时,输出7和1,其余均输出0。(Note:CaSe语句常常运用于状态机中状态的判断)*译码器11moduleex_case(inputwireSClk,inptwirersc_n,outputrego_dv,outputreg7:0o_data,);reg2:0ent;always6(posedgesclk,negedgerst_n)if(rst_n=L,b)11beginent<=3,b;endelseent<=ent+-'bl212223 B242526-27fi 8 9 0 2 2 3313233-34 A353637-38394041-42-43-always (posedge sclk, negedge rst_n) if(rst_n = .,b)begino_dv <= .,b;o_data <= 3 ,b;endelsebegincase(ent)3,dl:begino_data <n 3,d5;o_dv <= 1,bl; end3,d2:begino_data < 3,d7;。二dv <= l,bl; enddefault:begino_data <= S,d;o_dv < 1,b; endendcaseendendmoduleCase语句注意点:必须有default语句,否则会形成锁存器。2.1.2仿真模块'timescalelns100psmoduletb_ex_case;regtb_scllc;regtb_rst_n;wiretb_o_dv;wire:.tb_o_daca;|91011 1213141516-initialbegintb_sclk=1'b;tb_rst_n=1,b;#200tb_rst_n=1'bl;end1718192021222324252627always #10 tb SCIk <= tb sclk;ex caseendmoduleex_casel(.sclk (tb_sclJc),.rst_n (tb_rst_n),.o_dv (cb_o_dv),.o data (tb o data),2.2 状态机由于FPGA内部语句块都是并行运行的,当我们希望FPGA按照顺序执行我们的语句时,就会用到状态机。下面例子是使用状态机模拟的一个简单的自动售货机,该售货机中的商品2.5元一件,每次投币既能投入1元,也能投入0.5元,当投入3元时,需要设定找零。2.2.1 状态图l/change 0,cola 02.2.2 可综合模块(2段式状态机)2段式状态机输入Ignew。表示输入。.5元,1表示喻入1元输出Uhange:找W,。表示不找冬,2表示找冬输出UOIa:可乐,。表示不出可乐,2表示出可乐modulefsm(inputwiresclk,inputwireret_n,inputwiremoney,/0>0.5outputregchange,outputregcola);reg3:3scare;二进制编码e.g.IDLE-000:HALF-001;ONE-010;ONEHALr三011;TWO=100t占用的寄存器效量少,但是组合逻辑资源多.独热码编码如例程中使用的.占用的寄存器数量多,但是组合逻辑资源少.关于组合逻辑贡源占用,例如,使用"语句,即比较器1£(Stace-4'b0001)经过优化会变成if(staee(0-lbl)即实际上,用到的是1比特的比较器,只用判断对应位是否为0:而二迸制编码,用到的是3比特比较器,三个位置都要判断是否为0,使用的速辑资源就明3940414243444546474849505152535455565758596061626364656667686970717273747576-n787980818283848586878889909192939495969798parameter Parameter Parameter parcuneter ParameterIDLE=4,b0000;HALF=4,b0001;ONE=三4,b0010;ONEHALF=4,b0100;TWO=4,blOOC;always(posedgeSClk,negedgerst_n)if(!rst_n)state<=IDLE;elsebegincase(state)IDLE:if(money=0)state<=HALF;elsestate<=ONE;HALF:|if(money=0)state<=ONE;elsestate<=ONEHALF;ONE:if(money=0)state<=ONEHALF;elsestate<=TWO;ONEHALF:if(money=0)state<=TWO;elsestate<三IDLE;TWO:state<三IDLE;default:state<=IDLE;endcaseend-endalways®(posedgesclk,negedgerst-n)beginif(!rsjn)change<0;elseif(state=TWO&&money=ltbl)change<三-'bl;elsechange<=0;1.endalwaysQ(posedgesclktnegedgerst_n)Rbeginif(!rsjn)cola<=0;elseif(state三三TWO)(state三三ONEHALF&&money三三1,t-)cola<=1,bl;elsecola<三0;-endendmodule2.2.3仿真模块'timescale/moduletb_fsm();4一regsclk;regrst_n;regmoney;wirechange;wirecola;1011121314151617181920212223242526272829initialbeginsclk=0;rst_n=0;money=0;#20rst_n=1;-endalways#sclk=sc1k;always#2.money=SrandomJ;Rjfsmfsminst(.sclk(sclk),.rst_n(rst_n),.money(money),.change(change),.cola(cola);endmodul

    注意事项

    本文(FPGA杂记之基础篇(FPGA设计重要知识点).docx)为本站会员(p**)主动上传,第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第壹文秘(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 1wenmi网站版权所有

    经营许可证编号:宁ICP备2022001189号-1

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!

    收起
    展开