东华大学可编程ASIC技术作业——赵SG课件

更新时间:2023-03-08 04:36:47 阅读量: 高等教育 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《可编程ASIC技术》课程作业2014

1.举例说明阻塞赋值和非阻塞赋值有什么本质的区别? 非阻塞赋值

module non_block(c,b,a,clk); output c,b; input clk,a; reg c,b;

always @(posedge clk) begin b<=a; c<=b; end endmodule

阻塞赋值

module block(c,b,a,clk); output c,b; input clk,a; reg c,b;

always @(posedge clk) begin b=a; c=b; end endmodule

非阻塞赋值仿真波形图

阻塞赋值仿真波形图

由此可见阻塞赋值是并行赋值,非阻塞赋值是随机的。

2.用持续赋值语句描述一个4选1数据选择器。 4选1的数据选择器程序:

module mux4_1(out,in1,in2,in3,in4,sel1,sel2); input in1,in2,in3,in4; output out; input sel1,sel2;

assign out=sel1?(sel2?in4:in3):(sel2?in2:in1); endmodule

3.设计一个功能和引脚与74138类似的译码器,并仿真。 译码器程序:

module encoder(out, in,en);

output[7:0] out;/*定义八位二进制码输出口*/ input[2:0] in;/*定义三位二进制码输入口*/ input[2:0] en;/*三个使能端*/ reg[7:0] out; always @(in or en) begin

if(en==3'b100) case(in)

3'd0: out=8'b11111110; 3'd1: out=8'b11111101; 3'd2: out=8'b11111011; 3'd3: out=8'b11110111; 3'd4: out=8'b11101111; 3'd5: out=8'b11011111;

3'd6: out=8'b10111111; 3'd7: out=8'b01111111; endcase

else out=8'b11111111; end endmodule

4.设计一个4位、可预置、可清零的移位寄存器,并仿真。 可预置、可清零的移位寄存器程序:

module shift_register(out,in,reset,set,clk); output[7:0] out;//定义四位输出端

input in,reset,set,clk;//输入信号、清零端、置数端、时钟信号 reg[7:0] out;

reg[7:0] md;//置数寄存器 always@(posedge clk) begin

begin md=8'b00001101;end//这里预置数为00001101,可以根据需要更改 if(reset)

begin out<=0;end else begin if(set)

begin out<=md;end//置数信号为1,置数 else

begin out<={out,in};end end end endmodule

5.设计一个上升沿触发的可预置、可清零16进制计数器,并仿真。如果要改为10进制计数器,应对该设计做哪些修改? module counter_16(Q,en,clock,clear,S); output [3:0]Q; input [3:0]S;

input en,clock,clear; reg[3:0]Q;

always @(posedge clock) begin

if (clear==0) begin

Q<=4'b0000;

本文来源:https://www.bwwdw.com/article/fs.html

Top