西安交大数子电子技术实验报告内容摘要:

2秒或 3秒等)。 2) 试设计一个带有异步清零和同步置数信号的 4位寄存器,并在开发板上验证。 实验前编写好 HDL源文件、用户约束文件和仿真文件,并给出仿真波形。 二、 时序逻辑电路实验任务 任务 1:秒脉冲发生器的设计 实验方法和步骤 (1) 建立工程文件,输入 HDL 程序如下: module miaomaichong( input clk,clr, output reg[6:0] a_to_g, output wire[3:0] an, output reg[3:0]q )。 assign an=439。 b1110。 reg [26:0] counter。 always @(posedge clk) 19 if(counter==25000000) counter = 0。 else counter = counter+1。 reg clk_div。 always @(posedge clk) if(counter==25000000) clk_div = ~clk_div。 always@(posedge clk_div or posedge clr) begin if(clr==1) q=0。 else if(q==9) q=0。 else q=q+1。 end always@(*) case(q) 0:a_to_g=739。 b0000001。 1:a_to_g=739。 b1001111。 2:a_to_g=739。 b0010010。 3:a_to_g=739。 b0000110。 4:a_to_g=739。 b1001100。 5:a_to_g=739。 b0100100。 20 6:a_to_g=739。 b0100000。 7:a_to_g=739。 b0001111。 8:a_to_g=739。 b0000000。 9:a_to_g=739。 b0000100。 default:a_to_g=739。 b0000001。 endcase endmodule (2) 编写约束文件: NETa_to_g[0]LOC=M12。 NETa_to_g[1]LOC=L13。 NETa_to_g[2]LOC=P12。 NETa_to_g[3]LOC=N11。 NETa_to_g[4]LOC=N14。 NETa_to_g[5]LOC=H12。 NETa_to_g[6]LOC=L14。 NETan[0]LOC=F12。 NETan[1]LOC=J12。 NETan[2]LOC=M13。 NETan[3]LOC=K14。 NETclkLOC=B8。 NETclrLOC=P11。 21 NETq[3]LOC=G1。 //LED7 NETq[2]LOC=P4。 //LED6 NETq[1]LOC=N4。 //LED5 NETq[0]LOC=N5。 //LED4 (3) 综合、实现及生成编程文件,设计下载。 任务 2:带有异步清零和同步置数信号的 4位寄存器设计 实验方法和步骤 ( 1)建立工程文件,输入 HDL程序如下: module register( input load, inputclk, inputclr, input wire[3:0]d, outputreg[3:0]q )。 //定义足够大的计数器,使时钟脉冲的周期可分辨 reg [27:0]q1。 always@(posedgeclk or posedgeclr) begin if(clr==1) q1=0。 else 22 q1=q1+1。 end assignmclk=q1[27]。 //实现异步清零,同步置数功能 always@(posedgemclk or posedgeclr) if(clr==1) q=0。 else if(load==1) q=d。 endmodule (2) 编写约束文件: Project→ New Source→选 Implantation Constraints File→输入文件名: register→点击 Next 按钮→点击 Finish 按钮→输入 ucf文件如下: NETclkLOC=B8。 NETclrLOC=P11。 NETloadLOC=L3。 NETd[0]LOC=K3。 NETd[1]LOC=B4。 NETd[2]LOC=G3。 NETd[3]LOC=F3。 NETq[0]LOC=M5。 23 NETq[1]LOC=M11。 NETq[2]LOC=P7。 NETq[3]LOC=P6。 ( 3) 综合、实现及生成编程文件;仿真,设计下载: 仿真测试文件如下: moduleregistertest。 // Inputs reg load。 regclk。 regclr。 reg [3:0] d。 // Outputs wire [3:0] q。 // Instantiate the Unit Under Test (UUT) registeruut ( .load(load), .clk(clk), .clr(clr), .d(d), .q(q) )。 initial begin 24 // Initialize Inputs load = 0。 clk = 0。 clr = 0。 d = 439。 b0101。 // Wait 100 ns for global reset to finish 100。 end always 24 load=~load。 always 10 clk=~clk。 always 42 clr=~clr。 endmodule 仿真结果: 寄存器清零信号有效时的仿真结果 25 寄存器置数信号有效时的仿真结果 三、讨论与分析 将任务一的程序下载到 BASYS2 板子上后,可实现秒脉冲发生器的功能。 由任务二的仿真结果可以看出,当清零信号有效时( clr=1),无。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。