omsp430ik fpga实现

为了验证omsp430ik的FPGA程序运行是否正确,写了一个很简单的流水灯程序,通过P1口驱动。

int main()
{
  int i;
  WDTCTL  = 0x5a80;

  P1DIR = 0xff;
  while(1)
    for(i=0;i<8;i++)
    {
      P1OUT = (1<<i);
      delayms(256);
    }
}

我目前手上的板子是Crazy Bingo的《VIP_Board Mini 》,LED并不直接连到FPGA管教,是通过74HC595芯片转换的。所以还需要写一个并转串的程序。FPGA资料包已经有该模块的驱动程序,不过还是自己写一个吧,自己动手,丰衣足食。

`timescale 1ns/1ns
module led_drv
(
    //74hc595 interface
    output            sdat,
    output            sclk,
    output  reg slatch,

    input    [7:0]    pdata,
    input              clk,
    input              rst_n
);

reg   [3:0] count;
reg   [7:0] pdata_r;
reg         enable;

wire  [2:0] bitcnt = count[3:1];
wire        update  = (pdata_r != pdata);

//  data change detect
always @(posedge clk) pdata_r  <=  pdata;

always @(posedge clk or negedge rst_n)
  if(!rst_n)            enable  <=  1‘b1;
  else if(count==4‘hf)  enable <= 1‘b0;
  else if(update)       enable <= 1‘b1;

always @(posedge clk or negedge rst_n)
  if(!rst_n)        count <= 0;
  else if(!enable)  count <= 0;
  else              count <= count + 1‘b1;

assign  sdat  = pdata[bitcnt];
assign  sclk  = count[0];

always @(posedge clk) slatch  <=  (count==4‘hf);

endmodule

例化

// led drv
led_drv u_led_74595_drv
(
    //74hc595 interface
    .sdat   (sdat),
    .sclk   (sclk),
    .slatch (slatch),

    .pdata  (gpio1_dout),
    .clk    (mclk),
    .rst_n  (~puc)
);

仿真波形:

流水灯控制 P1口波形

74HC595波形:

1:

2:

quaruts综合报告,

文件列表

set_global_assignment -name SEARCH_PATH ../../../src/include
set_global_assignment -name VERILOG_FILE ../../../src/include/openMSP430_defines.v
set_global_assignment -name VERILOG_FILE ../../../src/include/openMSP430_undefines.v
set_global_assignment -name VERILOG_FILE ../../../src/include/timescale.v
set_global_assignment -name VERILOG_FILE ../../../src/led_drv/led_drv.v
set_global_assignment -name VERILOG_FILE ../../../src/omsp430/omsp430.v
set_global_assignment -name VERILOG_FILE ../../../src/omsp430/omsp_alu.v
set_global_assignment -name VERILOG_FILE ../../../src/omsp430/omsp_execution_unit.v
set_global_assignment -name VERILOG_FILE ../../../src/omsp430/omsp_frontend.v
set_global_assignment -name VERILOG_FILE ../../../src/omsp430/omsp_mem_backbone.v
set_global_assignment -name VERILOG_FILE ../../../src/omsp430/omsp_register_file.v
set_global_assignment -name VERILOG_FILE ../../../src/omsp430ikmcu/omsp430ikmcu.v
set_global_assignment -name VERILOG_FILE ../../../src/omsp430ikmcu/omsp430ik_sys.v
set_global_assignment -name VERILOG_FILE ../../../src/periph/gpio.v
set_global_assignment -name VERILOG_FILE ../../../src/periph/template_periph_8b.v
set_global_assignment -name VERILOG_FILE ../../../src/uart/uart.v
set_global_assignment -name VERILOG_FILE ../../../src/uart/uart_rx.v
set_global_assignment -name VERILOG_FILE ../../../src/uart/uart_tx.v
set_global_assignment -name VERILOG_FILE ../mem/alt_rom4kx16.v
set_global_assignment -name VERILOG_FILE ../mem/omsp430_dmem.v
set_global_assignment -name VERILOG_FILE ../mem/omsp430_pmem.

FPGA运行效果1;

2

时间: 2024-10-06 08:38:07

omsp430ik fpga实现的相关文章

实验箱FPGA部分测试报告及A8与FPGA链接测试报告

其实,我一开始还以为实验箱不会有什么问题只是让我们多学习东西才做这个测试的,结果发现还真的有不少问题. 1.实验准备部分 安装驱动时,win10系统无法正确安装usb-blaster Windows 8及以上的系统无法正常安装USB-Blaster驱动,在网上查找后发现了相关的解决办法 按部就班完成工作后,就可以安装USB-Blaster驱动了. 2.各实验情况 实验一:拨码开关程序设计 运行结果:失败. 在程序编译.管脚分配.接线连接都没错的情况下,无法显示结果.准确情况,无论拨哪一个开关,l

ASIC,DSP,MCU,ARM,FPGA 等网上牛人的一些理解

MPU是微机中的中央处理器(CPU)称为微处理器(MPU) MCU又称单片微型计算机(Single Chip Microcomputer)或者单片机,是指随着大规模集成电路的出现及其发展,将计算机的CPU.RAM.ROM.定时计数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制. DSP是一种独特的CPU,是以数字信号来处理大量信息的器件.其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器(MPU),它的强大数据处理能力和高运行速度,是最值得

xilinx和altera的fpga的不同之处!----如果不知道,你将为之付出代价! --转载

本人从2004年接触fpga开始,至今已经8年了.开发过altera的flex系列和cyclone3系列:开发过xilinx的vii和v5系列.下面谈谈本人对二者的一些不同,以便引起开发者对一些细节上的注意,免得为之付出代价,再走弯路!(1)altera的任意一个管脚都可以连接到这样的sig信号上always @ (posedge(sig)) ……:但是xilinx的fpga不能,只有clk信号才能够分配这样的信号.本人最早使用a公司flex系列的fpga,当fpga和dsp的emif连接时,为

FPGA的FIR抽取滤波器设计

摘 要:本文介绍了FIR抽取滤波器的工作原理,重点阐述了用XC2V1000实现FIR抽取滤波器的方法,并给出了仿真波形和设计特点. 关键词:FIR抽取滤波器:流水线操作:FPGA 用FPGA实现抽取滤波器比较复杂,主要是因为在FPGA中缺乏实现乘法运算的有效结构,现在,FPGA中集成了硬件乘法器,使FPGA在数字信号处理方面有了长足的进步.本文介绍了一种采用Xilinx公司的XC2V1000实现FIR抽取滤波器的设计方法. 具体实现 结构设计 基于抽取滤波器的工作原理,本文采用XC2V1000实

FPGA编程技巧系列之输入输出偏移约束

1.   偏移约束的作用 偏移约束(Offset Constraint)用来定义一个外部时钟引脚(Pad)和数据输入输出引脚之间的时序关系,这种时序关系也被称为器件上的Pad-to-Setup或Clock-to-Out路径.这些约束对与外部元器件相连的接口十分重要,在这里,需要解释两个术语: Pad-to-Setup:也被称为OFFSET IN BEFORE约束,是用来保证外部输入时钟和外部输入数据的时序满足FPGA内部触发器的建立时间要求的.如下图TIN_BEFORE约束使得FPGA在进行DA

烦躁而无奈的一次调试-记fpga驱动ad9854

写这篇东西,主要还是要发泄心中之不爽,毕竟debug不出来很影响食欲和心情,也没心情陪妹纸了. 一个月前,师兄便开始带我fpga,先让我驱动个dds作为训练.由于暑假的原因,就停停放放的,在家先把VHDL简单过了一遍,又反复研究了一下AD9854的datasheet.什么寄存器啊,时序啊都了解的差不多了.一个星期前开始着手编. 但是菜鸟不会重头编啊,所以先拿了一个网上的驱动程序,根据板子的实际电路对程序作了修改.感觉不是很难吧,但示波器木有一丁点现象啊,芯片却在发热.然后我就开始一点一点的改啊,

梯形成形算法的FPGA实现

续上~~~梯形成形算法,上贴是原理仿真与软件实现,这一贴是硬件实现. 将系统函数分解为4个子模块: H(z)=H1(z)*H2(z)*H3(z)*H4(z) 式中: H1(z)=(1-qz-1)/(1-z-1); H2(z)=1-z-k; H3(z)=1-z-1; H4(z)=(1/ta)*(z-1)/(1-z-1) 4个子模块的级联存在顺序问题,要避免具有峰值增益的子系统发生溢出或将量化噪声扩大.所以把H1置于第一级; H4为积分单元,为了避免产生溢出,将其置于最后一级; H2.H3置于中间,

基于FPGA的跨时钟域信号处理——亚稳态(V3-FPGA学院)

(V3-FPGA学院教你学习FPGA) 基于FPGA的跨时钟域信号处理--亚稳态 基于FPGA的跨时钟域信号处理--亚稳态 什么是亚稳态? 所有数字器件(例如FPGA)的信号传输都会有一定的时序要求,从而保证每 个寄存器将捕获的输入信号正确输出.为了确保可靠的操作,输入寄存器的信号必须在时钟沿的某段时间(寄存器的建立时间Tsu)之前保持稳定,并且持续到时钟沿之后的某段时间(寄存器的保持时间Th)之后才能改变.而该寄存器的输入反映到输出则需要经过一定的延时(时钟到输出的时间Tco).如果数据信号的

v3学院带您一起学习FPGA

本文为原创,转载请注明! 课程名称:双buffer乒乓操作项目概况:使用FPGA内部ram作为缓冲器,实现对外部数据流的缓存:为了提升数据的传输及处理速度,在此节课中将用到两个ram进行乒乓操作.结构框图: 效果描述:本实验做到了使用低速模块处理高速数据流,可以将缓冲的数据在没有停顿的情况下送入到数据流处理模块进行处理.应用案例:在我们做FPGA开发时,为了能更好的处理一下数据流,会经常进行一些数据的缓存,在此节课中让学员能够建立一些数据缓存的概念:乒乓操作是一种经常使用的数据流处理技巧,可以在