当前位置: 首页 > news >正文

手机网站应该怎么做网站模版购买发布

手机网站应该怎么做,网站模版购买发布,企业网站设计能否以,上海人才网最新招聘2021规范很重要工作过的朋友肯定知道#xff0c;公司里是很强调规范的#xff0c;特别是对于大的设计#xff08;无论软件还是硬件#xff09;#xff0c;不按照规范走几乎是不可实现的。逻辑设计也是这样#xff1a;如果不按规范做的话#xff0c;过一个月后调试时发现有错…规范很重要工作过的朋友肯定知道公司里是很强调规范的特别是对于大的设计无论软件还是硬件不按照规范走几乎是不可实现的。逻辑设计也是这样如果不按规范做的话过一个月后调试时发现有错回头再看自己写的代码估计很多信号功能都忘了更不要说检错了如果一个项目做了一半一个人走了接班的估计得从头开始设计如果需要在原来的版本基础上增加新功能很可能也得从头来过很难做到设计的可重用性。在逻辑方面我觉得比较重要的规范有这些 1.设计必须文档化。要将设计思路详细实现等写入文档然后经过严格评审通过后才能进行下一步的工作。这样做乍看起来很花时间但是从整个项目过程来看绝对要比一上来就写代码要节约时间且这种做法可以使项目处于可控、可实现的状态。2.代码规范。a.设计要参数化。比如一开始的设计时钟周期是30ns复位周期是5个时钟周期我们可以这么写parameter  CLK_PERIOD 30;parameter  RST_MUL_TIME 5;parameter  RST_TIME RST_MUL_TIME * CLK_PERIOD;...rst_n 1b0;# RST_TIME rst_n 1b1;...# CLK_PERIOD/2 clk ~clk;如果在另一个设计中的时钟是40ns复位周期不变我们只需对CLK_PERIOD进行重新例化就行了从而使得代码更加易于重用。b.信号命名要规范化。1) 信号名一律小写参数用大写。2) 对于低电平有效的信号结尾要用_n标记如rst_n。3) 端口信号排列要统一一个信号只占一行最好按输入输出及从哪个模块来到哪个模块去的关系排列这样在后期仿真验证找错时后  方便很多。如module a(//inputclk,rst_n,   //globle signalwren,rden,avalon_din,  //related to avalon bussdi,         //related to serial port input//outputdata_ready,avalon_dout, //related to avalon bus...);4) 一个模块尽量只用一个时钟这里的一个模块是指一个module或者是一个entity。在多时钟域的设计中涉及到跨时钟域的设计中最好有专门一个模块做时钟域的隔离。这样做可以让综合器综合出更优的结果。5) 尽量在底层模块上做逻辑在高层尽量做例化顶层模块只能做例化禁止出现任何胶连逻辑glue logic哪怕仅仅是对某个信号取反。理由同上。6) 在FPGA的设计上禁止用纯组合逻辑产生latch带D触发器的latch的是允许的比如配置寄存器就是这种类型。7) 一般来说进入FPGA的信号必须先同步以提高系统工作频率板级。所有模块的输出都要寄存器化以提高工作频率这对设计做到时序收敛也是极有好处的。9) 除非是低功耗设计不然不要用门控时钟--这会增加设计的不稳定性在要用到门控时钟的地方也要将门控信号用时钟的下降沿 打一拍再输出与时钟相与。clk_gate_en      --------                    ---------------------|D     Q |------------------|     \ gate_clk_out|        |         ---------|      )---------------o|       |         |        |     /clk    |       --------           |         ----------------------------------------10)禁止用计数器分频后的信号做其它模块的时钟而要用改成时钟使能的方式否则这种时钟满天飞的方式对设计的可靠性极为不利也大大增加了静态时序分析的复杂性。如FPGA的输入时钟是25M的现在系统内部要通过RS232与PC通信要以rs232_1xclk的速率发送数据。不要这样做always (posedge rs232_1xclk or negedge rst_n)begin...end而要这样做always (posedge clk_25m or negedge rst_n)begin...else if ( rs232_1xclk 1b1 )...end11)状态机要写成3段式的(这是最标准的写法)即...always (posedge clk or negedge rst_n)...current_state next_state;...always (current_state ...)...case(current_state)...s1:if ...next_state s2;......always (posedge clk or negedge rst_n)...elsea 1b0;c 1b0;c 1b0;            //赋默认值case(current_state)s1:a 1b0;   //由于上面赋了默认值这里就不用再对b、c赋值了(b、c在该状态为0不会产生锁存器下同)s2:b 1b1;s3:c 1b1;default:......3.ALTERA参考设计准则1) Ensure Clock, Preset, and Clear configurations are free of glitches.2) Never use Clocks consisting of more than one level of combinatorial logic.3) Carefully calculate setup times and hold times for multi-Clock systems.4) Synchronize signals between flipflops in multi-Clock systems whenthe setup and hold time requirements cannot be met.5) Ensure that Preset and Clear signals do not contain race conditions.6) Ensure that no other internal race conditions exist.7) Register all glitch-sensitive outputs.Synchronize all asynchronous inputs.9) Never rely on delay chains for pin-to-pin or internal delays.10)Do not rely on Power-On Reset. Use a master Reset pin to clear all flipflops.11)Remove any stuck states from state machines or synchronous logic.其它方面的规范一时没有想到想到了再写也欢迎大家补充。时序是设计出来的我的boss有在华为及峻龙工作的背景自然就给我们讲了一些华为及altera做逻辑的一些东西而我们的项目规范也基本上是按华为的那一套去做。在工作这几个月中给我感触最深的是华为的那句话时序是设计出来的不是仿出来的更不是湊出来的。在我们公司每一个项目都有很严格的评审只有评审通过了才能做下一步的工作。以做逻辑为例并不是一上来就开始写代码而是要先写总体设计方案和逻辑详细设计方案要等这些方案评审通过认为可行了才能进行编码一般来说这部分工作所占的时间要远大于编码的时间。总体方案主要是涉及模块划分一级模块和二级模块的接口信号和时序我们要求把接口信号的时序波形描述出来以及将来如何测试设计。在这一级方案中要保证在今后的设计中时序要收敛到一级模块最后是在二级模块中。什么意思呢我们在做详细设计的时候对于一些信号的时序肯定会做一些调整的但是这种时序的调整最多只能波及到本一级模块而不能影响到整个设计。记得以前在学校做设计的时候由于不懂得设计时序经常因为有一处信号的时序不满足结果不得不将其它模块信号的时序也改一下搞得人很郁闷。在逻辑详细设计方案这一级的时候我们已经将各级模块的接口时序都设计出来了各级模块内部是怎么实现的也基本上确定下来了。由于做到这一点在编码的时候自然就很快了最重要的是这样做后可以让设计会一直处于可控的状态不会因为某一处的错误引起整个设计从头进行。版权所有未经作者允许禁止用于商业性质的转载如对此文有疑问或想给作者提建议请给作者发emailwangdiantom.com  EDA论坛 版权所有严禁拷贝 转载请联系bbsedacn.net如何提高电路工作频率对于设计者来说我们当然希望我们设计的电路的工作频率在这里如无特别说明工作频率指FPGA片内的工作频率尽量高。我们也经常听说用资源换速度用流水的方式可以提高工作频率这确实是一个很重要的方法今天我想进一步去分析该如何提高电路的工作频率。我们先来分析下是什么影响了电路的工作频率。我们电路的工作频率主要与寄存器到寄存器之间的信号传播时延及clock skew有关。在FPGA内部如果时钟走长线的话clock skew很小基本上可以忽略, 在这里为了简单起见我们只考虑信号的传播时延的因素。信号的传播时延包括寄存器的开关时延、走线时延、经过组合逻辑的时延这样划分或许不是很准确不过对分析问题来说应该是没有可以的要提高电路的工作频率我们就要在这三个时延中做文章使其尽可能的小。我们先来看开关时延这个时延是由器件物理特性决定的我们没有办法去改变所以我们只能通过改变走线方式和减少组合逻辑的方法来提高工作频率。1.通过改变走线的方式减少时延。以altera的器件为例我们在quartus里面的timing closure floorplan可以看到有很多条条块块我们可以将条条块块按行和按列分每一个条块代表1个LAB每个LAB里有8个或者是10个LE。它们的走线时延的关系如下同一个LAB中最快 同列或者同行 不同行且不同列。我们通过给综合器加适当的约束不可贪心一般以加5%裕量较为合适比如电路工作在100Mhz则加约束加到105Mhz就可以了贪心效果反而不好且极大增加综合时间可以将相关的逻辑在布线时尽量布的靠近一点从而减少走线的时延。注约束的实现不完全是通过改进布局布线方式去提高工作频率还有其它的改进措施2.通过减少组合逻辑的减少时延。上面我们讲了可以通过加约束来提高工作频率但是我们在做设计之初可万万不可将提高工作频率的美好愿望寄托在加约束上我们要通过合理的设计去避免出现大的组合逻辑从而提高电路的工作频率这才能增强设计的可移植性才可以使得我们的设计在移植到另一同等速度级别的芯片时还能使用。我们知道目前大部分FPGA都基于4输入LUT的如果一个输出对应的判断条件大于四输入的话就要由多个LUT级联才能完成这样就引入一级组合逻辑时延我们要减少组合逻辑无非就是要输入条件尽可能的少这样就可以级联的LUT更少从而减少了组合逻辑引起的时延。我们平时听说的流水就是一种通过切割大的组合逻辑在其中插入一级或多级D触发器从而使寄存器与寄存器之间的组合逻辑减少来提高工作频率的方法。比如一个32位的计数器该计数器的进位链很长必然会降低工作频率我们可以将其分割成4位和8位的计数每当4位的计数器计到15后触发一次8位的计数器这样就实现了计数器的切割也提高了工作频率。在状态机中一般也要将大的计数器移到状态机外因为计数器这东西一般是经常是大于4输入的如果再和其它条件一起做为状态的跳变判据的话必然会增加LUT的级联从而增大组合逻辑。以一个6输入的计数器为例我们原希望当计数器计到111100后状态跳变现在我们将计数器放到状态机外当计数器计到111011后产生个enable信号去触发状态跳变这样就将组合逻辑减少了。上面说的都是可以通过流水的方式切割组合逻辑的情况但是有些情况下我们是很难去切割组合逻辑的在这些情况下我们又该怎么做呢状态机就是这么一个例子我们不能通过往状态译码组合逻辑中加入流水。如果我们的设计中有一个几十个状态的状态机它的状态译码逻辑将非常之巨大毫无疑问这极有可能是设计中的关键路径。那我们该怎么做呢还是老思路减少组合逻辑。我们可以对状态的输出进行分析对它们进行重新分类并根据这个重新定义成一组组小状态机通过对输入进行选择(case语句)并去触发相应的小状态机从而实现了将大的状态机切割成小的状态机。在ATA6的规范中硬盘的标准输入的命令大概有20十种每一个命令又对应很多种状态如果用一个大的状态机状态套状态去做那是不可想象的我们可以通过case语句去对命令进行译码并触发相应的状态机这样做下来这一个模块的频率就可以跑得比较高了。总结提高工作频率的本质就是要减少寄存器到寄存器的时延最有效的方法就是避免出现大的组合逻辑也就是要尽量去满足四输入的条件减少LUT级联的数量。我们可以通过加约束、流水、切割状态的方法提高工作频率。做逻辑的难点在于系统结构设计和仿真验证刚去公司的时候BOSS就和我讲做逻辑的难点不在于RTL级代码的设计而在于系统结构设计和仿真验证方面。目前国内对可综合的设计强调的比较多而对系统结构设计和仿真验证方面似乎还没有什么资料这或许也从一个侧面反映了国内目前的设计水平还比较低下吧。以前在学校的时候总是觉得将RTL级代码做好就行了仿真验证只是形式而已所以对HDL的行为描述方面的语法不屑一顾对testbench也一直不愿意去学--因为觉得画波形图方便对于系统结构设计更是一点都不懂了。到了公司接触了些东西才发现完全不是这样。其实在国外花在仿真验证上的时间和人力大概是花在RTL级代码上的两倍现在仿真验证才是百万门级芯片设计的关键路径。仿真验证的难点主要在于怎么建模才能完全和准确地去验证设计的正确性主要是提高代码覆盖在这过程中验证速度也是很重要的。验证说白了也就是怎么产生足够覆盖率的激励源然后怎么去检测错误。我个人认为在仿真验证中最基本就是要做到验证的自动化。这也是为什么我们要写testbench的原因。在我现在的一个设计中每次跑仿真都要一个小时左右这其实算小设计。由于画波形图无法做到验证自动化如果用通过画波形图来仿真的话一是画波形会画死特别是对于算法复杂的、输入呈统计分布的设计二是看波形图要看死三是检错率几乎为零。那么怎么做到自动化呢我个人的水平还很有限只能简单地谈下BFMbus function model总线功能模型。以做一个MAC的core为例背板是PCI总线那么我们需要一个MAC_BFM和PCI_BFM及PCI_BMPCI behavior model。MAC_BFM的主要功能是产生以太网帧(激励源随机的长度和帧头内容也是随机的,在发送的同时也将其复制一份到PCI_BM中PCI_BFM的功能则是仿PCI总线的行为比如被测收到了一个正确帧后会向PCI总线发送一个请求PCI_BFM则会去响应它并将数据收进来PCI_BM的主要功能是将MAC_BFM发送出来的东西与PCI_BFM接收到的东西做比较由于它具有了MAC_BFM的发送信息和PCI_BFM的接收信息只要设计合理它总是可以自动地、完全地去测试被测是否工作正常从而实现自动检测。华为在仿真验证方面估计在国内来说是做的比较好的他们已建立起了比较好的验证平台大部分与通信有关的BFM都做好了听我朋友说现在他们只需要将被测放在测试平台中并配置好参数就可以自动地检测被测功能的正确与否。在功能仿真做完后由于我们做在是FPGA的设计在设计时已经基本保证RTL级代码在综合结果和功能仿真结果的一致性只要综合布局布线后的静态时序报告没有违反时序约束的警告就可以下到板子上去调试了。事实上在华为中兴他们做FPGA的设计时也是不做时序仿真的因为做时序仿真很花时间且效果也不见得比看静态时序分析报告好。当然了如果是ASIC的设计话它们的仿真验证的工作量要大一些在涉及到多时钟域的设计时一般还是做后仿的。不过在做后仿之前也一般会先用形式验证工具和通过静态时序分序报告去查看有没有违反设计要求的地方这样做了之后后仿的工作量可以小很多。在HDL语言方面国内语言很多人都在争论VHDL和verilog哪个好其实我个人认为这并没有多大的意义外面的大公司基本上都是用verilog在做RTL级的代码所以还是建议大家尽量学verilog。在仿真方面由于VHDL在行为级建模方面弱于verilog用VHDL做仿真模型的很少当然也不是说verilog就好其实verilog在复杂的行为级建模方面的能力也是有限的比如目前它还不支持数组。在一些复杂的算法设计中需要高级语言做抽象才能描述出行为级模型。在国外仿真建模很多都是用System C和E语言用verilog的都算是很落后的了国内华为的验证平台好像是用System C写。在系统结构设计方面由于我做的设计还不够大还谈不上什么经验只是觉得必须要具备一些计算机系统结构的知识才行。划分的首要依据是功能之后是选择合适的总线结构、存储结构和处理器架构通过系统结构划分要使各部分功能模块清晰易于实现。这一部分我想过段时间有一点体会了再和大家分享就先不误导大家了。
http://www.zqtcl.cn/news/832826/

相关文章:

  • 做本地网站赚钱吗wordpress桌面宠物
  • 滁州市城市建设投资有限公司网站云服务器里面做网站播放器
  • 做yy头像的网站口碑营销案例简短
  • 卖灯杆的做网站好网页ip代理
  • 做网站开发工具哪个好网络协议分析课程设计报告
  • 如何进行营销型企业网站的优化网站开发有很多种吗
  • 卡片式设计网站营销培训课程视频
  • 网站rss地址生成wordpress 首页幻灯片
  • 网络营销软件专业网站优化方案
  • 展览公司网站建设方案深圳正规做网站的公司
  • 网站做关键词首页淮南网站建设报价
  • 西山区城市建设局网站网页浏览器的英文缩写
  • 个人网站怎么做内容比较好昆明网站制作企业
  • 婚嫁网站建设计划专业 网站建设
  • 成品免费ppt网站做网站玩玩
  • 怎么给网站做seo优化网站的主页按钮怎么做的
  • 蓬莱做网站公司wordpress 加微信号
  • 建设网站如何优化关键词鞍山网站制作招聘网
  • 公司的网站是什么wordpress禁止s.w.org
  • 什么网站做蜘蛛池广渠门做网站的公司
  • 网站建设公司一年多少钱网站建设高校
  • 网站建设以及seo报告的格式
  • 如何做网站免费搭桥链接网站建设使用的什么软件
  • html 门户网站怎么根据网站做二维码
  • 网站增加新闻功能建设境外网站需要什么手续
  • 做产品设计之前怎么查资料国外网站怀化政法网站
  • 微信商城与网站一体深圳it外包服务公司
  • 北京建网站 优帮云建筑考试培训网
  • 深圳市网站哪家做的好巴彦淖尔网站制作开发
  • 搭建网站的步骤有哪些产品推广活动策划方案