实验一4选一多路选择器一:实验目的及实验环境目的1、熟悉ModelSim SE 6.5c的verilog 的文本设计流程,组合电路的设计、仿真和测试。
2、用verilog语言完成设计4选一多路选择器。
3、熟悉文本输入及仿真步骤。
4、初步了解可编程器件设计的全过程。
环境1、P C 机一台2、M odelSim SE 6.5c二. 实验内容1、用verilog语言完成设计4选一多路选择器,2、用结构建模及数据流建模两种方法实现。
3、对于所设计的程序进行编译,检查纠错。
4、程序完善之后进行程序的仿真并进行波形的记录与分析三.实验步骤1、建立工程2、添加文件到工程3、编译文件4、查看编译后的设计单元5、将信号加入波形窗口6、运行仿真四.运行结果五.总结本次实验让我更加的熟悉modelsim使用方法,以及使用时应该注意的问题。
在试验中也学习到了Verilog语法。
在实验中我们应该注意verilog的格式要求,在用编程语言编程的时候,要自习留意语法标准,整理好逻辑思维的同时保证格式的正确。
否则就会浪费大量的时间来完成实验。
试验开始到结束这一过程中,我遇到了很多困难,后来都在同学的提醒和帮助下克服了。
相信有了这次对这个语言和这个软件的接触,我们都有了更加深入的理解。
六.源代码module mux41(a,b,c,d,s1,s0,out);input[1:0] a,b,c,d;input s1,s0;output[1:0] out;reg[1:0] out;always @(a or b or c or d or s1 or s0)begin :mux41case({s1,s0})2'b00: out<=a;2'b01: out<=b;2'b10: out<=c;2'b11: out<=d;default: out=a;endcaseendendmodulemodule sti;reg[1:0] a,b,c,d;reg s0,s1;wire[1:0] out;mux41 dtg(a,b,c,d,s0,s1,out);initialbegina=3'd0;b=3'd1;c=3'd2;d=3'd3;s0=0;s1=0;#100 a=3'd0;b=3'd1;c=3'd2;d=3'd3;s0=0;s1=1;#100 a=3'd0;b=3'd1;c=3'd2;d=3'd3;s0=1;s1=0;#100 a=3'd0;b=3'd1;c=3'd2;d=3'd3;s0=1;s1=1;endendmodule实验二、Verilog HDL设计分频器及计数器一.实验目的及实验环境1)实验目的1、掌握较复杂数字电路或系统的纯Verilog HDL实现方法;2、体会纯Verilog HDL语言输入设计与原理图输入设计的差别;3、更加熟练的使用modelsim软件;2)实验环境计算机一台,使用modelsim软件进行实验仿真3)实验内容1、使用modelsim设计二分频器;2、使用modelsim设计模8计数器;三.测试数据及运行结果1、分频器正常测试数据(3组)及运行结果;2、计数器正常测试数据(3组)及运行结果通过本次实验,进一步熟悉并加深了对verilong语言的认识,初步运用并熟悉了整个程序及操作,加深对分频器的理解。
通过这次实验我更加熟悉了verilong 这门语言并能使用modelsim软件能自己设计编写一些程序和其测试文件,并将测试结果输出,验证理论的学习,加深理论知识的理解,这样可以更直观形象的理解各种电路器件的工作,有助于今后的学习。
六.附录:源代码(电子版)分频器源代码always @(posedge clk_in or negedge rst)beginif(!rst)clk_out<=0;elseclk_out<=~clk_out;module half_clk_dai(clk_in,rst,clk_out);input clk_in;input rst;output clk_out;reg clk_out;always @(posedge clk_in or negedge rst)beginif(!rst)clk_out<=0;elseclk_out<=~clk_out;endendmodule测试代码module half_clk_top;reg clk_in;reg rst;wire clk_out;half_clk_dai m2(clk_in,rst,clk_out);initialbeginclk_in=1;#10rst=0;#10rst=1;endalways #200 clk_in=~clk_in;Endmodule计数器的源代码module counter_8(clock,clear,q);input clock,clear;output[2:0] q;reg[2:0] q;always @(posedge clock or negedge clear)beginif(clear)q<=0;else if(q<=7)q<= q+1;else q<=0;endendmodule测试代码module test_counter8;reg clk,clr;wire[2:0] q;counter_8 counter(.clock(clk),.clear(clr),.q(q));initial clk = 0;always #100 clk = ~clk;initialbeginclr = 0;#50 clr = 1;#200 clr = 0;#50 clr = 1;end initial$monitor($time,"clear = %b,clock= %b,q=%b",clr,clk,q); endmodule实验三(1)2-ASK(振幅键控)调制器一. 实验目的及实验环境 1)实验目的1、掌握较复杂数字电路或系统的纯Verilog HDL 实现方法;2、体会纯Verilog HDL 语言输入设计与原理图输入设计的差别;3、更加熟练的使用modelsim 软件; 2)实验环境计算机一台,使用modelsim 软件进行实验仿真 3)实验内容设计2-ASK(振幅键控)调制器 二.测试数据及运行结果三.总结这次实验也是使用modelsim 软件,对这个软件运用方面还是不够熟练,总是会在某个方面不理解,之后经过慢慢的尝试,同时摸索终于可以使用了。
在程序编写方面,这个程序和C 语言很类似,所以在编写程序方面可以借鉴的,但是verilong 要自己编写激励来测试。
在写程序和仿真犯了不少错误,程序代码还经常出现语法错误,仿真时时间长度也没设置好以致造成不少错误。
四.附录:源代码调制器源代码module t_ask; reg clk,in; wire out; initial beginin=0; clk=0; endalways #2 clk=~clk; always #50 in=~in;two_ask my(.clk(clk),.in(in),.out(out)); Endmodule测试码module two_ask(clk,in,out); input clk,in; output out;assign out= in & clk; endmodule实验三(2)2-ASK(振幅键控)解调器一. 实验目的及实验环境1)实验目的1.设计实现一个根据输入,将时钟信号进行分频或者计数;2.掌握分频及计数器类型模块的Verilog 描述方法;3.学习设计仿真工具的使用方法;4.学习层次化设计方法; 2) 实验环境Pc 机一台,使用modelsim 软件进行实验仿真 二.实验内容2-ASK(振幅键控)解调器设计 三.测试数据及运行结果四.总结本次实验是进行2-ASK (振幅键控)调制器设计,让我在前几次实验的基础上更加的了解了modelsim 软件的使用方法,以及使用时应注意的问题。
在实验中又一次深入一层的学习到了语法,通过这次实验,我们都能熟练的使用modelsim 进行仿真,只是编写代码的时候会有困难,不过经过练习我们总会掌握的。
五.附录:源代码: module dm2(out,in,rst,clk); output out; input in,rst,clk; reg out; reg [3:0] m; reg [3:0] count; always @ (posedge in or negedge rst)beginif(!rst)beginm<=0;endelsebeginif(count==4'b1001)beginm<=0;endelsebeginm<=m+1;endendendalways @ (posedge clk or negedge rst)beginif(!rst)begincount<=0;m<=0;out<=0;endelseif(count==4'b1001)beginif(m<=4'b101)beginout<=0;end elsebeginout<=1;endcount<=0;m<=0;endelsebegincount<=count+1;endendendmodule测试代码:module t_dm2;reg clk,rst,in_s;wire out;dm2 mt(out,in,rst,clk);assign in=in_s & clk;always #10 clk=~clk;always #200 in_s=~in_s;initialbeginclk=0;in_s=0;rst=1;#2 rst=0;#2 rst=1;endendmodule指导教师评语:实验成绩:指导(辅导)教师 :。