查看: 3473|回复: 4

【CY8CKIT-003手记】原来你是粽子啊?

[复制链接]
  • TA的每日心情
    郁闷
    2024-10-28 10:11
  • 签到天数: 1703 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2012-11-12 16:52:47 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 nemon 于 2012-11-12 18:09 编辑

    话说有一天,米饭和包子打群殴。米饭人多把饺子,包子痛扁。粽子被逼到墙角,一着急撕开衣服大喊:“我是卧底!!”
    自此之后,我意识到,虽然战争年代已经过去,但是间谍仍然充斥在这个世界上,比如食堂的包子是馒头派来的卧底,诸如此类……
    因此,怀着一颗揪出匪谍的雄心,睁开迷茫而惺忪的睡眼,审视着趴在桌子上打呼噜的psoc板板:"说,你是不是卧底…?”于是一个隐藏在它心底的秘密逐渐呈现在我的面前……
    原来,板板的麻麻和粑粑知道江湖险恶,竞争激烈,因此在板板出世的时候,就给他多配备了一套本领,这样在被逼到墙角的时候,也能靠许褚的武将技“裸衣”生存下来。

    根据江湖上流传甚广的《8051片上可编程系统原理及应用》记载
    通用数字块UDB是PSoC3所提供的一个重要功能单元,可以使用Verilog硬件描述语言,定制IP控制器设备

    那岂不是可以拿板板来小试Verilog?看来这个板子潜力很大啊。小六,师傅看好你呦……
    先按书上的做一个递增计数器吧,为了省事,我把复位按键的部分省掉了。
    首先看一下我们将要定义的是个什么东西:(以下的解释是楼主燃灯苦读Verilog几近20分钟的收获,倘有胡言乱语,欢迎拍砖指教。)
    1. module counter4b (//自定义元件的名字
    2.         count,//变量 count,用作输出
    3.         clock,//变量 clock,时钟
    4.         reset//变量 reset,复位信号
    5. );
    6.         output [3:0] count;//count 有4位,用于输出
    7.         input   clock;//时钟信号是输入
    8.         input   reset;//复位信号也是输入
    9.         parameter N = 1;//内部参数N,规定了每个始终计数器递增的量N
    10.         reg [3:0] count;//count 是占寄存器的
    11.         always @(posedge clock or posedge reset)//always表示总运行,相当于for(;;);这里响应时钟信号或复位信号
    12.         begin
    13.                 if(reset) count<=4'b0;//如果复位,则给count赋值为0b0000,Verilog里面的数字表示方法是<位数>'<基数>数字
    14.                 else count<=count+N;//如果不是复位,那自然是时钟了,这时给count加上N
    15.         end
    16. endmodule
    复制代码
    以上的代码中,只有10~15行是需要手工输入的,其他均是由配置和定义产生,很符合psoc重配置少代码的特色。
    下面我们就来看看这是怎么配出来的。
    首先,在PSoC Creator建立一个新的Project取个英文的名字,一般显示出的都是source标签:
    01.png
    切换标签栏到Components:
    02.png
    在Project上并点击鼠标右键,出现下图的菜单,选择Add Component Item选项:
    03.png
    选择“Symbol Wizard”选项,并在Component Name域中输入:counter4b。并点击“Create New”按钮。
    04.png
    在下图的界面分别输入reset,clock,和count [3:0]名字及其相关参数,点击“OK”按钮:
    05.png
    然后就到了这个界面,点击鼠标右键,在菜单中,选择Symbol Parameters…
    06.png

    输入N参数,类型为int,Value为1。修改Hardware设置为:True;修改Validators设置
    07.png
    输入条件,使用此元件时若N超过该范围会报错。点击“Ok”按钮。回到前面图界面,并点击“OK”按钮
    08.png
    还是在这个界面点击鼠标右键,菜单里选择“Generate Verilog”,打开counter4b.v文件。
    09.png
    然后把代码按前面说的输入就可以了,注释说明不必输,注意保存。
    10.png
    元件定义好,就可以调用了。
    首先,回到Source标签,并点击“TopDesign.cysch”选项,打开原理图编辑窗口。
    11.png
    注意到右边的Component Catalog了吗?选择“Default”标签。如右图展开选项,选择Counter4b,在该界面的下部出现Counter4b的符号,用鼠标将其拖入原理图编辑界面。
    12.png

    会发现,甚至可以像creator预定义的元件那样,通过双击来调出配置窗口,不过因为是自定义的没手册,所以不能靠点击datasheet来看手册了。
    因为我们之前只定义了一个parameter N,所以窗口中就有N的选项了,如果把N的值填成非法的,还会按之前的设置进行检查和提示哦!
    13.png

    增加一个“Digital Output Pin”元件,打开配置界面,AccessMode改为“PortAccessMode_HW”,width改为“4”,pins标签下pin_mode都改为“CMOS_Out”,并给oe连个逻辑1;
    增加一个“Digital Not”元件,打开配置界面TerminalWidth改为“4”。
    把count[3:0]和“Not”以及“Output Pin”连接起来:
    楼主偷一下懒,不用reset按键了,直接给个逻辑0;
    配置一个2Hz的时钟(注意别太高了,不然看不出效果),然后把时钟连到clock上;
    14.png
    上电看效果:

    0-15.rar (1.22 MB, 下载次数: 195)
    回复

    使用道具 举报

  • TA的每日心情

    2015-2-14 09:02
  • 签到天数: 656 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2012-11-12 18:40:40 | 显示全部楼层
    楼主写的不错,赞一个
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2016-12-20 15:08
  • 签到天数: 510 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2012-11-12 18:50:34 | 显示全部楼层
    写得不错嘛,顶一个
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-8-29 20:40
  • 签到天数: 1341 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2012-11-12 23:37:21 | 显示全部楼层
    不错不错 mark下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2012-11-13 16:46:33 | 显示全部楼层
    顶一个,不错哦
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-22 15:04 , Processed in 0.148333 second(s), 23 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.