Verilog HDL数字系统设计报告 9

更新时间:2023-05-21 06:57:01 阅读量: 实用文档 文档下载

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

这是上海大学verilog课程上的1个实验题目的报告

Verilog HDL数字系统设计报告 9

姓名 林勇 学号 11122240

时间 2013.10.02 地点 II教102 实验室

实验题目 利用状态机实现比较复杂的接口设计

一. 实验目的与要求

(1)学习运用由状态机控制的逻辑开关,设计出一个比较复杂的接口逻辑;

(2)在复杂设计中使用任务(task)结构,以提高程序的可读性;

(3)加深对可综合风格模块的认识。

二. 实验环境

CPU型号:Intel(R) Core(TM)i3 CPU 内存容量:2.00GB

操作系统类型:32位Win7操作系统 仿真软件:ModelSim SE 6.2b

三. 实验内容

该例是一个并行数据转换为串行位流的变换,利用双向总线输出。通过基本时钟的运行,使得并行数据一位一位的输出。

四. 系统框图

五. 实验波形图

六、体会

这是上海大学verilog课程上的1个实验题目的报告

在这个实验中,由于代码是复制粘贴的,不知道为什么刚开始编译的时候总有一行会出现错误,但是回去仔细分析代码的时候却怎么也找不出错在哪里,后来解决的办法是在那行之前的代码通过自己手动输入进去,后来就做好了。针对这个错误的分析我认为是在复制粘贴的时候出现了乱码。这个实验是第一次接触到状态机和task结构,对我来说读懂这个代码有一定的难度,直到现在我还是不能完全理解这整个代码的过程。

七、代码

// ------------- 测试模块源代码:----------------

`timescale 1ns/100ps

`define clk_cycle 50

module writingTop;

reg reset,clk;

reg[7:0] data,address;

wire ack,sda;

always #`clk_cycle clk = ~clk;

initial

begin

clk=0;

reset=1;

data=0;

address=0;

#(2*`clk_cycle) reset=0;

#(2*`clk_cycle) reset=1;

#(100*`clk_cycle) $stop;

end

always @(posedge ack) //接收到应答信号后,给出下一个处理对象。

begin

data=data+1;

address=address+1;

end

writing writing(.reset(reset),.clk(clk),.data(data),

.address(address),.ack(ack),.sda(sda));

endmodule

这是上海大学verilog课程上的1个实验题目的报告

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

Top