从原理图到语言.ppt

  1. 1、本文档共57页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
从原理图到语言 ——方法学的飞跃 FPGA系列培训第二讲 电路的描述层次 RTL Register Transport Level 介于功能和行为之间 RTL理论认为,数字电路是由寄存器和寄存器之间的传输组成的 RTL理论只支持同步逻辑 RTL描述肯定是可以综合的 方法学的转变 不要去想库里有什么 直接把思维过程转化成HDL描述 按照RTL理论,我们只需要想清楚什么需要描述成寄存器,然后描述寄存器之间的传输 传输是组合逻辑 组合逻辑可以是没有化简的,综合工具会根据约束条件按不同的策略化简 逻辑表达式 想到逻辑表达式,不要画图,直接写下来 FPGA/CPLD并不是以“与非门”之类为基本单元,不要以为直接写逻辑表达式会综合出不优化的结果 逻辑表达式可以是没有化简的,综合工具会完成化简 逻辑表达式 y = ( a and b and c ) or ( d xor e ) or not ( f and not g) or h; 逻辑表达式可以写得非常复杂 当逻辑表达式可以直接表达我们需要的行为时,用逻辑表达式描述 nWE = not ( not nCE and not R_nW ); 当用负逻辑表达更为直观时,不要转化为正逻辑描述 真值表 当一个逻辑用真值表表达最为直观时,用真值表描述,比如颜色查找表,七段译码器 当一个逻辑用计算的方法很复杂而情况不多时,用真值表描述,如FFT中用的正弦和余弦表 真值表比较小时,可以用选择赋值语句或进程中的case语句;真值表较大时,推荐使用ROM描述 ROM的描述方式是二维常量数组 真值表 signal a: std_logic_vector(3 downto 0); signal y: std_logic_vector(6 downto 0); with a select y = “1111110” when “0000”, “0110000” when “0001”, “1101101” when “0010”, “1111001” when “0011”, “0110011” when “0100”, “1011011” when “0101”, “1011111” when “0110”, “1110000” when “0111”, “1111111” when “1000”, “1111011” when “1001”, …… 真值表 constant color_table: color_table_type := ( 000,100,010,110,001,111,011, 001,011,100,010,110,001,000, 011,111,000,000,000,000,000, 000,000,110,100,100,010,110, 001,111,011,111 ); code = color_table( conv_integer(data)); 选择 选择是组合逻辑最基本的行为 描述选择行为,直接用条件/选择赋值语句或进程中的if/case语句,不要去化简成逻辑表达式 当选择行为有优先级时,用条件赋值语句或if语句表示其优先级 当选择行为没有优先级时,用选择赋值语句或case语句来描述 选择 if (( int0 and not mask0 and int1_sel0 ) /= X0000 ) or (( int1 and not mask1 and int1_sel1 ) /= X0000 ) then nirq1 = 0; else nirq1 = 1; end if; 选择 if write_command = 1 then case command is when 00 = next_flash = command0; when 11 = if nwp = 0 then next_flash = idle; else next_flash = command0; end if; when 01 = if nwp = 0 then next_flash = idle; else next_flash = pointer; end if; when others = next_flash = idle; end case; els

文档评论(0)

wx171113 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档