FPGA-verilog-数字系统设计考试题
FPGA设计实验考试抽测题目[1]
![FPGA设计实验考试抽测题目[1]](https://img.taocdn.com/s3/m/feedfd392379168884868762caaedd3383c4b504.png)
FPGA设计实验考试抽测题目[1]FPGA设计实验抽测题目1、试用verilog设计一个基本RS锁存器(用行为描述风格),并用test bench程序测试。
要求:用modelsim进行仿真,给出仿真波形图RS锁存器(行为描述方式)Module part2(Q,R,S,CLK);input CLK,R,S;output Q;wire Rg,Sg,Qa,Qb;assign Rg=CLK&R;assign Sg=S&CLK;assign Qa=~(Rg,Qb);assign Qb=~(Sg,Qa);assign Q=Qa;endmoduletest bench程序测试`include”part2.v”module test;reg Rin,Sin,Clock;wire Outa,Outb;intialbeginRin=0;Sin=0;Clock=0;endalways #50 clock=~clock;always@(posedge clock)begin#1 Rin={$random}%2;#3Sin={$random}%2;endpart1 p(.Qa(Outa),.Qb(Outb),.R(Rin),.S(Sin),.CLK(Clock));endmodule2、试用verilog设计一个基本RS锁存器(用结构描述风格),并用test bench程序测试。
RS锁存器(结构描述方式)Module part1(Q,R,S,CLK);input CLK,R,S;output Q;wire Rg,Sg,Qa,Qb;and(Rg,CLK,R);and (Sg ,S,CLK);nor (Qa,Rg,Qb);nor (Qb,Sg,Qa);assign Q=Qa;endmoduletest bench程序测试。
`include”part1.v”module test;reg Rin,Sin,Clock;wire Outa,Outb;intialbeginRin=0;Sin=0;Clock=0;endalways #50 clock=~clock;always@(posedge clock)begin#1 Rin={$random}%2;#3Sin={$random}%2;endpart1 p(.Qa(Outa),.Qb(Outb),.R(Rin),.S(Sin),.CLK(Clock));endmodule3、试用verilog设计一个带低电平清零的D锁存器(用行为描述风格),并用test bench程序测试。
FPGA习题集及参考答案

FPGA习题集及参考答案习题集及参考答案⼀、填空题1.⼀般把EDA技术的发展分为()个阶段。
2.FPGA/CPLD有如下设计步骤:①原理图/HDL⽂本输⼊、②适配、③功能仿真、④综合、⑤编程下载、⑥硬件测试,正确的设计顺序是①()⑤⑥。
3.在EDA⼯具中,能完成在⽬标系统器件上布局布线的软件称为()。
4.设计输⼊完成之后,应⽴即对⽂件进⾏()。
5.基于硬件描述语⾔的数字系统设计⽬前最常⽤的设计⽅法称为()设计法。
6.将硬件描述语⾔转化为硬件电路的过程称为()。
7.IP核在EDA技术和开发中具有⼗分重要的地位,以HDL⽅式提供的IP被称为()IP。
8.SOC系统⼜称为()系统。
SOPC系统⼜称为()系统。
9.将硬核和固核作为()IP核,⽽软核作为()IP核。
10.IP核在EDA技术和开发中具有⼗分重要的地位,以HDL⽅式提供的IP被称为()。
11.HDL综合器就是逻辑综合的过程,把可综合的VHDL/Verilog HDL转化成硬件电路时,包含了三个过程,分别是()、()、()。
12.EDA软件⼯具⼤致可以由五个模块构成,分别是设计输⼊编辑器、()、()、()和()。
13.按仿真电路描述级别的不同,HDL仿真器分为()仿真、()仿真、()仿真和门级仿真。
14.系统仿真分为()、()和()。
15.()仿真是对设计输⼊的规范检测,这种仿真通过只能表⽰编译通过,说明设计满⾜⼀定的语法规范,但不能保证设计功能满⾜期望。
16.()仿真是对综合后的⽹表进⾏的仿真,它验证设计模块的基本逻辑功能,但不带有布局布线后产⽣的时序信息,是理想情况下的验证。
17.()仿真是布局布线后进⾏的后仿真,仿真时考虑了布线延时,和芯⽚实际的⼯作情况更加接近。
18.⽬前Xilinx公司⽣产的FPGA主要采⽤了()配置存储器结构。
19.描述测试信号的变化和测试⼯程的模块叫做()。
20.现代电⼦系统设计领域中的EDA采⽤()的设计⽅法。
21.有限状态机可分为()状态机和()状态机两类。
veriloghdl数字设计与综合答案

veriloghdl数字设计与综合答案【篇一:verilog习题选答】txt>答:fpga中,由程序来转换为可烧录的二进制码。
ic设计中,主要是由design-compiler来实现。
2.能否说模块相当于电路图中的功能模块,端口相当于功能模块的 3.assign声明语句,实例元件,always块,这三类描述中哪一种直接与电路结构有关?4.由连续赋值语句(assign)赋值的变量能否是reg型的?答:赋值运算分为连续赋值和过程赋值两种。
(1)连续赋值连续赋值语句只能对线网型变量进行赋值,而不能对寄存器型变量进行赋值,基本的语法结构为:assign #(延时量) 线网型变量名 = 赋值表达式; 一个线网型变量一旦被连续赋值语句赋值后,赋值语句右端赋值表达式的值将持续对赋值变量产生连续驱动,只要右端表达式任一操作数的值发生变化,就会立即触发对赋值变量的更新操作。
(2)过程赋值过程赋值主要用于两种结构化模块(initial和always)中的赋值语句。
在过程块中只能使用过程赋值语句,不能在过程块中出现连续赋值语句,同时过程赋值语句也只能用在过程赋值模块中。
基本的语法结构为:被赋值变量赋值操作符赋值表达式,其中,赋值操作符是“=”或“=”,它分别代表了阻塞赋值和非阻塞赋值类型。
过程赋值语句只能对寄存器类型的变量进行赋值,经过赋值后,上面这些变量的值将保持不变,直到另一条赋值语句对变量重新赋值为止。
5.如果都不带时间延迟、阻塞和非阻塞赋值有何不同?说明它们的不同点?答:代码1:module test(a,b,c,d,y); //两个与逻辑,1个或逻辑input a,b,c,d;output y;reg y,tmp1,tmp2;always @(a or b or c or d)// y的值并不等于当前的tmp1,tmp2相或的值,而是等于上 begin一次运算时tmp1,tmp2相或的值。
相当于一个延迟,在第2 tmp1 = ab; 次always模块运行完后得到想要的y值tmp2 = cd;y = tmp1|tmp2;endendmodule代码2:基本与代码1一样,只是在always的敏感列表中加入了temp1,temp2module test(a,b,c,d,y);input a,b,c,d;output y;reg y,tmp1,tmp2;always @(a or b or c or d or tmp1 or tmp2)//与代码一不同,begintmp1 = ab;tmp2 = cd;y = tmp1|tmp2;endendmodule代码3:在代码2中加进参数j,来帮助判断always模块的运行次数:module test(a,b,c,d,y);input a,b,c,d;output y;reg y,tmp1,tmp2;reg [8:0]j=0;always @(a or b or c or d or tmp1 or tmp2)beginj = j + 1;#5 //这里加了一个延时,方便分析tmp1 = ab;延迟消失了。
FPGAVerilog试题(西安电子科技大学)

西安电子科技大学考试时间分钟试题题号一二三四五六七八九十总分分数1.考试形式:闭(开)卷;2.本试卷共四大题,满分100分。
班级学号姓名任课教师一、选择题(每题2分,共18分)1. 下面哪个是可以用verilog语言进行描述,而不能用VHDL语言进行描述的级别?( A )(A) 开关级 (B)门电路级 (C) 体系结构级 (D) 寄存器传输级2.在verilog中,下列语句哪个不是分支语句?( D )(A) if-else (B) case (C) casez (D) repeat3.下列哪些Verilog的基本门级元件是多输出( D )(A) nand (B) nor (C) and (D) not4.Verilog连线类型的驱动强度说明被省略时,则默认的输出驱动强度为( B )(A) supply (B) strong (C) pull (D) weak5.元件实例语句“notif1 #(1:3:4,2:3:4,1:2:4) U1(out,in,ctrl);”中截至延迟的典型值为( B )(A) 1 (B) 2 (C) 3 (D) 46.已知“a =1b’1; b=3b'001;”那么{a,b}=( C )(A) 4b'0011 (B) 3b'001 (C) 4b'1001 (D) 3b'101第 2 页共 8 页7.根据调用子模块的不同抽象级别,模块的结构描述可以分为(ABC )(A) 模块级 (B)门级 (C) 开关级 (D) 寄存器级8.在verilog语言中,a=4b'1011,那么 &a=(D )(A) 4b'1011 (B) 4b'1111 (C) 1b'1 (D) 1b'09.在verilog语言中整型数据与( C )位寄存器数据在实际意义上是相同的。
(A) 8 (B) 16 (C) 32 (D) 64二、简答题(2题,共16分)1.Verilog HDL语言进行电路设计方法有哪几种(8分)1、自上而下的设计方法(Top-Down)2、自下而上的设计方法(Bottom-Up)3、综合设计的方法2.specparam语句和parameter语句在参数说明方面不同之处是什么(8分)。
verilog考试题

verilog考试题西安电⼦科技⼤学考试时间分钟试题1.考试形式:闭(开)卷;2.本试卷共四⼤题,满分100分。
班级学号姓名任课教师⼀、选择题(每题2分,共18分)1. 下⾯哪个是可以⽤verilog语⾔进⾏描述,⽽不能⽤VHDL语⾔进⾏描述的级别?( A )(A) 开关级 (B)门电路级 (C) 体系结构级 (D) 寄存器传输级2.在verilog中,下列语句哪个不是分⽀语句?( D )(A) if-else (B) case (C) casez (D) repeat3.下列哪些Verilog的基本门级元件是多输出( D )(A) nand (B) nor (C) and (D) not4.Verilog连线类型的驱动强度说明被省略时,则默认的输出驱动强度为( B )(A) supply (B) strong (C) pull (D) weak5.元件实例语句“notif1 #(1:3:4,2:3:4,1:2:4) U1(out,in,ctrl);”中截⾄延迟的典型值为( B )(A) 1 (B) 2 (C) 3 (D) 46.已知“a =1b’1; b=3b'001;”那么{a,b}=( C )(A) 4b'0011 (B) 3b'001 (C) 4b'1001 (D) 3b'1017.根据调⽤⼦模块的不同抽象级别,模块的结构描述可以分为(ABC )(A) 模块级 (B)门级 (C) 开关级 (D) 寄存器级8.在verilog语⾔中,a=4b'1011,那么 &a=(D )(A) 4b'1011 (B) 4b'1111 (C) 1b'1 (D) 1b'09.在verilog语⾔中整型数据与( C )位寄存器数据在实际意义上是相同的。
(A) 8 (B) 16 (C) 32 (D) 64⼆、简答题(2题,共16分)1.Verilog HDL语⾔进⾏电路设计⽅法有哪⼏种(8分)1、⾃上⽽下的设计⽅法(Top-Down)2、⾃下⽽上的设计⽅法(Bottom-Up)3、综合设计的⽅法2.specparam语句和parameter语句在参数说明⽅⾯不同之处是什么(8分)。
FPGA试卷+答案+超详细解答

20XX—20XX学年度第(X)学期期末考试试卷科目:<<FPGA设计>>(X)卷考试形式:闭卷考试时间:100 分钟院(系)别、班级:姓名:学号:试题区:(试题区必须与答题区同时交回,含答题纸、试题纸、草稿纸的装订试卷不能分拆)一、单项选择题:(20分)1.在VHDL语言中,下列对进程(PROCESS)语句的语句结构及语法规则的描述中,不正确的是___C___。
A.PROCESS为一无限循环语句;敏感信号发生更新时启动进程,执行完成后,等待下一次进程启动。
B.敏感信号参数表中,不一定要列出进程中使用的所有输入信号;C.进程由说明部分、结构体部分、和敏感信号三部分组成;(进程由声明语句、顺序语句、敏感信号列表组成)D.当前进程中声明的变量不可用于其他进程。
2.在一个VHDL设计中idata是一个信号,数据类型为integer,数据范围0 to 127,下面哪个赋值语句是正确的___C___。
(信号赋值符号 <= )A.idata := 32;B.idata <= 16#A0#; (十进制数为:10*16= 160,idata范围为0~127)C.idata <= 16#7#E1;(十进制数为:7*16^1= 112)D.idata := B#1010#;3.大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中,正确的是___C___。
A.FPGA是基于乘积项结构的可编程逻辑器件;(FPGA芯片基于查找表的可编程逻辑结构)B.FPGA是全称为复杂可编程逻辑器件;(FPGA 现场可编程逻辑门阵列,CPLD才是复杂可编程逻辑器件)C.基于SRAM的FPGA器件,在每次上电后必须进行一次配置;D.在Altera公司生产的器件中,MAX7000系列属FPGA结构。
(MAX7000系列属CPLD结构)4.进程中的变量赋值语句,其变量更新是___A___。
verilog数字系统设计教程第5章例题

第五章例题例如:if(a>b)out1 = int1;elseout1 = int2;例如:always @( some_event) //虚的字体表示块语句beginif(a>b) out1 = int1;else if (a==b) out1 = int2;else out1 = int3;endif(a>b)beginout1<=int1;out2<=int2;endelsebeginout1<=int2;out2<=int1;end//有时begin_end块语句的不慎使用会改变逻辑行为。
见下例:if(index>0)for(scani=0;scani<index;scani=scani+1)if(memory[scani]>0)begin$display("...");memory[scani]=0;endelse /*WRONG*/$display("error-indexiszero");尽管程序设计者把else写在与第一个if(外层if)同一列上,希望与第一个if对应,但实际上else是与第二个if对应,因为它们相距最近。
正确的写法应当是这样的:if(index>0)beginfor(scani=0;scani<index;scani=scani+1)if(memory[scani]>0)begin$display("...");memory[scani]=0;endendelse /*WRONG*/$display("error-indexiszero");//定义寄存器和参数。
reg [31:0] instruction, segment_area[255:0];reg [7:0] index;reg [5:0] modify_seg1, modify_seg2, modify_seg3; parametersegment1=0, inc_seg1=1,segment2=20, inc_seg2=2,segment3=64, inc_seg3=4,data=128;//检测寄存器index的值if(index<segment2)begininstruction = segment_area[index + modify_seg1];index = index + inc_seg1;endelse if(index<segment3)begininstruction = segment_area[index + modify_seg2];index = index + inc_seg2;endelse if (index<data)begininstruction = segment_area[index + modify_seg3];index = index + inc_seg3;endelseinstruction = segment_area[index];reg [15:0] rega;reg [9:0] result;case(rega)16 'd0: result = 10 'b0111111111;16 'd1: result = 10 'b1011111111;16 'd2: result = 10 'b1101111111;16 'd3: result = 10 'b1110111111;16 'd4: result = 10 'b1111011111;16 'd5: result = 10 'b1111101111;16 'd6: result = 10 'b1111110111;16 'd7: result = 10 'b1111111011;16 'd8: result = 10 'b1111111101;16 'd9: result = 10 'b1111111110;default: result =10 'bx;endcase[例1]:case ( select[1:2] )2 'b00: result = 0;2 'b01: result = flaga;2 'b0x,2 'b0z: result = flaga? 'bx : 0;2 'b10: result = flagb;2 'bx0,2 'bz0: result = flagb? 'bx : 0;default: result = 'bx;endcase[例2]:case(sig)1 'bz: $display("signal is floating");1 'bx: $display("signal is unknown");default: $display("signal is %b", sig);endcase[例3]: reg[7:0] ir;casez(ir)8 'b1???????: instruction1(ir);8 'b01??????: instruction2(ir);8 'b00010???: instruction3(ir);8 'b000001??: instruction4(ir);endcase[例4]: reg[7:0] r, mask;mask = 8'bx0x0x0x0;casex(r^mask)8 'b001100xx: stat1;8 'b1100xx00: stat2;8 'b00xx0011: stat3;8 'bxx001100: stat4;endcase例:always @ (al or d ) // 有锁存器beginif ( al ) q = d;endalways @ (al or d ) // 无锁存器beginif ( al ) q = d;else q = 0;end[例5]:条件语句举例//第一类条件语句if ( !lock ) buffer = data ;if ( enable ) out = in ;//第二类条件语句if (number_queued < MAX_Q_DEPTH)begindata_queue = data ;number_queued = number_queued + 1 ;endelse$display ( " Queue Full. Try again " ) ;//第三类条件语句//根据不同的算术逻辑单元的控制信号alu_control 执行不同的算术运算操作if ( alu_control = = 0 )y = x + z ;else if ( alu_control = = 1 )y = x - z ;else if ( alu_control = = 2 )y = x * z ;else$ display ( " Invalid ALU control signal ");reg [ 1: 0] alu_control ;......case (alu_control)2 'd 0 : y = x + z ;2 'd 1 : y = x - z ;2 'd 2 : y = x * z ;default : $display ( "Invalid ALU control signal ") ;endcase[例6]:使用case语句实现四选一多路选择器module mux4_to_1 (out, i0, i1, i2, i3, s1, s0);// 根据输入/输出图的端口声明output out;input i0, i1, i2, i3;input s1, s0;//把输出变量声明为寄存器类型reg out;//任何输入信号改变,都会引起输出信号的重新计算//使输出out 重新计算的所有输入信号必须写入always @(...)的变量列表中always @(s1 or s0 or i0 or i1 or i2 or i3)begincase ({s1, s0})2'b00: out = i0;2'b01: out = i1;2'b10: out = i2;2'b11: out = i3;default: out = 1'bx;endcaseendendmoduleparameter size=8,longsize=16;reg [size:1] opa, opb;reg [longsize:1] result;begin: multreg [longsize:1] shift_opa, shift_opb;shift_opa = opa;shift_opb = opb;result = 0;repeat(size)beginif(shift_opb[1])result = result + shift_opa;shift_opa = shift_opa <<1;shift_opb = shift_opb >>1;endendbegin: count1sreg[7:0] tempreg;count=0;tempreg = rega;while(tempreg)beginif(tempreg[0]) count = count + 1;tempreg = tempreg>>1;endend[例7]:begin: init_memreg[7:0] tempi;for(tempi=0;tempi<memsize;tempi=tempi+1)memory[tempi]=0;end[例8]:parameter size = 8, longsize = 16;reg[size:1] opa, opb;reg[longsize:1] result;begin:multinteger bindex;result=0;for( bindex=1; bindex<=size; bindex=bindex+1 )if(opb[bindex])result = result + (opa<<(bindex-1));end/*在for语句中,循环变量增值表达式可以不必是一般的常规加法或减法表达式。
veriloghdl数字设计与综合答案

veriloghdl数字设计与综合答案【篇一:verilog习题选答】txt>答:fpga中,由程序来转换为可烧录的二进制码。
ic设计中,主要是由design-compiler来实现。
2.能否说模块相当于电路图中的功能模块,端口相当于功能模块的 3.assign声明语句,实例元件,always块,这三类描述中哪一种直接与电路结构有关?4.由连续赋值语句(assign)赋值的变量能否是reg型的?答:赋值运算分为连续赋值和过程赋值两种。
(1)连续赋值连续赋值语句只能对线网型变量进行赋值,而不能对寄存器型变量进行赋值,基本的语法结构为:assign #(延时量) 线网型变量名 = 赋值表达式; 一个线网型变量一旦被连续赋值语句赋值后,赋值语句右端赋值表达式的值将持续对赋值变量产生连续驱动,只要右端表达式任一操作数的值发生变化,就会立即触发对赋值变量的更新操作。
(2)过程赋值过程赋值主要用于两种结构化模块(initial和always)中的赋值语句。
在过程块中只能使用过程赋值语句,不能在过程块中出现连续赋值语句,同时过程赋值语句也只能用在过程赋值模块中。
基本的语法结构为:被赋值变量赋值操作符赋值表达式,其中,赋值操作符是“=”或“=”,它分别代表了阻塞赋值和非阻塞赋值类型。
过程赋值语句只能对寄存器类型的变量进行赋值,经过赋值后,上面这些变量的值将保持不变,直到另一条赋值语句对变量重新赋值为止。
5.如果都不带时间延迟、阻塞和非阻塞赋值有何不同?说明它们的不同点?答:代码1:module test(a,b,c,d,y); //两个与逻辑,1个或逻辑input a,b,c,d;output y;reg y,tmp1,tmp2;always @(a or b or c or d)// y的值并不等于当前的tmp1,tmp2相或的值,而是等于上 begin一次运算时tmp1,tmp2相或的值。
相当于一个延迟,在第2 tmp1 = ab; 次always模块运行完后得到想要的y值tmp2 = cd;y = tmp1|tmp2;endendmodule代码2:基本与代码1一样,只是在always的敏感列表中加入了temp1,temp2module test(a,b,c,d,y);input a,b,c,d;output y;reg y,tmp1,tmp2;always @(a or b or c or d or tmp1 or tmp2)//与代码一不同,begintmp1 = ab;tmp2 = cd;y = tmp1|tmp2;endendmodule代码3:在代码2中加进参数j,来帮助判断always模块的运行次数:module test(a,b,c,d,y);input a,b,c,d;output y;reg y,tmp1,tmp2;reg [8:0]j=0;always @(a or b or c or d or tmp1 or tmp2)beginj = j + 1;#5 //这里加了一个延时,方便分析tmp1 = ab;延迟消失了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
--
--
3、设计 3 位二进制码(Binary)到格雷码(Gray)的编码器,写出 Verilog 描述,码表如下:
二进制码 格 雷 码 (Binary) (Gray)
000
000
001
001
010
011
011
010
100
110
101
111
110
101
111
100
一、填空(30分)
共 4 页 第 4页
二、根据功能模块写出 Verilog 描述(35分) 1、写出每个及连接在一起的逻辑功能模块Verilog 描述(忽略逻辑部分)。
m1
m2
ena data[7..0] c
data[7..0] out ena
inst
inst1
2、写出以下逻辑电路的门级结构 Verilog 描述和行为Verilog 描述。
input ena; input [7:0]data; output out; ....... endmodule
2、
module m (A,B,C); input A,B; wire
S1,S2,S3,S4; output C; not n1(S1,A); not n1(S2,B); and
a1(S3,A,S2); and
题号
一
二
三
四
五
六
七
八
九
十 十一
得分
总分
评阅人
复核人
一、填空(30分)
1、$display(“result=%b”,5’b01010 | 5’b11111)
显示:
2、$display(“result=%b”,!(4'b1110 || 4'b1001))
显示:
3、若a=4'b1110,b=4+b}) 显示:
end alu m(out,op,d1,d2); endmodule
共 4 页 第 1页
--
--
ﻬ山东理工大学《FPFA技术及应用(A)》试卷纸
(A)卷
2011-2012 学年第 二 学期
班级:
姓名:
学
号:
…………………………………装……………………………订…………………………线………….………………………………
班级:
姓名:
学号:
…………………………………装……………………………订…………………………线………….………………………………
三、 根据要求设计逻辑电路(35 分)
1. 设计检测串行序列的逻辑电路,要求当检测到 110 时输出高电平脉冲。画出状态图,写出verilog 描述。
x
z
clk
rst
2.设计一能进行 4、8 分频的分频器,写出分频器和测试模块的 Verilog 描述。
endmodule
`timescale 1ns/1ns module top_alu;
wire [7:0] out; reg [2:0] op; reg [7:0] d1,d2; initial
begin d1=8’h3e; d2=8’h52; op=3’b011; #10 $display(“ouput=%d”,out); #10 $stop;
4、假设仿真开始时间为时刻 0,画出以下描述的S信号波形图。
initial begin #2 S=1; #5 S=0; #3 S=1; #4 S=0; #2 S=1; #5 S=0; end
波形图:
5、写出仿真如下top_alu 模块后屏幕上应显示的信息:
_________________________________
A
INPUT
VCC
AND2
NOT
inst2 NOT
inst3
inst AND2
B
INPUT
VCC
inst4
OR2 inst1
OUTPUT
C
3、编写二、2逻辑电路的测试模块。
--
--
山东理工大学《FPFA 技术及应用(A)》试卷纸
共 4页 第 2页 ﻬ
(A)卷
2011-2012 学年第 二 学期
clk
clk4 clk8 reset
clk
测
分
clk4
试 reset 频 clk8
共4 页 第 3 页
--
--
ﻬ
山东理工大学《FPFA 技术及应用(A)》试卷纸
(A)卷 2011-2012 学年第 二 学期
班级:
姓名:
学
号:
…………………………………装……………………………订…………………………线………….………………………………
`define plus `define minus `define band `define bor `define unegate
3'd0 3'd1 3'd2 3'd3
3'd4
module alu (out,opcode,a,b); output [7:0] out; input [2:0] opcode; input [7:0] a,b; reg [7:0] out; always @(opcode or a or b) begin case(opcode) `plus: out=a+b; `minus: out=a-b; `band: out=a&b; `bor: out=a|b; `unegate: out=~a; default: out=8'hx; endcase end
a2(S4,S1,B); or o(C,S3,S4);
…… emnoddmuoldeumle(ena,out);
input ena; wire [7:0]data; wire c; output out; m1 m1_inst(data,ena,c ); m2 m2_inst(data,c,out ); endmodule
module m2(data,ena,out);
答案
--
-1、result=11111 2、result=0 3、result=111010010111 4、
2 5 3 42 5
5、output=126 说明:每小题 6 分,共 30 分。 二、(35 分) 1、
module m1(data,ena,c);
input ena; output [7:0]data; output c;
--
山东理工大学《FPFA 技术及应用(A)》试卷纸
(A)卷 2011-2012 学年第 二 学期
班级:
姓名:
学号:
…………………………………装……………………………订…………………………线………….………………………………
适用专业 09 电科 1、2
考核性质 考试 开卷
命题教师
考试时间 100分钟