今天用psoc做了dds,现在总结一下。

1dds用到的相位累加器是用verilog写的,本来准备用一下datapath,这是和fpga不一样的一点,用了类似alu的结构,但是看手册后发现,虽然可以执行加法操作,但是1)位数固定,只能1,8,16,32等固定长度的数做加法。2)最重要的一点,加法结果不能输出。所以采用pld模块。添加一个自定义verilog模块的方法如下:

1)在workspace explorer 里有几个标签:soure,components, datasheet,results,在建好工程后需要添加一个自定义模块的时候需要点components标签,在workspace上右键选择 add-》new project 选择other 名字,位置写好之后ok。

2)在新建的project上右键选 new component 选择 symbol wizard 然后点create new之后会出现下面的界面

在空白处添加信号和类型,如果是多位的信号就要写成 signal[m:n]的形式,如data[3:0]就表示是4位宽的信号。

信号添加完成后就会得到一个空壳子,只有输入输出的一个方框,类似下面的图形。

在空白处点击右键选择 properties,出现如下所示界面

这个里边symbol项里的内容需要修改,如api函数前缀,看自己需要可以改可以不改,第二项也就是catalogplacement比较重要,这个是你生成的元件在库里的位置,看需要放到哪里,个人习惯不同。

改好之后就ok,之后还是在空白处右键,不过这次是选 generate verilog,别激动,这只生成一个verilog 框架,你需要什么功能就自己写verilog 实现,然后保存。

3)依赖关系设置,这一步是将verilog模块设置成工程的依赖工程。在目标工程上右键点击dependencies 然后在刚才生成的库工程上打勾,这样就会把两个工程关联,并且存在依赖关系,这时候返回source标签打开原理图,之后在右边出现的库里边会多出来你自定义的组件,就可以拖到原理图里使用了,但是如果不设置依赖关系的话,可是找不到你自定义的组件的。

2,在psoc里边数字模块好多都没有api函数,那么如果我要想用软件调用怎么办呢?比如数字复用器,就不能生成api函数,那么我想通过软件操作来改变选择的通道就不行,但是可以在通道选择线上接控制寄存器,这样就可以通过控制寄存器的api函数改变控制寄存器的值进而改变选择的通道。同理,如果cpu想知道一个数字模块的输出,那么就在输出上加状态寄存器,通过读取状态寄存器就可以了。

3,psoc里边的连线很有意思,一个数据bus,怎么才能分成一根一根的信号线呢?方法是:先连线,连线完了之后再设置线的属性,如下图

可以选择bus型,那么就需要设置位宽了,也可以设置成bit型,指的就是bus里边的第几位。

4,psoc里的查找表一个最多5输入8输出,那么也就是说能够存32个8bit的数据,如果想要更多,可以把几个lut并联起来。

5,我用的是psoc4,里边只有idac,没有vdac,所以不能做数字转模拟的波形,有点遗憾。

6,使用的是psoc4的一个stick开发板,信号是CY8CKIT-049-42XX片子是CY8C4245,这个开发板下载程序是用的bootloader,自己建的每一个程序需要设置类型为bootloadable,在原理图上需要加上bootloadable模块,在bootloadable的dependence选项中选择bootloader的源文件。下载的时候在菜单栏选tool-》bootloader host。需要注意的是开发板驱动在win7下可以自动安装,在下载程序时需要按着板子尾部的按键将板子插入u口里,否则无法下载程序。

psoc做dds的更多相关文章

  1. ROM存储1/4周期正弦信号构造DDS

    上周的时候,老师让编写一个简单的dds程序,本文说明了整个过程中我遇到问题以及一些个人的思考.初次接触FPGA,如有问题请多多指教~ 1.几个疑问,解决和没有解决的. 为何采用ROM而不是直接采用DD ...

  2. 使用MATLAB一键制作mif文件

    本文档主要讲解实现一个16384(2^14)点的14位正弦波数据mif格式文件的生成,使用此文件,我们便可以在FPGA上基于直接数字合成(DDS)原理生成标准的正弦波,即实现信号发生器的功能.关于DD ...

  3. 国产CPLD(AGM1280)试用记录——做个SPI接口的任意波形DDS [原创www.cnblogs.com/helesheng]

    我之前用过的CPLD有Altera公司的MAX和MAX-II系列,主要有两个优点:1.程序存储在片上Flash,上电即行,保密性高.2.CPLD器件规模小,成本和功耗低,时序不收敛情况也不容易出现.缺 ...

  4. 基于DDS的任意波形发生器

    实验原理 DDS的原理 DDS(Direct Digital Frequency Synthesizer)直接数字频率合成器,也可叫DDFS. DDS是从相位的概念直接合成所需波形的一种频率合成技术. ...

  5. 用verilog模拟DDS产生正弦波信号

    前言: DDS:直接数字频率合成,正弦波0-2pi周期内,相位到幅度是一一对应的(这里我们使用放大后的整数幅度). 主要思路: 个人理解,FPGA不擅长直接做数字信号计算,那样太占用片上逻辑资源,所以 ...

  6. PSoC电容式触摸感应技术

    PSoC是由Cypress半导体公司推出的具有数字和模拟混合处理能力的可编程片上系统芯片,某些系列的PSoC(如CY8C21X34系列),由于其内部配备的特殊资源,使得它可以很容易地实现电容式触摸感应 ...

  7. 基于Vivado调用ROM IP core设计DDS

     DDS直接数字式频率合成器(Direct Digital Synthesizer) 下面是使用MATLAB生成正弦波.三角波.方波的代码,直接使用即可. t=:*pi/^:*pi y=0.5*sin ...

  8. 数字信号处理专题(1)——DDS函数发生器环路Demo

    一.前言 会FPGA硬件描述语言.设计思想和接口协议,掌握些基本的算法是非常重要的,因此开设本专题探讨些基于AD DA数字信号处理系统的一些简单算法,在数字通信 信号分析与检测等领域都会或多或少有应用 ...

  9. DDS生成正弦波

    DDS生成正弦波 `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////// ...

随机推荐

  1. 【Python】学习笔记之列表生成式

    列表生成式 主要用于生成较为复杂的列表 常用用法 >>> [x * x for x in range(5) if x % 3 !=1 ] [0, 4, 9] #返回除以3余数不为1的 ...

  2. SpringSecurity——基于Spring、SpringMVC和MyBatis自定义SpringSecurity权限认证规则

    本文转自:https://www.cnblogs.com/weilu2/p/springsecurity_custom_decision_metadata.html 本文在SpringMVC和MyBa ...

  3. 【转】VIM 中设置Tab

    灵活操作 Vim 中的 Tabsgaleki post @ 2007年11月16日 05:07PM in Vim Tips with tags: vim tabs Vim 支持 Tabs,也就是标签页 ...

  4. iOS 和Android客户端测试区别整理ing

    区别很多,慢慢发现整理,注重细节,避免遗漏 消息推送区别: 1.推送渠道: 1.1 iOS走iOS自带的渠道进行系统内推送,应用内和应用外推送无明显差别,均可以收到push信息. 1.2 安卓由于谷歌 ...

  5. 玲珑oj 1028 贪心

    http://www.ifrog.cc/acm/problem/1028 很有趣的一道题,求从n个数里挑出不同的两个,使得他俩'|','&','^'后的值尽量大,求这个最大的结果. 求最大的异 ...

  6. IOS-简单动画

    iOS那些简单的动画(不定期更新) 字数669 阅读1118 评论16 喜欢59 关于 Core Animation Core Animation是一组非常强大的动画处理API,使用它能做出很多优雅的 ...

  7. Ubuntu 无法获得锁

    使用ubuntu安装pip 时,出现以下错误: E: 无法获得锁 /var/cache/apt/archives/lock – open (11 资源临时不可用) E: 无法锁定下载目录 解决方法: ...

  8. Python中的map和reduce函数简介

    ①从参数方面来讲: map()函数: map()包含两个参数,第一个是参数是一个函数,第二个是序列(列表或元组).其中,函数(即map的第一个参数位置的函数)可以接收一个或多个参数. reduce() ...

  9. TCP/IP网路协议复习

    1.OSI (Open System Interconnect Protocol) 开放互联协议,这是一个七层的计算机网络协议,包括:物理层.数据链路层.网络层.传输层.回话层.表示层.应用层.    ...

  10. 判断Integer值相等最好不用==最好使用equals

    Integer c = 3;Integer d = 3;Integer e = 321;Integer f = 321;System.out.println(c == d);System.out.pr ...