fpga公司笔试题总结
1、给你一堆名词,举例他们的作用。有PCI、ECC(?)、DDR、interrupt、pipeline中断的类型,作用。ATPG:Automatic Test Pattern Generator自动测试相量生成
CMOS:Complement Metel Oxide Semi-conduct
ECO:Engineering Change Order工程修改订单。
PCI:PCI是Peripheral Component Interconnect(外设部件互连标准)的缩写PCI是由Intel公司1991年推出的一种局部总线。最早提出的PCI 总线工作在33MHz 频率之下,传输带宽达到了133MB/s(33MHz X 32bit/8),它为显卡,声卡,网卡,MODEM等设备提供了连接接口。
ECC:erro checking and correcting 数据校验纠错,应用在内存上 ECC内存
DDR:内存 double date rate
Interrupt:中断 分为硬件中断和软件中断。硬件中断分为可屏蔽中断和不可屏蔽中断。
Pipeline:流水线采用流水线技术的CPU使用指令重叠的办法,即在一条指令还没有处理完时,就开始处理下一条指令。典型的流水线将每一条机器指令分成5步,即取指、译码、取操作数(或译码2)、执行、回写。在理想条件下,平均每个时钟周期可以完成一条指令而所谓“超级流水线处理”是将机器指令划分为更多级的操作,以减轻每一级的复杂程度。在流水线的每一步中,如果需要执行的逻辑操作少一些,则每一步就可以在较短的时间内完成。
TLB:Translate Look side Buffers,转换旁视缓冲器
apic: Advanced Programmable Interrupt Controller高级程序中断控制器.
DP :Dual Processing双处理器 2、用状态机实现10010码的探测,如x=1001001000 z=0000100100(输出)
module check(rst_i,clk_i,data_i,data_o);
inputrst_i,clk_i;
inputdata_i;
output data_o;
reg current_state,next_state;
parameter
idle="0000",
state1="0001",
state2="0010",
state3="0100",
state4="1000";
always@(posedge clk_i or negedge rst_i)
if (!rst_i)
current_state<=idle;
else
current_state<=next_state;
always@(current_state,data_i)
case(current_state)
idle : if (data_i==1)next_state=state1;
else next_state=idle;
state1: if (data_i==0)next_state=state2;
else next_state=idle;
state2: if (data_i==0)next_state=state3;
else next_state=idle;
state3: if (data_i==1)next_state=state4;
else next_state=idle;
state4: if (data_i==0)next_state=idle;
else next_state=idle;
endcase
assign data_o= (current_state==state4);
endmodule
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity check is
port(
rst_i :instd_logic;
clk_i :instd_logic;
data_i:instd_logic;
data_o:out std_logic);
end entity;
--}} End of automatically maintained section
architecture behave of check is
type state is (state_a,state_b,state_c,state_d,state_e);
signal current_state:state;
signal next_state:state;
begin
--type state is (state_a,state_b,state_c,state_d);
process(rst_i,clk_i)
begin
if rst_i='1' then
data_o<='0';
current_state<=state_a;
elsif rising_edge(clk_i) then
current_state<=next_state;
end if;
end process;
process(current_state,data_i)
begin
casecurrent_state is
when state_a => if data_i='1' then
next_state<=state_b;
else
next_state<=state_a;
end if;
when state_b => if data_i='0' then
next_state<=state_c;
else
next_state<=state_a;
end if;
when state_c => if data_i='0' then
next_state<=state_d;
else
next_state<=state_a;
end if;
when state_d => if data_i='1' then
next_state<=state_e;
else
next_state<=state_a;
end if;
when state_e => if data_i='0' then
next_state<=state_a;
else
next_state<=state_a;
end if;
when others => null;
end case;
end;
data_o <='1' when current_state = state_e else '0';
end; 3、169.6825 好像是这个东西,写出十六进制表示
A9.AEB85 0.6825×16取整、再用小数部分取整 4、cache结构、一致性 及 替代算法。
替代算法:为了保证CPU访问时有较高的命中率,缓存中的内容应该按一定的算法替换。一种较常用的算法是“最近最少使用算法”(LRU算法),它是将最近一段时间内最少被访问过的行淘汰出局。因此需要为每行设置一个计数器,LRU算法是把命中行的计数器清零,其他各行计数器加1。当需要替换时淘汰行计数器计数值最大的数据行出局。这是一种高效、科学的算法,其计数器清零过程可以把一些频繁调用后再不需要的数据淘汰出缓存,提高缓存的利用率。
结构: 数据存储器和标志存储器,还有使用标志位。
映射:直接映射,N路相关映射,完全相关映射。 5.100个棋子,两个人按顺序取,每人每次至少取一个,至多取10个.....
取得最后一个者为胜者...问你会选择先取还是后取?为什么?
先取取一个剩99个,对方不管去多少,下一次将它取剩88个 6 什么是Setup 和Holdup时间?
建立时间(Setup Time)和保持时间(Hold time)。建立时间是指在时钟边沿前,数据信号需要保持不变的时间。保持时间是指时钟跳变边沿后数据信号需要保持不变的时间。见图1。
如果不满足建立和保持时间的话,那么DFF将不能正确地采样到数据,将会出现metastability的情况。
如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时间,那么超过量就分别被称为建立时间裕量和保持时间裕量。 7 什么是竞争与冒险现象?怎样判断?如何消除?
在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争。
产生毛刺叫冒险。如果布尔式中有相反的信号则可能产生竞争和冒险现象。
解决方法:一是添加布尔式的消去项,二是在芯片外部加电容。 8、 用D触发器实现2倍分频的逻辑电路?
Verilog描述:
module divide2( clk , clk_o, reset);
input clk , reset;
output clk_o;
wire in;
reg out ;
always @ ( posedge clk or posedge reset)
if ( reset)
out <= 0;
else
out <= in;
assign in = ~out;
assign clk_o = out;
endmodule 9、什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?
线与逻辑是两个输出信号相连可以实现与的功能。在硬件上,要用oc门来实现,由于不用oc门可能使灌电流过大,而烧坏逻辑门 同时在输出端口应加一个上拉电阻。 9、什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?
线与逻辑是两个输出信号相连可以实现与的功能。在硬件上,要用oc门来实现,由于不用oc门可能使灌电流过大,而烧坏逻辑门 同时在输出端口应加一个上拉电阻。