杭州电子科技大学学生考试卷(B)卷考试课程EDA技术考试日期2012年9月成绩课程号教师号任课教师姓名考生姓名学号(8位)年级专业1、填空题:(14分)1.CPLD的中文全称是_______________。2.EDA的中文全称是_________________。3.SOPC的中文名称为_______。4.设计优化方法中对面积进行优化的方法有(举出2种):_________、_________。5.基于EDA软件的FPGA设计流程,一般有①原理图/HDL文本输入,②综合,③时序仿真,④适配,⑤硬件测试,⑥编程下载这几个步骤,按照流程顺序,其正确排法应该是:_____________。6.常用的EDA工具中,ModelSim是________器。7.FPGA的可编程是基于_________可编程。2、选择题:(10分)1、按仿真的电路描述级别的不同,HDL仿真器可以单独或综合完成以下哪些仿真:___(多选)A.系统级仿真;B.行为级仿真;C.RTL级仿真;D.门级时序仿真.2、以下可编程器件原理基于与或阵列的有:______(多选)A.PLA;B.FPGA;C.PROM;D.GAL.3、以下关于FPGA的描述正确的是:_____(多选)A可编程逻辑器件;B掉电程序会丢失;C需要使用配置芯片3、Verilog程序填空题(16分)把合适的Verilog语句填入空格以实现完整的程序功能://以下是一个16分频电路的verilog设计,请将其填空完整:moduleclk_div16(_____,reset,clk_out);inputclk_in;inputreset;____________clk_out;reg_____________;reg_____________cnt;___________@(posedge____________)beginif(_________)begin__________=0;clk_out=0;______________if(cnt==_______)begincnt=____________;clk_out=____________;endelsebegincnt=____________;clk_out=_____________;endend____________4、程序改错(10分)该程序实现了一个流水线全加器电路,请根据两处出错信息来找出错误原因,并改正。程序源代码如下:modulepipeline(cout,sum,ina,inb,cin,clk)1output[7:0]sum;2outputcout;3input[7:0]ina,inb;4inputcin,clk;5reg[7:0]tempa,tempb,sum;6regtempci,firstco,secondco,thirdco,cout;7B基于查找表。4、以下关于CPLD的描述正确的是:_____(单选)A可编程逻辑器件;B掉电程序会丢失;C需要使用配置芯片B基于查找表。5、在使用LPM定制ROM时调用的数据文件的格式有:____(多选)A、verilogB、mifC、HexD、vhdl第1页共3页reg[1:0]firsts,thirda,thirdb;8reg[3:0]seconda,secondb,seconds;9reg[5:0]firsta,firstb,thirds;10ALWAYS@(posedgeclk)11begin12tempa=ina;tempb=inb;tempci=cin;13end14always@(posedgeclk)15begin16{firstco,firsts}=tempa[1:0]+tempb[1:0]+tempci;17firsta=tempa[7:2];18firstb=tempb[7:2];19end20always@(posedgeclk)21begin22{secondco,seconds}={firsta[1:0]+firstb[1:0]+firstco,firsts};23seconda=firsta[5:2];24secondb=firstb[5:2];25end26always@(posedgeclk)27begin28{thirdco,thirds}={seconda[1:0]+secondb[1:0]+secondco,seconds};29thirda=seconda[3:2];30thirdb=secondb[3:2];31end32always@(posedgeclk)33begin34{cout,sum}={thirda[1:0]+thirdb[1:0]+thirdco,thirds};35end36endmodule37错误如下:(1)**Error:E:/Verilog/Experiments/4/pipeline.v(2):nearoutput:syntaxerror,unexpectedoutput,expecting';'(2)**Error:E:/Verilog/Experiments/4/pipeline.v(15):near@:syntaxerror,unexpected'@'错误(1)行号:应修改为:错误(2)行号:应修改为:5、根据原理图写出其VerilgoL程序:(10分)6、Verilog编程题(10分)设计一个16位加法计数器,其模块端口为:input[15:0]D;//计数器器预置输入inputclk;//计数器时钟inputreset;//计数器异步复位信号,高电平有效output[15:0];//计数器器输出outputcout;//计数器器进位输出,当输出为全1时,输出高电平试写出完整的VerilogHDL描述第2页共3页7、阅读下列Verilog程序,画出RTL图:(10分)modulereg1v(d,clk,q,oe);inputd,clk,oe;outputregq;wirea;regqt,noe;assigna=noe?1’bz:q;always@(posedgeclk)beginqt=a&d;q=qt;endalways@*noe=oe;endmodule请画出上述Verilog所描述的RTL图:8、综合设计(20分)有一个二进制数字序列流SDin,其编码帧协议如下,试用FPGA接收该数字流并做处理。帧起始标志(8位)数据类型码(8位)数据(16位)110110001、设计一个状态机读取一帧数字流,然后用并行方式输出数据类型码(SType)和数据(SData)。其中状态机的端口输入输出信号是:inputSDin;--数字流输入inputclk,rst;--系统时钟、系统复位outputLOCK;--当一帧接收完毕,给1个clk周期高电平,这时SType、SData输出有效output[7:0]SType;--8位数据类型码output[15:0]Sdata;--16位数据状态机中间信号:reg[4:0]cnt;--移位计数reg[23:0]stmp;--临时移位寄存器那么状态机各个状态可以这样设计:状态下一个状态cntLOCKstmpSTypeSDataS0(复位状态)当SDin=1,转S1;否则S000S1○00S2当SDin=0,转S3;否则S000S3当SDin=1,转S4;否则S000S4○00S5当SDin=0,转S6;否则S000S6○00S7当SDin=0,转S8;否则S000S8当cnt=23转S9;否则S8cnt++0○S9当SDin=1,转S1;否则S001○○请完成表格:(填转移条或者赋值表达式)○______________________○______________________○______________________○______________________○______________________○______________________2、请用VerilogHDL描述状态机(使用双进程状态机或三进程状态机)3、把接收到的SType和SData分别存入两个FIFO中,存SType的FIFO数据宽度为8位,深度为32;存SData的FIFO位宽为16位,深度为32.下面是一个已经设计好的STypeFIFO的模块描述:modulestype_fifo(data,wrreq,rdreq,clock,q,full,empty,usedw);input[7:0]data;inputwrreq;inputrdreq;inputclock;output[7:0]q;outputfull;outputempty;output[4:0]usedw;SDataFIFO的模块描述基本类似,只是data和q位宽不同。试构成一个带FIFO的数字流接收器,写出完整的VerilogHDL顶层文件。第3页共3页