logo资料库

全新fpga笔试100题.docx

第1页 / 共91页
第2页 / 共91页
第3页 / 共91页
第4页 / 共91页
第5页 / 共91页
第6页 / 共91页
第7页 / 共91页
第8页 / 共91页
资料共91页,剩余部分请下载后查看
IG牛逼,然而我下午在做题
【每日一题】一起学Verilog
001.
002.
003.
004.
005.
006.
007.
008.
0091.
010.
011.
012.
013.
014.
015.
016.
017.
018.
019.
020.
021.
022.
023.
024.
025.
4:经典例题 ★
026.
027.
028.
029.
030.
031.
032.
033.
034.
035.
036.
037.
038.
039.
040.
041.
042.
043.
044.
045.
046.
047.
048.
049.
050.
051.
052.
053.
054.
055.
056.
057.
058.
module fifo(clk,rst,wr_en,rd_en,data_in,data_out,e
input clk,rst;
input wr_en,rd_en;
input [7:0]data_in;//输入数据
output [7:0]data_out;//输出数据
output empty,full;//空满标志
wire empty,full;
reg [7:0]data_out;
reg [7:0] ram[15:0];//dual port RAM
reg [3:0] wr_ptr,rd_ptr;//写和读指针
reg [3:0] counter;//用来判断空满
always@(posedge clk)
begin
if(!rst)
begin
counter=0;
data_out=0;
wr_ptr=0;
rd_ptr=0;
end
else
begin
case({wr_en,rd_en})
2'b00: counter=counter;
2'b01:
begin
data_out=ram[rd_ptr];//先进先出,因此读的话依旧按照次序来
counter=counter-1;
rd_ptr=(rd_ptr==15)?0:rd_ptr+1;
end
2'b10:
begin
ram[wr_ptr]=data_in;//写操作
counter=counter+1;
wr_ptr=(wr_ptr==15)?0:wr_ptr+1;
end
2'b11:
begin
ram[wr_ptr]=data_in;//读写同时进行,此时counter不增加
data_out=ram[rd_ptr];
wr_ptr=(wr_ptr==15)?0:wr_ptr+1;
rd_ptr=(rd_ptr==15)?0:rd_ptr+1;
end
endcase
end
end
assign empty=(counter==0)?1:0;
assign full =(counter==15)?1:0;
endmodule
059.
060.
061.
062.
063.
064.
065.
066.
067.
068.
069.
070.
071.
072.
073.
074.
075.
076.
077.
078.
四、4位超前进位加法器的实现
4.1 原理
4.2 原理图
4.3 Verilog 实现4位超前加法器
079.
080.
081.
082.
083.
084.
085.
086.
087.
088.
089.
090.
091.
092.
093.
094.
095.
096.
097.
098.
099.
IG 牛逼,然而我下午在做题 ic7x24硅农 1 周前 IG 牛逼,然而我下午在做题。 LOL 我也玩过,我敢说我高二那年也是个网瘾少年吗(为啥别人玩叫电 竞,我玩就叫网瘾?)?后来高三前的那个暑假,大彻大悟,好好学习, 戒掉游戏。从那之后,直到现在,对我来说,一切游戏都索然无味(并没 有掩饰因为自己玩的菜)。 今天都在刷 IG 牛逼,我下午却浑然不觉的在做题。事情是这样的,昨 天突然给自己立了个 flag。 这 99 道题目来自 微信订阅号:不忘初芯 出的题目,一起学 Verilog, 一共 99 道题。每天一道,第一季已经完成。这些题目从易到难,也没有正 确答案,在一起学 Verilog 这个免费星球里,办完了第一季,我不知道有多 少人完成,但是我是进去一天,没做题,就被淘汰了出来。 然后就从我立了 flag 开始,其实其中很多题目都是比较基础的题目, 当然也有些有难度的。希望朋友们有兴趣的也可以参与讨论进来,做题目 就发表在知识星球里面,有问题也可以在星球里提问,微信群中讨论。自 我约束,每天一题,周末无休。一天也可以多做几道,但希望不要间断。 一起进星球学习吧! 第二个题已经做完了,数集不会呀,查了一些资料,慢慢体会理 解。欢迎朋友们来怼,来指点!
002 题:反相器的速度与哪些因素有关?什么是转换时间(Transition Time)和传播延迟(Propagation Delay)? 反相器的速度与哪些因素有关。 1. 电容(负载电容、自载电容、连线电容)较小,漏端扩散区的面积 应尽可能小。输入电容要考虑: (1)Cgs 随栅压而变化(2)密勒效应 (3)自举效应 2. 加大晶体管的尺寸(驱动能力),使晶体管的等效导通电阻(输出 电阻)较小。但这同时加大自载电容和负载电容(下一级晶体管的输入电 容)。 3. 提高电源电压,提高电源电压可以降低延时,即用功耗换取性能但 超过一定程度后改善有限。电压过高会引起可靠性问题(氧化层击穿、热 电子等)。 Transition Time(转换时间):上升时间:从 10%Vdd 上升到 90%Vdd 的时间,下降时间 L 从 90%Vdd 下降到 10%dd 的时间。上升时间和下降 时间统称为 Transition Time,也有定义为 20%到 80%。 Propagation Delay(传播延时):在输入信号变化到 50%Vdd 到输 出信号变化到 50%Vdd 之间的时间。 题目都在下面了,转载自不忘初芯的文章一起学 Verilog!
【每日一题】一起学 Verilog 学着跟时间做朋友。 001. 画出 CMOS 反相器的电路原理图。 002. 反向器的速度与哪些因素有关?什么是转换时间(transition time) 和传播延迟(propagation delay)? 003. 解释一下 Vih,Vil,Vol,Voh,Vt。 004.
什么是原码,反码,补码,符号-数值码。以 4bit 为例,给出各自表 示的数值范围。 十进制转换为二进制编码: 127 -127 127.375 -127.375 005. 006. 画出 CMOS 三态缓冲器的电路原理图,解释一下高阻态。 什么是 open-drain output? 007. 008.
只用 2 输入 mux,实现与,或,非,异或。2 输入 mux 定义为 o = s ? a : b; out = (a == 1’b0) ? 1’b0 : (b == 1’b0 ? 1’b0 : 1’b1); out = (a == 1’b1) ? 1’b1 : (b == 1’b1 ? 1’b1 : 1’b0); 0091. 相同面积的 cmos 与非门和或非门哪个更快? 010. 说明代码中 w1 和 w2 对应电路的具体区别: wire [2:0] val; wire w1 = val > 0; wire w2 = val >= 0; val[2] 0 0 0 0 1 1 1 1 val[1] 0 0 1 1 0 0 1 1 val[0] 0 1 0 1 0 1 0 1 W1 0 1 1 1 1 1 1 1 C BA 0 1 00 0 1 01 1 1 11 1 1 10 1 1
W1 = !val[2] | !val[1] | !val[0]; 011. 什么是竞争和冒险? 组合逻辑电路中,同一信号经不同的路径传输后,到达电路中某一会合点的时间有先有后, 这种现象称为逻辑竞争,组合电路中输出的毛刺的现象称为冒险。 012. 设计 1bit 全加器,采用 verilog 描述并画出门级电路图。 a 0 0 0 0 1 1 1 b 0 0 1 1 0 0 1 Cin sum co 0 1 0 1 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1
1 1 1 1 1 Sum = a^b^cin; Co = a&b | a&cin | b&cin; 013. 设计 2-4 译码器。采用 verilog 描述并画出门级电路图。 014. 设计 BCD 译码器,输入 0~9。采用 verilog 描述并画出门级电路图。 module BCD #(parameter LEN_IN = 4, parameter LEN_OUT = 7) (//input input [LEN_IN - 1 : 0] data_in, //output
output reg [LEN_OUT - 1 : 0] data_out ); always@( data_in) begin case(data_in) 4'b0001: data_out = 7'b111_1111; 4'b0010: data_out = 7'b000_1100; 4'b0011: data_out = 7'b011_0110; 4'b0100: data_out = 7'b100_1101; 4'b0101: data_out = 7'b000_0001; 4'b0110: data_out = 7'b000_0010; 4'b0111: data_out = 7'b000_0100; 4'b1000: data_out <= 7'b001_0000; 4'b1001: data_out = 7'b100_0000; default: data_out = 7'b000_0000;
分享到:
收藏