begin a = 8'b00000100; b = 8'b00000010; #200 a = 8'b00001111; b = 8'b11110000; #200 a = 8'b01010101; b = 8'b01010101; #200 $stop; end compare m (.out (out), .a(a), .b(b));
endmodule
实验仿真:
5
练习二简单分频时序逻辑电路的设计
实验目的:
(1)掌握最基本时序电路的实现方法 (2)学习时序电路测试模块的编写 (3)学习综合和不同层次的仿真
实验原理:
对于组合逻辑电路,可综合成具体电路结构的时序逻辑电路也有准确的表达方式。在可综合的模型中,通常用always块或者@(posedgeclk)或(negedgeclk)结构表达时序逻辑。实验为二分之一分频器模型。
在always块中,被赋值信号都必须定义为reg型,对于reg型数据,如果未对它进行赋值,仿真工具会认为它是不定态的。为了正确观察结果,在可综合模块中,常定义一个复位信号reset,其为低电平时对寄存器进行复位。
实验内容:
依然作clk_in的2分频clk_out,要求输出时钟的相位与上面的的1/2分频器的输出正好相反。
实验代码:
module half_clk (reset,clk_in,clk_out); input reset; input clk_in; output clk_out; reg clk_out; always @ (posedge clk_in) if (!reset) clk_out<=1'b1; else clk_out<=~clk_out; endmodule
`timescale 1ns/100ps `define clk_cycle 50
module two;
6
reg clk,reset; wire clk_out;
always #`clk_cycle clk=~clk;
initial begin
clk=0; reset=1; #10 reset=0; #110 reset=1; #100000 $stop; end
half_clk m0(.reset(reset),.clk_in(clk),.clk_out(clk_out));
endmodule
实验仿真:
7
练习三利用条件语句实现计数分频时序电路
实验目的:
(1)掌握条件语句在简单时序模块设计中的使用 (2)学习在Verilog模块中应用计数器
(3)学习测试模块的编写、综合和不同层次的仿真
实验原理:
在可综合的Verilog HDL模型中,常用的条件语句有if ?else和case?endcase两种结构,用法和C语言相似。
1. if语句
(1) if(表达式)语句 (2) if(表达式)语句1 else语句2
(3) if(表达式1)语句1;
else if(表达式2)语句2; else if(表达式3)语句3; …… 2. case语句
(1)case(表达式)
实验内容:
利用10M的时钟,设计一个单周期形状的周期波形。
实验代码:
module fdivision(clk_out,F10M,reset); output clk_out; input reset; input F10M; reg clk_out;
8