集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 20218|回复: 41

fpga公司笔试题总结

[复制链接]
fpga 发表于 2010-4-8 19:10:30 | 显示全部楼层 |阅读模式
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 ual Processing双处理器
 楼主| fpga 发表于 2010-4-8 19:10:56 | 显示全部楼层
2、用状态机实现10010码的探测,如x=1001001000 z=0000100100(输出)
  
module check(rst_i,clk_i,data_i,data_o);
        input  rst_i,clk_i;
        input  data_i;
        output data_o;
        reg[3:0] current_state,next_state;
        parameter[3:0]
                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 :in  std_logic;
        clk_i :in  std_logic;
        data_i:in  std_logic;
        data_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
                case  current_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;
 楼主| fpga 发表于 2010-4-8 19:11:14 | 显示全部楼层
3、169.6825 好像是这个东西,写出十六进制表示
A9.AEB85    0.6825×16取整、再用小数部分取整
 楼主| fpga 发表于 2010-4-8 19:11:37 | 显示全部楼层
4、cache结构、一致性 及 替代算法。
替代算法:为了保证CPU访问时有较高的命中率,缓存中的内容应该按一定的算法替换。一种较常用的算法是“最近最少使用算法”(LRU算法),它是将最近一段时间内最少被访问过的行淘汰出局。因此需要为每行设置一个计数器,LRU算法是把命中行的计数器清零,其他各行计数器加1。当需要替换时淘汰行计数器计数值最大的数据行出局。这是一种高效、科学的算法,其计数器清零过程可以把一些频繁调用后再不需要的数据淘汰出缓存,提高缓存的利用率。
结构: 数据存储器和标志存储器,还有使用标志位。
映射:直接映射,N路相关映射,完全相关映射。
 楼主| fpga 发表于 2010-4-8 19:11:53 | 显示全部楼层
5.100个棋子,两个人按顺序取,每人每次至少取一个,至多取10个.....
取得最后一个者为胜者...问你会选择先取还是后取?为什么?
先取取一个剩99个,对方不管去多少,下一次将它取剩88个
 楼主| fpga 发表于 2010-4-8 19:12:05 | 显示全部楼层
6 什么是Setup 和Holdup时间?
建立时间(Setup Time)和保持时间(Hold time)。建立时间是指在时钟边沿前,数据信号需要保持不变的时间。保持时间是指时钟跳变边沿后数据信号需要保持不变的时间。见图1。
如果不满足建立和保持时间的话,那么DFF将不能正确地采样到数据,将会出现metastability的情况。
如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时间,那么超过量就分别被称为建立时间裕量和保持时间裕量。
 楼主| fpga 发表于 2010-4-8 19:12:24 | 显示全部楼层
7 什么是竞争与冒险现象?怎样判断?如何消除?
在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争。
产生毛刺叫冒险。如果布尔式中有相反的信号则可能产生竞争和冒险现象。
解决方法:一是添加布尔式的消去项,二是在芯片外部加电容。
 楼主| fpga 发表于 2010-4-8 19:12:39 | 显示全部楼层
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
 楼主| fpga 发表于 2010-4-8 19:12:54 | 显示全部楼层
9、  什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?
   线与逻辑是两个输出信号相连可以实现与的功能。在硬件上,要用oc门来实现,由于不用oc门可能使灌电流过大,而烧坏逻辑门 同时在输出端口应加一个上拉电阻。
 楼主| fpga 发表于 2010-4-8 19:12:57 | 显示全部楼层
9、  什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?
   线与逻辑是两个输出信号相连可以实现与的功能。在硬件上,要用oc门来实现,由于不用oc门可能使灌电流过大,而烧坏逻辑门 同时在输出端口应加一个上拉电阻。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-4-29 09:19 , Processed in 0.100097 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表