原创 Verilog学习笔记5- 综合练习-基于SF-EP1V2的SMG接口设计-1位SMG控制器

2010-5-17 17:05 1660 6 7 分类: FPGA/CPLD

1SMG控制器:


<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

这一章是续第一章实验和第二章实验,我们建立一个名为“SMG Controlelr”的TOP模块,用于连接“SPI 控制器” 和 “SPI发送模块”。



示意图如下:


 


点击看大图


 


 


注意点:


为什么我命名为“1SMG控制器”呢?其实我的设计构思时这样的-这个“1SMG控制器”要完成的工作仅是“点亮一个数码管在某一个位”而已。


 


除此之外,这个“1SMG控制器”,是没必要输入“数码管码和位选码”。“数码管码和位选码”因为早已经固定在Verilog代码中(SPI控制模块里)。如果你问我为什么要那么做?这纯粹是“故意”,为了就是仿真和测试SPI发送模块和SPI控制器。



 


文件导航操作:


 

点击看大图


 





Verilog 代码:



1.module smg_controller


2.(


3. CLK, RST,


4. STCP, SDO, SCL,


5. //DO, SEND_SIG, DONE_SIG


6.);


7.


8.    input CLK, RST;


9.    output STCP, SDO, SCL;


10.    //output [7:0]DO;


11.    //output SEND_SIG, DONE_SIG;


12.


13.    /*************************************/


14.


15.   wire Send_Sig;


16.    wire Done_Sig;


17.   wire [7:0]DI;


18.


19.  spi_module u1


20.  (


21.     .CLK( CLK ),


22.     .RST( RST ),


23.     .Send_Sig( Send_Sig ),


24.     .Done_Sig( Done_Sig ),


25.     .DI( DI ),


26.     .SCL( SCL ),


27.     .SDO( SDO ) 


28. );


29.


30. spi_controller u2


31. (


32.     .CLK( CLK ),


33.     .RST( RST ),


34.     .Send_Sig( Send_Sig ),


35.     .Done_Sig( Done_Sig ),


36.     .DI( DI ),


37.     .STCP( STCP ) 


38. );


39.


40./*************************************/


41.


42.endmodule



 


1. 这个Verilog代码比较简单,就是建立了TOP模块,用来连接SPI控制模块和SPI发送模


   块。


 


2. 至于第5行,底10~11行被我注释掉了。为什么这些东西我还留着呢?其实有这样一个故


   事的...


 


老实说,这一章实验是消耗我最长时间的了。我大约用了将近一整天的时间在测试,第一章和第二章的实验已经都被我修改了好几回,但是结果还是不尽人意。后来我在这个TOP模块将DISend_Sig 和 Done_Sig引出来,然后放到Modelsim里观察,最终才找到问题点。



Testbench 代码:



1.`timescale 1 ns/ 1 ns


2.module smg_controller_vlg_tst();


3.


4. reg CLK;


5. reg RST;


6.   


7. wire SCL;


8. wire SDO;


9. wire STCP;


10. //wire SEND_SIG;


11. //wire DONE_SIG;


12. //wire [7:0]DO;


13.                 


14. smg_controller i1 


15. (


16.     .CLK(CLK),


17.     .RST(RST),


18.     .SCL(SCL),


19.     .SDO(SDO),


20.     .STCP(STCP),


21.     //.DONE_SIG( DONE_SIG ),


22.     //.SEND_SIG( SEND_SIG ),


23.     //.DO( DO )


24. );


25.


26. initial


27. begin CLK = 0; forever #20 CLK = ~CLK; end


28.


29. initial 


30. begin RST = 0; #100; RST = 1; end


31.


32.endmodule



 


仿真载图:


点击看大图


 

从载图上,可以很清楚的看见“1SMG控制器”先发送一字节“数码管吗”“0x66”,然后再发送一字节“位选码”“0xf7”。最后,产生一个锁存信号。



阿对不起,这一章没有问题和答案 m( _ _ )m 


 


总结:


⊙ ⊙ )啊!终于完成了。如果仿真结果和上面的载图差不多,那么你就成功了。不妨下载到SF-EP1V2试试看吧。


 


源码(太大了)


http://i.imagehost.org/download/0494/03-SMG_Controller

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1724981 2013-11-26 21:52

用户1373959 2010-5-18 21:30

fine
相关推荐阅读
用户1609127 2011-10-22 18:26
Verilog的私私细语 - 时钟化和信号的长度
目录 第2章 时钟化和信号的长度 2.01 一个时钟一块数据的概念 2.02 信号时钟化 2.03 深入了解模块的沟通 2.04 电平检测模块的整合(即时事件在时序上的不和谐)      实验八:电...
用户1609127 2011-09-08 12:47
瞎搞Time Quest 和无责任的笔记 第二章
最近整合篇的第二章的构思和灵感都累积不少了,应该是时候开工了。恰好手头上还有一本笔记还没有写完,就是这本瞎搞TimeQuest的第二章。目录笔者也懒得贴了,看过第一章的同学多少也会猜到第二章的内容是什...
用户1609127 2011-08-29 18:21
瞎搞Time Quest 和无责任的笔记 第一章
哎呀 ... 潜水了都有一段时间了,这是最近研究的成果和目标。 话说TimeQuest这个东西真的很搞怪呀,做得笔者不得不从其他的方向去研究它。 好了还是切入正题,TimeQuest用作静态时序的工具...
用户1609127 2011-07-06 17:43
Verilog的私私细语 - 整合的概念
目录         02  第1章  整合的概念          1.01  源码上的整合                   实验一:字面上的整合          1.02  时钟和步骤的定...
用户1609127 2011-06-22 10:18
VerilogHDL那些事儿 - 建模篇v4 + 时序篇v1
VerilogHDL那些事儿 - 建模篇v4 ====== v4 ====== 主要是修改了大量用法上的BUG和极限的精简内容 https://docs.google.com/leaf?id=0B...
用户1609127 2011-06-10 13:19
Verilog HDL的礼物 - Verilog HDL扫盲文
目录 02第0章 Verilog HDL语言扫盲文 030.01 各种的HDL语言 030.02 HDL语言的层次 03 0.03 RTL级和组合逻辑级 040.04 Verilog HDL语言真的那...
EE直播间
更多
我要评论
1
6
关闭 站长推荐上一条 /3 下一条