-
. z.
2021-2021 -2-G02A3050-1电子电路设计训练〔数字EDA局部〕
实验报告
〔 2021 年5月20日〕
教学班
**
组长
签名
成56;
b={$random}%256; //a和b从0~255共256个数中随机产生,即可生成8位字节数据
仿真实验关键结果及其解释
〔1〕两位数据比拟器
图 1两位数据比拟器波形图
如图1所示,a和b一样时equal输出为高电平,否则输出低电平。
〔2〕字节数据比拟器
图 2 字节数据比拟器波形图
如图2所示,a>b时,res输出高电平,否则res输出低电平。
-
. z.
实验任务2——简单时序逻辑
实验要求
设计一个分频器,将时钟波形二分频。
模块的核心逻辑设计
always(posedge clk_in)//always语句后表示时序控制,每次clk_in时钟上升沿时刻进展动作
begin
if(! reset) clk_out=0; //reset信号为低电平时,输出清零
else clk_out=~clk_out;//reset为高电平时,输出时钟clk_out在输入时钟clk_in的上升沿时刻翻转
end
测试程序的核心逻辑设计
always *`clk_cycle clk=~clk; //产生输入时钟
initial
begin
clk=0;
reset=1;
*10 reset=0; //reset给低电平,输出清零
*110 reset=1; //reset复位
-
. z.
*100000 $stop; //系统任务,暂停仿真以便观察波形
end
仿真实验关键结果及其解释
图 3 二分频器的波形图
如图3所示,输入时钟clk被二分频输出。
实验小结
通过实验一,我掌握了如下容:
1〕assign连续赋值语句的使用。
2〕always, initial块的使用。
3〕reg, wire等数据类型的适用围
4〕调用被测试模块的方法
实验二、条件语句和always过程块
实验任务1——利用条件语句实现计数分频时序电路
实验要求
〔1〕设计20分频计数器,将10MHz的时钟分频为500kHz的时钟。
〔2〕利用10MHz的时钟,设计一个给定单周期形状的周期波形。
-
. z.
模块的核心逻辑设计
〔1〕20分频计数器
begin
if(j==9) //对计数器进展判断,计十个数翻转一次,则一个周期计20个数,即实现20分频
begin
j<=0; //输出时钟翻转的同时计数器置零
F500K<=~F500K;
end
else
j<=j+1; //假设还没计到十个数,继续计数
end
〔2〕给定单周期形状的波形
begin
if(j<=20)
begin
FDIV<=0;
j<=j+1; //前20个输入时钟周期,计数器计数,但输出不跳变
end
else if((j>20)&&(j<=30))
begin
FDIV<=1;
-
. z.
j<=j+1; //中间10个时钟周期输出跳变成高电平,保持计数
end
else if((j>30)&&(j<=50))
begin
FDIV<=0;
j<=j+1; //后20个时钟周期输出跳变成低电平,保持计数
end
else
j<=0; //计数器清零
end
测试程序的核心逻辑设计
〔1〕20分频计数器
always *`clk_cycle F10M_clk=~F10M_clk; //产生输入的10MHz时钟
initial
begin
RESET=1;
F10M_clk=0;
*100 RESET=0; //reset给低电平,输出清零
*100 RESET=1; //reset复位
*10000 $st
verilog实验报告 来自淘豆网m.daumloan.com转载请标明出处.