Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

关于实验的一些说明

lab3

关于实现的一些说明

定时器 Timer

参数说明:

  • CLK_FREQ 时钟频率,默认 20MHz

信号说明:

  • clk 时钟信号
  • rst_n 复位信号,低位有效(异步)
  • en 定时使能
  • ready 定时可用信号
  • notify 超时信号

级联 7 个 4 位计数器,理论上最大可以完成 16^7-1 MHz 时钟 1sec 的计时。

前驱计数器的计数信号从非零变为 0 时触发后继计数器,完成计数器位宽的拓展。

在时钟上升沿给使能信号时,ready 置低电平表示正在计时中,同时计数器开始工作。

当定时结束时,在时钟上升沿 ready 置高电平同时 notify 置高电平。

其中使能信号的优先级高于超时信号,若超时时使能有效则直接进入下一轮计时。

进入计时时计数器不会复位,故不复位直接进行连续计时会导致定时功能异常。

串并转换器 SerDes

信号说明:

  • clk 时钟信号
  • rst_n 复位信号,低位有效(异步)
  • ser_in 串行输入
  • en_rd 读有效信号
  • par_out 并行输出

第一个 clk 上升沿开始过程,接下来的 4 拍分别读入 1bit 串行数据,在第 5 拍输出(第 5 拍先读入第 4 个 bit)。

完成一次串并转换后模块暂停,若要继续转换需要复位。

关于 Quartus 编译综合的一些说明

课程使用 Quartus 作为综合工具。由于编译器的一些差异,直接导入源码可能会出现一些错误,见下。

模块名称冲突问题

DFF 是 Quartus 的元器件,重名会导致编译错误,请自行修改(包括模块名、模块尾部 label、文件名)。

算符优先级问题

Quartus 不允许 &~dat 这样的语句(dat 取反后逐位按位与),需要加上括号写作 &(~dat)

引用问题

Quartus 下同一项目下的模块互相可见,直接引用即可,不需要再加 include 语句。

跨模块访问问题

Quartus 不允许访问模块的内部信号,如必须访问,可以从被访问的模块打个 output 出来。