首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

FPGA基础知识问答500问连载 (二)--"我与FPGA连载活动"

FPGA基础知识问答500问连载 (二)--"我与FPGA连载活动"

Q16:FPGA设计中对时钟的使用?(例如分频等)
FPGA芯片有固定的时钟路由,这些路由能有减少时钟抖动和偏差。需要对时钟进行相位移动或变频的时候,一般不允许对时钟进行逻辑操作,这样不仅会增加时钟的偏差和抖动,还会使时钟带上毛刺。一般的处理方法是采用FPGA芯片自带的时钟管理器如PLL,DLL或DCM,或者把逻辑转换到触发器的D输入(这些也是对时钟逻辑操作的替代方案)。
Q17:FPGA设计中如何实现同步时序电路的延时?
首先说说异步电路的延时实现:异步电路一半是通过加buffer、两级与非门等(我还没用过所以也不是很清楚),但这是不适合同步电路实现延时的。在同步电路中,对于比较大的和特殊要求的延时,一半通过高速时钟产生计数器,通过计数器来控制延时;对于比较小的延时,可以通过触发器打一拍,不过这样只能延迟一个时钟周期。
Q18:FPGA中可以综合实现为RAM/ROM/CAM的三种资源及其注意事项?
三种资源:block ram;触发器(FF),查找表(LUT);
注意事项:1:在生成RAM等存储单元时,应该首选block ram 资源;其原因有二:第一:使用block ram等资源,可以节约更多的FF和4-LUT等底层可编程单元。使用block ram可以说是“不用白不用”,是最大程度发挥器件效能,节约成本的一种体现;第二:block ram是一种可以配置的硬件结构,其可靠性和速度与用LUT和register构建的存储器更有优势。2:弄清FPGA的硬件结构,合理使用block ram资源;3:分析block ram容量,高效使用block ram资源;4:分布式ram资源(distribute ram)
Q19:Xilinx中与全局时钟资源和DLL相关的硬件原语:
常用的与全局时钟资源相关的Xilinx器件原语包括:IBUFG,IBUFGDS,BUFG,BUFGP,BUFGCE,BUFGMUX,BUFGDLL,DCM等。关于各个器件原语的解释可以参考《FPGA设计指导准则》p50部分。
Q20:HDL语言的层次概念?
HDL语言是分层次的、类型的,最常用的层次概念有系统与标准级、功能模块级,行为级,寄存器传输级和门级。
Q21:查找表的原理与结构?
查找表(look-up-table)简称为LUT,LUT本质上就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16x1的RAM。 当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可
Q22:ic设计前端到后端的流程和eda工具?
设计前端也称逻辑设计,后端设计也称物理设计,两者并没有严格的界限,一般涉及到与工艺有关的设计就是后端设计。
1:规格制定:客户向芯片设计公司提出设计要求。
2:详细设计:芯片设计公司(Fabless)根据客户提出的规格要求,拿出设计解决方案和具体实现架构,划分模块功能。目前架构的验证一般基于systemC语言,对价后模型的仿真可以使用systemC的仿真工具。例如:CoCentric和Visual Elite等。
3:HDL编码:设计输入工具:ultra ,visual VHDL等
4:仿真验证:modelsim
5:逻辑综合:synplify
6:静态时序分析:synopsys的Prime Time
7:形式验证:Synopsys的Formality.
Q23:寄生效应在ic设计中怎样加以克服和利用(这是我的理解,ic设计过程中将寄生效应的怎样反馈影响设计师的设计方案)?
IC中各元件均制作于同一衬底,注定了元件与元件之间,元件与衬底之间存在寄生效应。某些寄生效应是分立电路所没有的,因此研究IC就必须了解这些寄生效应,产生寄生效应的原因减弱或消除寄生效应的方法,避免影响电路的性能,在可能的情况下,可以利用某些寄生效应构成电路所需的元件,简化设计线路。
比如采用的措施有:
增加n+埋层
①加大了寄生PNP晶体管的基区宽度
②形成了寄生PNP晶体管基区减速场
Q24:用filp-flop和logic-gate设计一个1位加法器,输入carryin和current-stage,输出
carryout和next-stage?
process(sig_intel)
begin
case sig_intel is
when "000" => carryout <= '0';
next_state <= '0';
when "001" => carryout <= '1';
next_state <= '0';
when "010" => carryout <= '1';
next_state <= '0';
when "011" => carryout <= '0';
next_state <= '1';
when "100" => carryout <= '1';
next_state <= '0';
when "101" => carryout <= '0';
next_state <= '1';
when "110" => carryout <= '0';
next_state <= '1';
when "111" => carryout <= '1';
next_state <= '1';
when others => carryout <= 'X';
next_state <= 'X';
end case;
end process;
25:设计一个自动饮料售卖机,饮料10分钱,硬币有5分和10分两种,并考虑找零,
1.画出fsm(有限状态机)
2.用verilog编程,语法要符合fpga设计的要求
3.设计工程中可使用的工具及设计大致过程?

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity drink_auto_sale is
port(clk: in std_logic;
reset:in std_logic;
sw101:in std_logic;
sw102:in std_logic;
buy : out std_logic;
back: out std_logic);
end drink_auto_sale;
architecture Behavioral of drink_auto_sale is
type state_type is(st0,st1);
signal cs ,ns : state_type;
begin
process(clk,reset)
begin
if(reset = '1') then
cs <= st0;
elsif(clk'event and clk = '1') then
cs <= ns;
end if;
end process;
process(reset ,cs)
begin
case cs is
when st0 => if( sw101 = '1') then
ns <= st1;
buy<= '0';
back<= '0';
elsif(sw102 = '1') then
ns <= st0;
buy<= '1';
back <= '0';
else
ns <= st0 ;
buy <= '0';
back <= '0';
end if;
when st1 => if(sw101 = '1') then
ns <= st0;
buy <= '1';
back <= '0';
elsif(sw102 = '1') then
ns <= st0;
buy <= '1';
back <= '1';
end if;
when others => ns <= st0;
buy<= '0';
back <= '0';
end case;
end process;
end Behavioral;
设计过程:设定三个状态:0分,5分;当状态为0分时,接收到5分信号脉冲后转为5分;接收到10分信号脉冲时,转到0分状态,同时弹出饮料,不找零;状态为5分时,接受到5分信号,弹出饮料,不找零,返回0分状态;当接受到10分状态时,弹出饮料,找零,并返回零分状态。
所用设计工具:ISE7.1,modelsim,synplify
(不知道为什么上面的状态机设计在synplify的RTL view中没能看到状态机流程图,所以状态转移图就没画)。
Q26:什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?
线与逻辑是两个输出信号相连可以实现与的功能。在硬件上,要用oc门来实现,由于不用 oc门可能使灌电流过大,而烧坏逻辑门. 同时在输出端口应加一个上拉电阻。Oc门就是集电极开路门。
Q27:什么是竞争与冒险现象?怎样判断?如何消除?
在组合电路中,某一输入变量经过不同途径传输后,到达电路中某一汇合点的时间有先有后,这种现象称竞争;由于竞争而使电路输出发生瞬时错误的现象叫做冒险。(也就是由于竞争产生的毛刺叫做冒险)。判断方法:代数法(如果布尔式中有相反的信号则可能产生竞争和冒险现象);卡诺图:有两个相切的卡诺圈并且相切处没有被其他卡诺圈包围,就有可能出现竞争冒险;实验法:示波器观测;
解决方法:1:加滤波电路,消除毛刺的影响;2:加选通信号,避开毛刺;3:增加冗余项消除逻辑冒险。
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表