2023年面试的资料

上传人:回**** 文档编号:166663913 上传时间:2022-11-01 格式:DOC 页数:68 大小:69.50KB
收藏 版权申诉 举报 下载
2023年面试的资料_第1页
第1页 / 共68页
2023年面试的资料_第2页
第2页 / 共68页
2023年面试的资料_第3页
第3页 / 共68页
资源描述:

《2023年面试的资料》由会员分享,可在线阅读,更多相关《2023年面试的资料(68页珍藏版)》请在装配图网上搜索。

1、面试的资料1 什么是Setup 和Holdup时间? 建立时间(Setup Time)和保持时间(Hold time)。建立时间是指在时钟边沿前,数据信号需要保持不变的时间。保持时间是指时钟跳变边沿后数据信号需要保持不变的时间。见图1。 假如不满足建立和保持时间的话,那么DFF将不能对的地采样到数据,将会出现metastability的情况。 假如数据信号在时钟沿触发前后连续的时间均超过建立和保持时间,那么超过量就分别被称为建立时间裕量和保持时间裕量。 图1 建立时间和保持时间示意图 2什么是竞争与冒险现象?如何判断?如何消除? 在组合逻辑中,由于门的输入信号通路中通过了不同的延时,导致到达该

2、门的时间不一致叫竞争。 产生毛刺叫冒险。 假如布尔式中有相反的信号则也许产生竞争和冒险现象。 解决方法:一是添加布尔式的消去项,二是在芯片外部加电容。 3 用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

3、 = out; endmodule 图形描述: 4 什么是线与逻辑,要实现它,在硬件特性上有什么具体规定? 线与逻辑是两个输出信号相连可以实现与的功能。在硬件上,要用oc门来实现,由于不用oc门也许使灌电流过大,而烧坏逻辑门。 同时在输出端口应加一个上拉电阻。 5 什么是同步逻辑和异步逻辑? 同步逻辑是时钟之间有固定的因果关系。 异步逻辑是各时钟之间没有固定的因果关系。 6 请画出微机接口电路中,典型的输入设备与微机接口逻辑示意图(数据接口、控制接口、所存器/缓冲器)。 7 你知道那些常用逻辑电平?TTL与COMS电平可以直接互连吗? 12,5,3.3 TTL和CMOS不可以直接互连,由于TT

4、L是在0.3-3.6V之间,而CMOS则是有在12V的有在5V的。CMOS输出接到TTL是可以直接互连。TTL接到CMOS需要在输出端口加一上拉电阻接到5V或者12V。 8 可编程逻辑器件在现代电子设计中越来越重要,请问:你所知道的可编程逻辑器件有哪些? PAL,PLD,CPLD,FPGA。 9 试用VHDL或VERILOG、ABLE描述8位D触发器逻辑。 module dff8(clk , reset, d, q); input clk; input reset; input 7:0 d; output 7:0 q; reg 7:0 q; always (posedge clk or pos

5、edge reset) if(reset) q = 0; else q = d; endmodule 10 设想你将设计完毕一个电子电路方案。请简述用EDA软件(如PROTEL)进行设计(包 括原理图和PCB图)到调试出样机的整个过程。在各环节应注意哪些问题? 电源的稳定上,电容的选取上,以及布局的大小。 11 用逻辑门和cmos电路实现ab+cd 12 用一个二选一mux和一个inv实现异或 13 给了reg的setup,hold时间,求中间组合逻辑的delay范围。 Delay period - setup - hold 14 如何解决亚稳态 亚稳态是指触发器无法在某个规定期间段内达成一个

6、可确认的状态。当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才干稳定在某个对的的电平上。在这个稳定期间,触发器输出一些中间级电平,或者也许处在振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。 15 用verilog/vhdl写一个fifo控制器 涉及空,满,半满信号。 16 用verilog/vddl检测stream中的特定字符串 分状态用状态机写。 17 用mos管搭出一个二输入与非门。 18 集成电路前段设计流程,写出相关的工具。 19 名词IRQ,BIOS,USB,VHDL,SDR IRQ: Interrupt ReQuest BIO

7、S: Basic Input Output System USB: Universal Serial Bus VHDL: VHIC Hardware Description Language SDR: Single Data Rate 20 unix 命令cp -r, rm,uname 21 用波形表达D触发器的功能 22 写异步D触发器的verilog module module dff8(clk , reset, d, q); input clk; input reset; input d; output q; reg q; always (posedge clk or posedge r

8、eset) if(reset) q = 0; else q = d; endmodule 23 What is PC Chipset? 芯片组(Chipset)是主板的核心组成部分,按照在主板上的排列位置的不同,通常分为北桥芯片和南桥芯片。北桥芯片提供对CPU的类型和主频、内存的类型和最大容量、ISA/PCI/AGP插槽、ECC纠错等支持。南桥芯片则提供对KBC(键盘控制器)、RTC(实时时钟控制器)、USB(通用串行总线)、Ultra DMA/33(66)EIDE数据传输方式和ACPI(高级能源管理)等的支持。其中北桥芯片起着主导性的作用,也称为主桥(Host Bridge)。 除了最通用的

9、南北桥结构外,目前芯片组正向更高级的加速集线架构发展,Intel的8xx系列芯片组就是这类芯片组的代表,它将一些子系统如IDE接口、音效、MODEM和USB直接接入主芯片,可以提供比PCI总线宽一倍的带宽,达成了266MB/s。 24 用传输门和反向器搭一个边沿触发器 25 画状态机,接受1,2,5分钱的卖报机,每份报纸5分钱library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity pdiv is port(clk:in std_logic; y : out std_logic); en

10、d pdiv; architecture bh of pdiv is signal loadn,loadm,a,b :std_logic; signal qn,qm: std_logic_vector(2 downto 0); begin process (clk,loadn,loadm) begin if loadn =1 then qn=010; elsif clkevent and clk=1 then qn=qn-1; end if; if loadm=1 then qm=010; elsif clkevent and clk=0 then qm=qm-1; end if; end p

11、rocess; loadn=qn(2); loadm=qm(2); a=qn(1); b=qm(1); y 和 = 有什么区别? 4. 画一个D触发器的原理图(门级),并且用verilog gate level表达出来; 5. 用最少的Mos管画出一个与非门; 6. 写一段finite state machine(重要考察coding style);假如触发器的setup time/hold time不满足,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿到来时,数据才干被打入触发器。 在同步系统中,假如触发器的setup time/hold time不满足,就也许产生亚稳态(Met

12、astability),导致采样错误。此时触发器输出端Q在有效时钟沿之后比较长的一段时间处在不拟定的状态,在这段时间里Q端毛刺、振荡、固定的某一电压值,而不是等于数据输入端D的值。这段之间成为决断时间(resolution time)。通过resolution time之后Q端将稳定到0或1上,但是究竟是0还是1,这是随机的,与输入没有必然的关系。 只要系统中有异步元件,亚稳态就是无法避免的,因此设计的电路一方面要减少亚稳态导致错误的发生,另一方面要使系统对产生的错误不敏感。前者需要同步来实现,而后者根据不同的设计应用有不同的解决办法 题目是都用英文写的,我用汉字来表达 1, a为输入端,b为

13、输出端,假如a连续输入为1101则b输出为1,否则为0 例如a: b: 请画出state machine 2, 请用RTL描述上题state machine 3,library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity check1101 is Port ( a : in std_logic; clk : in std_logic; b : out std_logic); end check1101; architecture

14、Behavioral of check1101 is signal p : std_logic_vector(0 to 3); begin serial2parallel: process(clk) begin if clkevent and clk=1 then p=a&p(0 to 2); end if; end process; check: process(clk,p) begin if clkevent and clk=1 then if p = 1101 then b= 1; else b= 0; end if; end if; end process; end Behaviora

15、l; 我的一个同事说的。 你的p其实就是一个状态,应当是设两个状态就足够了:1101和OTHERS 这只是一个典型的设计题目,并且用状态机做并没有使设计复杂化 你下面的设计会实现有两个延时,但是我相信出题的人不会在意这个的。 尚有就是,状态机设计一般都有reset的,你要加上这个端口才比较好,当然不加也不算不完整吧 此题scholes描述的,只有一个延时。修改如下: library ieee; use ieee.std_logic_1164.all; use ieee.STD_LOGIC_ARITH.all; use ieee.STD_LOGIC_UNSIGNED.all; entity te

16、st is port ( rst : in std_logic; clk : in std_logic; a : in std_logic; b : out std_logic ); end test; architecture test of test is signal p: std_logic_vector(3 downto 0 ); begin Start:process (rst, clk, p, a) begin - process if rst = 1 then if clkevent and clk = 1 then p=p(2 downto 0)&a; end if; els

17、e p=0000; end if; end process; Start1:process (rst, clk, p) begin - process if rst = 1 then if clkevent and clk = 1 then if p = 1101 then b=1; else b=0; end if; end if; else b=0; end if; end process; end test; 本题考察运用有限状态机进行时序逻辑的设计 下面用verilog进行描述:(有限状态机提供6个状态) module sequence_detect(in,out,clk,rst,st

18、ate); output out; output2:0state; input clk; input rst; input in; reg2:0state; wire out; parameter IDLE=d0, A=d1, B=d2, C=d3, D=d4, E=d5; assign out=(state=D)&(in=1)?1:0; always (posedge clk) begin if(!rst) begin state=IDLE; end else case(state) IDLE:if(in=1) / the first code is right, storing the s

19、tate A / begin state=A; end A:if(in=1) / the second code is right, storing the state B / begin state=B; end else begin state=IDLE; end B:if(in=0) / the third code is right, storing the state C / begin state=C; end else begin state=E; end C:if(in=1) / the fourth code is right, storing the state D / b

20、egin state=D; / out=1; end else begin state=IDLE; / out=0; end D:if(in=1) / connecting the front inputted sequence,again introducing one,storing state B / begin state=B; end else begin state=IDLE; end E:if(in=0) begin state=C; end else begin state=B; end default:state=IDLE; endcase end endmodule lib

21、rary ieee; use ieee.std_logic_1164.all; use ieee.STD_LOGIC_ARITH.all; use ieee.STD_LOGIC_UNSIGNED.all; entity test is port ( rst : in std_logic; clk : in std_logic; a : in std_logic; b : out std_logic ); end test; architecture test of test is signal p: std_logic_vector(2 downto 0 ); begin Start:proc

22、ess (rst, clk) begin if rst = 1 then p=000; if clkevent and clk = 1 then p=p(1 downto 0)&a; end if; end if; end process; Start1:process (rst, clk) begin - process if rst = 1 then b=0; if clkevent and clk = 1 then if p = 110 and a=1 then b=1; else b=0; end if; end if; end if; end process; end test; 有

23、两段代码 1。proceee(a,b,c,sel,y) begin if (sel) y = a+b; else y = a+c; end 2.y = sel ? a+b : a+c; 面试官说第一中表达方法是先选后加,所以电路实现是一个选择器和一个加法器 第二种方法是先加后选,用到两个加法器和一个选择器,所以他说第一种表达方式要好一些。 查了一下书,发现面试官说的并不全对,一般来说,综合工具会自动的优化,一般只会综合出一个加法器和一个选择器 先选后加是加法器共用,节省面积 先加后选是用面积换时间,电路的工作速度更快些。为了实现逻辑(A XOR B)OR (C AND D),请选用以下逻辑中的

24、一种,并说明为什么? 1)INV 2)AND 3)OR 4)NAND 5)NOR 6)XOR 我没有做出来,请大家帮忙看看 我想了一下,用与非是肯定可以实现的 1。与非门的两个输入连在一起就成了非门 2。或门可以用与非和非门搭建 或非其实也可以 1。或非的两个输入PAD连在一起成非门 2。与门可以用或非门和非门搭建 奇数分频(6或者3) module s1 (/ ALTERA_ARGS_BEGIN DO NOT REMOVE THIS LINE! clkin, clkout, s1, s2 / ALTERA_ARGS_END DO NOT REMOVE THIS LINE! );/ Port

25、Declaration / ALTERA_IO_BEGIN DO NOT REMOVE THIS LINE! input clkin; output clkout, s1, s2; / ALTERA_IO_END DO NOT REMOVE THIS LINE! wire s1,s2; reg 1:0 step1, step2; always (posedge clkin) begin case (step1) 2b00: step1=2b01; 2b01: step1=2b10; 2b10: step1=2b00; default :step1=2b00; endcase end alway

26、s (negedge clkin) begin case (step2) 2b00: step2=2b01; 2b01: step2=2b10; 2b10: step2=2b00; default :step2=2b00; endcase end assign clkout=step11|step21; assign s1=step11; assign s2=step21; endmodule testbench: timescale 1ns/1ns module s1_tb; reg clk_in; wire clk_out,s1, s2; always #50 clk_in=clk_in;

27、 initial begin clk_in=0; #1000 $stop; end s1 s10(.clkin(clk_in), .clkout(clk_out), .s1(s1), .s2(s2); endmodule 独立晶振 一个10m一个15m ,10m向15m的传输数据问怎么实现 我说小数分频成10m内部时钟,再采样 求正解 数据量少用握手信号,数据量多用FIFO,假如有很高的时钟资源可以考虑用高时钟采样,但是不是很好的方法,分频成5M是肯定不行的,提成相同频率也是异步信号 1.setup和holdup时间,区别. 2.多时域设计中,如何解决信号跨时域 3.latch与registe

28、r的区别,为什么现在多用register.行为级描述中latch如何产生的 4.BLOCKING NONBLOCKING 赋值的区别 5.MOORE 与 MEELEY状态机的特性 6.IC设计中同步复位与 异步复位的区别 7.实现N位Johnson Counter,N= 8.用FSM实现101101的序列检测模块 2.多时域设计中,如何解决信号跨时域: 情况比较多,假如简朴回答的话就是:跨时域的信号要通过同步器同步,防止亚稳态传播。例如:时钟域1中的一个信号,要送届时钟域2,那么在这个信号送届时钟域2之前,要先通过时钟域2的同步器同步后,才干进入时钟域2。这个同步器就是两级d触发器,其时钟为时

29、钟域2的时钟。这样做是怕时钟域1中的这个信号,也许不满足时钟域2中触发器的建立保持时间,而产生亚稳态,由于它们之间没有必然关系,是异步的。这样做只能防止亚稳态传播,但不能保证采进来的数据的对的性。所以通常只同步很少位数的信号。比如控制信号,或地址。当同步的是地址时,一般该地址应采用格雷码,由于格雷码每次只变一位,相称于每次只有一个同步器在起作用,这样可以减少犯错概率,象异步FIFO的设计中,比较读写地址的大小时,就是用这种方法。 假如两个时钟域之间传送大量的数据,可以用异步FIFO来解决问题。 6.IC设计中同步复位与 异步复位的区别 假如光说概念的话:同步复位在时钟沿采复位信号,完毕复位动作

30、。 异步复位不管时钟,只要复位信号满足条件,就完毕复位动作。 象芯片的上电复位就是异步复位,由于这时时钟振荡器不一定起振了,也许还没有时钟脉冲。异步复位很容易受到复位端信号毛刺的影响,比如复位端信号由组合逻辑组成,那组合逻辑输出产生的冒险,就会使触发器错误的复位。 4.BLOCKING NONBLOCKING 赋值的区别 这个问题可参考的资料很多,讲的都很透彻,可以找一下。基本用法就是常说的“组合逻辑用BLOCKING,时序逻辑用NONBLOCKING”。 3.latch与register的区别,为什么现在多用register.行为级描述中latch如何产生的 区别不多说。为什么避免使用lat

31、ch,由于设计中用latch会使设计后期的静态时序分析变的困难(必须用的地方当然另当别论)。 行为级描述中latch产生的因素:多由于构造组合逻辑电路时,使用if或case语句,没有把所有的条件给足,导致没有提到的条件,其输出未知。或者是每个条件分支中,没有给出所有输出的值,这就会产生latch。所以构造组合逻辑电路时,其always语句中的敏感信号必须涉及所有的输入端,每个条件分支必须把所有的输出端的值都给出来。 1.setup和holdup时间,区别. 建立时间:触发器在时钟沿来到前,其数据输入端的数据必须保持不变的时间 保持时间:触发器在时钟沿来到后,其数据输入端的数据必须保持不变的时间

32、 1.模拟电路设计 基础知识(笔试时候容易碰到的题目) 1.最基本的如三极管曲线特性(太低极了点) 2.基本放大电路,种类,优缺陷,特别是广泛采用差分结构的因素 3.反馈之类,如:负反馈的优点(带宽变大) 4.频率响应,如:怎么才算是稳定的,如何改变频响曲线的几个方法 5.锁相环电路组成,振荡器(比如用D触发器如何搭) 6.A/D电路组成,工作原理 假如公司做高频电子的,也许还要RF知识,调频,鉴频鉴相之类,不一一列举 太底层的MOS管物理特性感觉一般不大会作为笔试面试题,由于全是微电子物理,公 式推导太罗索,除非面试出题的是个老学究 ic设计的话需要熟悉的软件adence, Synopsys

33、, Advant,UNIX当然也要大约会操作 实际工作所需要的一些技术知识(面试容易问到) 如电路的低功耗,稳定,高速如何做到,调运放,布版图注意的地方等等,一般会针 对简历上你所写做过的东西具体问,肯定会问得很细(所以别把什么都写上,精通之类的 词也别用太多了),这个东西各个人就不同样了,不好说什么了。 2.数字电路设计 当然必问Verilog/VHDL,如设计计数器 逻辑方面数字电路的卡诺图化简,时序(同步异步差异),触发器有几种(区别,优 点),全加器等等 比如:设计一个自动售货机系统,卖soda水的,只能投进三种硬币,要对的的找回钱数 1.画出fsm(有限状态机) 2.用verilog

34、编程,语法要符合fpga设计的规定 系统方面:假如简历上还说做过cpu之类,就会问到诸如cpu如何 工作,流水线之类 的问题 3.单片机、DSP、FPGA、嵌入式方面(从没碰过,就大约知道几个名字胡扯几句,欢迎拍 砖,也欢迎牛人帮忙补充) 如单片机中断几个/类型,编中断程序注意什么问题 DSP的结构(冯.诺伊曼结构吗?) 嵌入式解决器类型(如ARM),操作系统种类(Vxworks,ucos,winCE,linux),操作系统方 面偏CS方向了,在CS篇里面讲了 4.信号系统基础 拉氏变换与Z变换公式等类似东西,随便翻翻书把 如.h(n)=-a*h(n-1)+b*(n) a.求h(n)的z变换

35、b.问该系统是否为稳定系统 c.写出F IR数字滤波器的差分方程 以往各种笔试题举例 运用4选1实现F(x,y,z)=xz+yz 用mos管搭出一个二输入与非门。 用传输门和倒向器搭一个边沿触发器 用运算放大器组成一个10倍的放大器 微波电路的匹配电阻。 名词解释,无聊的外文缩写罢了,比如PCI、ECC、DDR、interrupt、pipeline IRQ,BIOS,USB,VHDL,VLSI VCO(压控振荡器) RAM (动态随机存储器),FIR IIR DFT(离散 傅立叶变换) 或者是中文的,比如 a量化误差 b.直方图 c.白平衡 共同的注意点1.一般情况下,面试官重要根据你的简历提

36、问,所以一定要对自己负责,把简历上的东 西搞明白;2.个别招聘针对性特别强,就招目前他们确的方向的人,这种情况下,就要投其所好, 尽量介绍其所关心的东西。 3.其实技术面试并不难,但是由于很多东西都忘掉了,才觉得有些难。所以最佳在面试 前把该看的书看看。 4.虽然说技术面试是实力的较量与体现,但是不可否认,由于不用面试官/公司所专领域 及爱好不同,也有面试也有很大的偶尔性,需要冷静对待。不能由于被拒,就否认自己 或责骂公司。 5.面试时要take it easy,对越是自己钟情的公司越要这样。 1集成电路设计前端流程及工具。 2。FPGA和ASIC的概念,他们的区别 3。LATCH和DFF的概

37、念和区别 4。用DFF实现二分频。 5。用VERILOG或VHDL写一段代码,实现消除一个glitch 6。给一个表达式f=xxxx+xxxx+xxxxx+xxxx用最少数量的与非门实现(事实上就是化简) 7。用VERILOG或VHDL写一段代码,实现10进制计数器。 8。给出一个门级的图,又给了各个门的传输延时,问关键途径是什么,还问给出输入,使得输出依赖于关键途径。 9。A,B,C,D,E进行投票,多数服从少数,输出是F(也就是假如A,B,C,D,E中1的个数比0多,那么F输出为1,否则F为0),用与非门实现,输入数目没有限1. 可参考各EDA厂商的开发工具 2. FPGA与ASIC的可参

38、阅各种EDA相关书籍。 3. LATC是H锁存器,DFF是触发器,其电路形式完全不同。 4. always (posedge clk) if (reset) begin sel = 1; clk1 = 1; clk2 = 1; end else begin sel = sel; if (sel) clk1 = clk1; else clk2 = clk2; end 5. glitch重要发生在组合逻辑电路输出,可以加DFF输出稳定信号 6,7,8,9: 。制。 2负数与正数相乘的问题 31010(-6)*0010(2) 用补码相乘时应当进行相应的符号扩展,比如上面是4bit相乘,结果应当为8b

39、it。这样符号扩展后分别为11111010和00000010,然后再用这两个数直接相乘,结果为,取其低8位11110100,作为-6*2的结果。这也是个补码形式,再判断一下高位恢复为原码,得到结果。 以前讨论过相关问题,可以翻出来看看 检测信号的上升沿LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY sync IS PORT(clk: IN STD_LOGIC; rst: IN STD_LOGIC; sync_in: IN STD_LOGIC; sync_out: OUT STD_LOGIC); END sync; ARCHITECTURE a

40、rch OF sync IS SIGNAL sync_int1, sync_int2: STD_LOGIC; BEGIN - PROCESS(clk, rst, sync_in) BEGIN IF rst=0 THEN sync_out=0; ELSIF rising_edge(clk) THEN sync_int1=sync_in; sync_int2=sync_int1; IF (sync_int1=1 AND sync_int2=0) THEN sync_out=1; ELSE sync_out=0; END IF; END IF; END PROCESS; END arch; 并入串出

41、? library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity piso is port( datain :in std_logic_vector(39 downto 0); clk : in std_logic; nLoad:in std_logic; data_out: out std_logic); end piso; architecture Behavioral of piso is signal q: std_logi

42、c_vector(39 downto 0); begin process (nLoad,clk) begin if nLoad= 0 then q=datain; elsif clkevent and clk=1 then q(1)=q(0); for i in 1 to 39 loop q(i)=q(i-1); end loop; end if; end process; process (nLoad,clk) begin if nLoad=0 then data_out=0; elsif clkevent and clk=1 then data_out =q(39); end if; en

43、d process; end Behavioral; 把所有的39改成15就可以了 有一些基本概念我也许还不太清楚,说错的地方,请大家批评指教。 我要设计的是is95cdma系统的48阶fir滤波器。 输入串行数据(每个clk输入1位) 输入数据宽度为1位,系数h0=-0.(十进制)111111_(16位二进制,_为小数点位置,_前面是符号扩展),-h0=0.(十进制)000000_(16位二进制)。其他系数略。 我用的是映射的方法,即不用乘法,只相应由查找表查出的结果,输入1时,映射为1,查表输出h0,输入0时,映射为1,查表输出h0。再送入加法器求48个系数的和。 系数宽度16位,输出宽度

44、22位(防溢出) datain=1 ,dataout=16116a(十六进制)(22位二进制) 这是48个正系数的和(这里的正系数不一定全是正数,而只是标准,所以把它看作“正数”) datain=0 ,dataout=19ee96(十六进制)(22位二进制) 这是48个负系数的和。 这个结果我对照十进制的数运算结果验证了一下,是对的,但是只能取22位的后16位来计算,由于高位的都是加法的进位溢出。 我重要由两个问题: 1)这种映射法,恕我愚钝,主线没明白(我也是看的论文,但没有明白其真正含义),由于它和普通的比如m位输入和n位的系数相乘得到mn位的结果,思绪完全不同样。这个1,0映射为1,1,

45、和普通的输入(m位二进制数代表一个x(n)有何关系?我的到16116a,19ee96这些结果还要累加吗? (此问题也许比较愚蠢,欢迎扔鸡蛋) 2)我运算的是有符号数,那溢出的这些多余的位怎么解决?由于下一步这些数据还要送到下一个模块解决。保存的话,多余的哪些位显然没用。扔掉的话,行吗? 学了FOR LOOP的用法以后,有点想法 那么在此基础上怎么实现并口的输出呢? 如: Q(0)=DIN; FOR I IN 1 DOWNTO 7 LOOP Q(I)=Q(I-1); END LOOP; OPq(1),然后q(1)-q(2),然后q(2)-q(3).q(6)-q(7) 事实上只是延迟了几个周期,也

46、就是q(7)=din, 并没有实现串行向并行的转换 不大理解用这个for loop语句如何实现串并转换的 望告知把 Q(0)=DIN; FOR I IN 1 DOWNTO 7 LOOP Q(I)=Q(I-1); END LOOP; 放在进程里面就可以。同志,做cpld/fpga设计的时候需要记住一点,verilog是硬件设计而不是软件编程,所以,做好不要使用for循环这样的语句,太浪费资源了! 思考的时候要学会使用DFF这应当是个移位寄存的电路,也是DIN 8个连续数据的同时输出,只但是是移位1次,就并处一次。其实隔8个周期看一下输出,就是你要的结果了。 真要串入8位,并出1次,要一个计数器或

47、状态机也行啊去构建自己想要的电路! 这是我写的,5分频的,改变计数器,可以是别的奇数分频 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity div3 is Port ( clk : in std_logic; rst : in std_logic; clk3: out std_logic); end div3; architecture Behavioral of div3 is signal c0 : std_logi

48、c; signal c1 : std_logic; signal cnt : std_logic_vector(2 downto 0); begin cnt_gen:process(clk,rst) begin if rst =1 then cnt = 100; c0 = 0; c1 = 0; elsif clkevent and clk=1 then if cnt /= 4 then cnt = cnt+1; elsif cnt=4 then cnt 0); end if; if cnt=4 then c0 = 1; elsif cnt=2 then c0 = 0; end if; end

49、if; end process; process(clk,rst) begin if rst =1 then c1 = 0; elsif clkevent and clk=0 then if cnt=4 then c1 =1; elsif cnt=2 then c1 = 0; end if; end if; end process; clk3 = c0 and c1; end Behavioral; c0,c1一个在时钟的上升沿变化,一个在下降沿变化,所以两个会有半个周期的差,and以后就可以得到想要得分频了。你可以仿真波形看看 两个时钟,一个为64K的时钟,一个为2.048M时钟,如何检测6

50、4K时钟的上升沿?既检测到64K的时钟的上升沿就产生一个控制信号。如何做?做出来你也能进UT. 这跟检测信号的变化有什么区别吗? 设64K时钟为信号,速率X2=128K 采样时钟128K*4=512K(有2.048M更好了) 加1状态机就可以了! 假如规定产生的控制信号与64K时钟上升沿对齐的话,就有点麻烦了! - There is rising edge of clk64k detected when Ctrl signal is high. library IEEE; use IEEE.std_logic_1164.all; entity det is port( rst: in std_

51、logic; clk64k: in std_logic; clk2m: in std_logic; ctrl: out std_logic); end det; architecture behv of det is signal clk64k_q1: std_logic; signal clk64k_q2: std_logic; begin process(rst,clk2m) begin if(rst=0) then clk64k_q1= 0; clk64k_q2= 0; elsif(clk2mevent and clk2m=1) then clk64k_q1= clk64k; clk64k_q2= clk64k_q1; end if; end process; ctrl= 1 when clk64k_q1=1 and clk64k_q2=0 else 0; end behv; 2.048MHz/64K32 其实就是检测64KHz信号上

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!